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

3 participantes

    [Resolvido]Verificar Lançamento Duplicado

    avatar
    RegisBorda
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 07/02/2014

    [Resolvido]Verificar Lançamento Duplicado Empty [Resolvido]Verificar Lançamento Duplicado

    Mensagem  RegisBorda 27/1/2022, 00:14

    Prezados,

    Boa noite tudo bem?

    Preciso verificar quando o Subgrupo for igual a DIZIMOS o Dizimista e o valor dentro do mês de lançamento não poderá ser lançado 2 vezes.

    O Sistema irá dar mensagem de "Registro Duplicado" e irá perguntar se confirma o lançamento.

    Exemplo :

    01/03/2022 - DIZIMOS - Antônio Carlos - 25,63
    02/03/2021 - DIZIMOS - Antônio Carlos - 25,63 (Mensagem Registro Duplicado, Confirma ?)

    Porém, quando o valor lançado é inteiro, funciona (Ex: 25,00) se for (Ex: 25,63) com centavos dá o seguinte ERRO :

    "Erro em tempo de Execução "3077" Erro de Sintaxe (Vírgula) na Expressão"

    Alguém poderia me dar uma luz ou apresentar outra forma de identificar quando o registro for duplicado ?

    Segue o código :

    Private Sub CxEntrada_AfterUpdate()
    Dim rstConta As DAO.Recordset
    Dim strConta As String
    Dim rstValDizimo As DAO.Recordset
    Dim strValDizimo As String
    Dim intResp As Integer

    If Me.SubGrupo = "Dizimos" Then
    Set rstConta = CurrentDb.OpenRecordset("tbl_Caixa")
    strConta = "[CCCodi]='" & Me.CCCodi & "'" & " And [CxMesRef] =#" & Me!CxMesRef & "#"
    rstConta.FindFirst strConta

    Set rstValDizimo = CurrentDb.OpenRecordset("tbl_Caixa")
    strValDizimo = "[CxEntrada]=" & Me.CxEntrada & " And [CxMesRef] =#" & Me!CxMesRef & "#" & " And [CCCodi] ='" & Me!CCCodi & "'"
    rstValDizimo.FindFirst strValDizimo ======> aqui apresenta ERRO quando o valor contém "Centavos"

    If rstConta.NoMatch = True And rstValDizimo.NoMatch = True Then
    MsgBox "O Lançamento já foi Realizado para este Dizimista", vbCritical, "Atenção !!!"
    intResp = MsgBox("Confirma o Lançamento ?", vbYesNo, "Atenção !!!")
    Select Case intResp
    Case vbYes
    CxSaida.SetFocus
    Case vbNo
    DoCmd.SetWarnings False
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    DoCmd.GoToRecord , , acFirst
    DoCmd.SetWarnings True
    End Select
    End If
    End If
    End Sub

    Muitíssimo grato,

    Grande Abraço a todos,

    Regis Borda
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3598
    Registrado : 22/11/2016

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  DamascenoJr. 27/1/2022, 02:43

    Na linha anterior tente trocando Me.CxEntrada, por

    Código:
    Replace(Replace(Me.CxEntrada, ".", ""), ",", ".")


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    RegisBorda
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 07/02/2014

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  RegisBorda 27/1/2022, 14:48

    Prezado Damasceno Jr.

    Troquei a linha e agora qualquer lançamento de DIZIMO com valor com centavos dá mensagem que lançamento está duplicado mesmo que só tenha 1 registro.

    Quando o valor é inteiro mesmo que tenha 2 registros iguais ele passa. Não dá mensagem de Registro Duplicado.

    Grato,

    Abs,

    Regis Borda
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  Alexandre Neves 27/1/2022, 15:57

    Boa tarde
    Será que tem o campo CxEntrada como número ou como texto?
    Se fôr como texto, tem de envolver a expressão com pelicas


    .................................................................................
    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
    avatar
    RegisBorda
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 07/02/2014

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  RegisBorda 27/1/2022, 16:07

    Prezado Alexandre,

    O campo CxEntrada é número.

    Não sei o que acontece só funciona com valor inteiro.

    Com valor quebrado dá ERRO.

    Tá complicado acertar isso

    Abs

    Regis Borda
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  Alexandre Neves 27/1/2022, 16:18

    Se é número deve alterar para aceitar 2 decimais tipo moeda, caso contrário não aceitará 25,63


    .................................................................................
    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
    avatar
    RegisBorda
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 07/02/2014

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  RegisBorda 28/1/2022, 01:08

    Prezados,

    Tentei esse código, porém não está funcionando.

    Private Sub CxEntrada_BeforeUpdate(Cancel As Integer)
    Dim intResp As Integer
    Dim Contador As Integer

    If Me.SubGrupo = "Dizimos" Then
    Contador = DCount("[CCCodi] + [CxEntrada]", "tbl_Caixa", "[CxMesRef]=#" & Me.CxMesRef & "#" & " And [CCCodi]='" & Me.CCCodi & "'" & " And [CxEntrada]=" & Me.CxEntrada)
    If Contador > 0 Then
    MsgBox "O Lançamento já foi Realizado para este Dizimista", vbCritical, "Atenção !!!"
    intResp = MsgBox("Confirma o Lançamento ?", vbYesNo, "Atenção !!!")
    Select Case intResp
    Case vbYes
    CxSaida.SetFocus
    Case vbNo
    DoCmd.SetWarnings False
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    DoCmd.GoToRecord , , acFirst
    DoCmd.SetWarnings True
    End Select
    End If
    End If

    End Sub

    A função DCount não está funcionando não sei porque.

    Alguém pode me dar um Help ? ou sugerir outra opção ?

    Muito Grato,

    Abs,

    Regis
    avatar
    RegisBorda
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 07/02/2014

    [Resolvido]Verificar Lançamento Duplicado Empty Re: [Resolvido]Verificar Lançamento Duplicado

    Mensagem  RegisBorda 28/1/2022, 11:18

    Prezados,

    O Código final ficou assim :

    Private Sub CxEntrada_LostFocus()
    Dim intResp As Integer
    Dim Contador As Integer
    Dim Contador2 As Integer

    If Me.SubGrupo = "Dizimos" Then
    Contador = DCount("CCCodi", "tbl_Caixa", "CxMesRef=#" & Format(Me.CxMesRef, "mm/yyyy") & "#" & " And CCCodi='" & Me.CCCodi & "'" & " And CxEntrada=" & Str(Me.CxEntrada))
    Contador2 = DCount("CxEntrada", "tbl_Caixa", "CxMesRef=#" & Format(Me.CxMesRef, "mm/yyyy") & "#" & " And CCCodi='" & Me.CCCodi & "'" & " And CxEntrada=" & Str(Me.CxEntrada))

    If Contador > 0 And Contador2 > 0 Then
    MsgBox "O Lançamento já foi Realizado para este Dizimista", vbCritical, "Atenção !!!"
    intResp = MsgBox("Confirma o Lançamento ?", vbYesNo, "Atenção !!!")
    Select Case intResp
    Case vbYes
    CxSaida.SetFocus
    Contador = 0
    Case vbNo
    DoCmd.SetWarnings False
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    DoCmd.GoToRecord , , acFirst
    Contador = 0
    DoCmd.SetWarnings True
    End Select
    End If
    End If
    End Sub

    Testei e está funcionando.

    Muito grato pela ajuda,

    Abs,

    Regis Borda

      Data/hora atual: 18/5/2022, 23:37