MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    MPS
    MPS
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/04/2012

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  MPS 13/9/2012, 05:31

    Caros colegas, o N_saida1 não pode ser repetido pelo digitador a não ser que o CodReceita2 não exista na tabela.
    O que está errado, pois mesmo não existindo a receita ele diz que já existe?
    Agradeço desde já!
    MPS

    Private Sub N_Saida1_BeforeUpdate(Cancel As Integer)
    Dim db As DAO.Database
    Dim db2 As DAO.Database
    Dim rs As DAO.Recordset
    Dim parametro As String
    Dim intretval As Integer
    Dim parametro2 As String
    Dim rs2 As DAO.Recordset2



    parametro = Me.N_Saida1
    parametro2 = Me.CodReceita2


    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT * FROM movimentacao WHERE n_saida1=" & parametro)


    If rs.RecordCount > 0 Then

    Set db2 = CurrentDb()
    Set rs2 = db.OpenRecordset("SELECT * FROM movimentacao WHERE CodReceita2 = " & parametro2)
    If rs2.RecordCount > 0 Then
    intretval = MsgBox("Este código já existe!", vbOKCancel + vbQuestion + vbDefaultButton2, "Atenção")
    Select Case intretval
    Case vbCancel
    SendKeys "{esc}"
    Cancel = True
    Case vbOK
    Cancel = True
    End Select

    'End If
    End If
    rs.Close
    db.Close
    End If
    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  Alexandre Neves 13/9/2012, 09:56

    Bom dia, MPS
    Pela descrição, parece-me que basta utilizar o seguinte código
    Private Sub N_Saida1_BeforeUpdate(Cancel As Integer)
    Dim rs As DAO.Recordset

    Set rs = currentdb.OpenRecordset("SELECT * FROM movimentacao WHERE CodReceita2 = " & Me.CodReceita2)
    If rs2.RecordCount > 0 Then
    if MsgBox("Este código já existe!" & vbcr & "Mesmo assim, quer continuar?", vbyesno + vbQuestion + vbDefaultButton2, "Atenção")=vbno then
    docmd.cancelevent
    End if
    rs.Close
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    MPS
    MPS
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/04/2012

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  MPS 13/9/2012, 13:52

    Agradeço Alexandre, contudo não resolveu, pois este critério CodReceita2 só deve ser analisado se o N_saida1 já existir.
    Ou seja, primeiro tenho que analisar N_saida1 para depois analisar CodReceita2.
    Como você faria, por favor?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  Alexandre Neves 13/9/2012, 13:58

    tente
    Private Sub N_Saida1_BeforeUpdate(Cancel As Integer)
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM movimentacao WHERE n_saida1=" & N_Saida1 & " and CodReceita2 = " & Me.CodReceita2)
    If rs.RecordCount > 0 Then
    if MsgBox("Este código já existe!" & vbcr & "Mesmo assim, quer continuar?", vbyesno + vbQuestion + vbDefaultButton2, "Atenção")=vbno then
    docmd.cancelevent
    End if
    End If
    rs.Close
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    MPS
    MPS
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/04/2012

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  MPS 13/9/2012, 14:54

    Alexandre, seu VBA foi perfeito, entretanto o N_saída1 do ano passado está entrando no SELECT. E só deve comparar com os inputs do mesmo ano.
    Pensei em fazer assim:
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM movimentacao WHERE n_saida1=" & N_Saida1 & " and CodReceita2 = " & Me.CodReceita2 & " and year(data) = " & Year(Me.Data))
    Mas não funcionou.
    O que você me sugere, por favor!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  Alexandre Neves 13/9/2012, 15:06

    Utilize
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM movimentacao WHERE n_saida1=" & N_Saida1 & " and CodReceita2 = " & Me.CodReceita2 & " and year(CampoDataNaTabela)=Year(Date()")


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    MPS
    MPS
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/04/2012

    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  MPS 13/9/2012, 16:23

    Alexandre, resolvido! Parabéns!
    Obrigado!

    Conteúdo patrocinado


    [Resolvido]Não permitir input já existente a menos que Receita seja diferente... Empty Re: [Resolvido]Não permitir input já existente a menos que Receita seja diferente...

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 02:07