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

    Dlookup não funciona

    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 736
    Registrado : 23/03/2010

    Dlookup não funciona Empty Dlookup não funciona

    Mensagem  Finformática 13/5/2021, 15:36

    Olá Caros Mestres,

    Sei que deve ser uma besteira, mas não estou conseguindo enxergar onde está o erro desse código para o Dlookup e SetFocus funcionar. Já coloquei nos eventos Após Atualizar, Antes de Atualizar e diversos outros e não funciona. É na sintaxe do próprio Dlookup.

    Dim x
    x = DLookup("[DataMovimento]", "TbMovimento", "[DataMovimento]= #" & Me.TxtDataMovimento & "#")
    If Not IsNull(x) Then
    MsgBox "Data de movimentação já lançada. Verifique!", vbCritical, "ATENÇÃO - DUPLICIDADE NEGADA"
    TxtValor.SetFocus
    TxtDataMovimento.SetFocus
    End If

    Tabela: TbMovimento
    Campo da tabela: DataMovimento (Chave primária) Só pode ter um lançamento por dia.
    Campo do formulário: TxtDataMovimento

    Onde está o erro?

    Muito grato a todos
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1781
    Registrado : 13/12/2016

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Alexandre Fim 13/5/2021, 16:33

    Fala ai , Brother

    Veja se funciona assim:
    Código:


        x = DLookup("[DataMovimento]", "TbMovimento", "[DataMovimento]= #" & Format(Me.TxtDataMovimento, "mm/dd/yyyy") & "#")
            If Not IsNull(x) Then
                MsgBox "Data de movimentação já lançada. Verifique!", vbCritical, "ATENÇÃO - DUPLICIDADE NEGADA"
                TxtValor.SetFocus
                TxtDataMovimento.SetFocus
            End If


    []'s

    fim
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 736
    Registrado : 23/03/2010

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Finformática 13/5/2021, 17:13

    Grande Alexandre,

    Desde já muito grato por mais essa ajuda. Já tentei de 200 modos diferentes e nada. Inclusive com essa formatação. Copiei e colei sua linha e deu certo. Não entendo.
    Agora pergunto em que evento fica melhor colocar. Esse aí está em Após Atualizar que não é o mais indicado. Inclusive esse campo data tem como valor padrão a data do sistema e se der ENTER para sem criticar. Sei também que esse modo de forçar o SetFocus depende do evento (vi aqui no fórum, se não me engano do Damasceno), mas consegui encontrar novamente.

    Muito grato
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1781
    Registrado : 13/12/2016

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Alexandre Fim 13/5/2021, 17:21

    Cara, usa instrução SQL que vc vai ser mais feliz...rsss


    Código:


    Dim sSQL As String
    Dim rst As DAO.Recordset

        sSQL = "SELECT Count(DataMovimento) AS cnt"
        sSQL = sSQL & " FROM TbMovimento"
        sSQL = sSQL & " WHERE DataMovimento=#" & Format(Me.TxtDataMovimento, "mm/dd/yyyy") & "#"
        Set rst = CurrentDb.OpenRecordset(sSQL)
       
        If rst("cnt") > 0 Then
            MsgBox "Data de movimentação já lançada. Verifique!", vbCritical, "ATENÇÃO - DUPLICIDADE NEGADA"
            TxtValor.SetFocus
            TxtDataMovimento.SetFocus
        End If
       
        rst.Close
        Set rs = Nothing



    Testa ai

    []'s

    FIM
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 736
    Registrado : 23/03/2010

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Finformática 13/5/2021, 17:33

    Olá,

    Testei com SQL e funcionou perfeitamente. ótimo. E as outras questões que citei acima sobre o melhor evento, o setfocus e valor padra da data com o Enter para fazer a coisa mais correta sem forçar a funcionalidade.

    Muito grato
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1781
    Registrado : 13/12/2016

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Alexandre Fim 13/5/2021, 19:06

    Vc faz a validação após atualizar qual controle?
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 736
    Registrado : 23/03/2010

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Finformática 13/5/2021, 19:15

    Após a Data, que é meu primeiro campo. Isso para evitar digitar outros campos do formulário e no final vir aquele mensagem padrão do Access de duplicidade. Já que a data é chave primária.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1781
    Registrado : 13/12/2016

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Alexandre Fim 13/5/2021, 19:24

    Cara,

    Vc pode fazer toda a validação do seu formulário no botão Gravar.

    Voce pode criar uma função privada no form para validar os dados. O resultado desta função é um boolean. Ex.:

    Código:



    Private Sub cmdGravar_Click()

        '-- Se retornar FALSE, O CÓDIGO
        If ValidaCampos = False Then
            Exit Sub '-- Se retornar FALSE, o código pára aqui
        End If
       
       
        ' -----
        '-- seu código para gravar dados
        '----
       

    End Sub

    Public Function ValidaCampos() As Boolean
    Dim sSQL As String
    Dim rst As DAO.Recordset

        ValidaCampos = True

       
        '-- Código para validar a Data -------------------------------------------------------------
        sSQL = "SELECT Count(DataMovimento) AS cnt"
        sSQL = sSQL & " FROM TbMovimento"
        sSQL = sSQL & " WHERE DataMovimento=#" & Format(Me.TxtDataMovimento, "mm/dd/yyyy") & "#"
        Set rst = CurrentDb.OpenRecordset(sSQL)
       
        If rst("cnt") > 0 Then
            MsgBox "Data de movimentação já lançada. Verifique!", vbCritical, "ATENÇÃO - DUPLICIDADE NEGADA"
            TxtValor.SetFocus
            TxtDataMovimento.SetFocus
            ValidaCampos = False  '-- se for Maior que Zero, define função como FALSE
            rst.Close
            Set rs = Nothing
            Exit Function
        Else
            ValidaCampos = True
            rst.Close
            Set rs = Nothing
        End If
       
        '-- Código para validar outros campos

       


    End Function



    Espero ter ajudado


    []'s

    FIM
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 736
    Registrado : 23/03/2010

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Finformática 13/5/2021, 20:53

    Caro Fim,

    Entendo a sua sugestão. Também é um método muito bom, no entanto é isso que desejo evitar. Que o usuário digite vários campos e depois tentar gravar e tenha que voltar para consertar. Nesse caso aqui são poucos campos (5). Os principais são Data, Valor e Descrição, que são obrigatórios. Isso inclusive foi uma das recomendações do cliente, onde tenho outro sistema com mais de 60 (que na minha opinião não tem necessidade, nem utilidade). Imagine um cadastro de eleitor (gabinete politico) com nome e data de nascimento de filhos que nem sonham em tirar título de eleitor e nome e data de nascimento de pais e mães que nem votam mais. Tem uma porrada de estatísticas em que esses campos estão inclusos que não serve para nada. Até atrapalha a análise dos resultados. Esse sistema está desse modo, digita tudo e tenta gravar, aí vai consertando um a um.
    Essa questão do momento é mais simples, ou seja, é o setfocus, qual melhor evento para criticar campo Data e amarrar para guando der Enter no campo Data (data padrão do sistema) ele também ser criticado. Dando Enter, passa direto, independente do conteúdo até tentar passar para novo registro e ser barrado pelas obrigatoriedades da tabela.

    Muito grato por suas sugestões de Grande Mestre. Acompanho muito suas matérias aqui no fórum

    Grande abraço
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1781
    Registrado : 13/12/2016

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Alexandre Fim 13/5/2021, 23:12

    Caro FInformatica,

    Disponibiliza o form e os objetos pertinentes para analise.

    []'s

    FIM
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 736
    Registrado : 23/03/2010

    Dlookup não funciona Empty Re: Dlookup não funciona

    Mensagem  Finformática 14/5/2021, 18:28

    Segue anexo

    Para chegar corretamente no formulário entre por BR_Form DataINI. Depois irei colocar um dentro do outro como subformulário.

    Muito grato
    Anexos
    Dlookup não funciona AttachmentControle de Pagamentos Resumido.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (83 Kb) Baixado 8 vez(es)

      Data/hora atual: 23/9/2021, 00:19