MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]DLookup em campo Nulo

    Compartilhe

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    [Resolvido]DLookup em campo Nulo

    Mensagem  pengo em Ter 20 Maio 2014, 14:00

    Bom dia Pessoal,

    Estou com um problema com a função DLookup, já fiz diversas buscas e não encontrei nada satisfatório que resolva.

    Estou tentando retornar valores coma função Dlookup, porém como alguns campos dos registros estão Nulos, ele ocorre erro, tentei utilizando o Nz() porém também não obtive retorno, agora estou tentando com o IsNull, mas também não estou conseguindo, meu código é:

    Código:
    Private Sub Avaliação_LostFocus()
         Data_Cad = IIf(IsNull([CodigoRef_Cad]), "", DLookup("[Data_Prevista]", "Cadastro", "[Registro] = " & Forms!Avaliações!CodigoRef_Cad))
     End Sub

    Vou tentar explicar meu código, eu quero preencher o campo Data_Cad em um formulário continuo que possui vários registros, porém, quando o campo CodigoRef_Cad estiver nulo quero que não preencha nada no campo Data_Cad, mas caso o campo CodigoRef_Cad tenha algum valor, quero que ele faça uma pesquisa na tabela Cadastro e quando o valor do Registro for igual ao meu campo CodigoRef_Cad ele me retorna no campo Data_Cad o valor encontrado em Data_Prevista.

    Meio confuso, mas somente com o código DLookup("[Data_Prevista]", "Cadastro", "[Registro] = " & Forms!Avaliações!CodigoRef_Cad) eu consigo retornar os valores que eu desejo, o problema que estou enfrentando é quando o campo CodigoRef_Cad é Nulo.

    O Erro que está ocorrendo é o seguinte: "Erro em tempo de execução '3075': Erro de sintaxe (operador faltando) na expressão de consulta '[Registro] ='."

    Esse erro só ocorre nos campos nulos, nos campos que estão preenchidos ele calcula corretamente.

    Alguém poderia me ajudar?

    Desde já agradeço

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Dlookup em campo Nulo

    Mensagem  good guy em Ter 20 Maio 2014, 14:07

    Olá pengo,

    Coloque a função Nz que retorna um valor 0 caso o campo esteja nulo.

    Private Sub Avaliação_LostFocus()    
    On Error Resume Next
    Data_Cad = IIf(IsNull([CodigoRef_Cad]), "", Nz(DLookup("[Data_Prevista]", "Cadastro", "[Registro] = " & Forms!Avaliações!CodigoRef_Cad)))
    End Sub

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]DLookup em campo Nulo

    Mensagem  pengo em Ter 20 Maio 2014, 14:14

    Muito Obrigado Eduardo,

    Eu não sei o que eu fiz de errado, mas eu já tinha tentado algo pelo menos parecido.

    Fico muito agradecido pela sua ajuda.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]DLookup em campo Nulo

    Mensagem  pengo em Ter 20 Maio 2014, 14:46

    Eduardo, Desculpe reabrir o tópico, mas é que me surgiu mais uma dúvida.

    Teria como eu colocar esse código em um loop, por exemplo, eu abro meu formulário continuo, ele realiza essa função em todos os registros que estão sendo mostrados, e fecha o meu formulário automaticamente?

    Obrigado.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Dlookup em campo Nulo

    Mensagem  good guy em Ter 20 Maio 2014, 15:11

    Olá pengo,

    Me diga uma coisa, funcionou com a dica acima? Se sim tente criar uma consulta atualização com a mesma sintaxe para resolver o seu problema. ANTES, porém, faça um backup de sua tabela Cadastro.


    UPDATE Cadastro SET Data_Cad = IIf(IsNull([CodigoRef_Cad]); ""; Nz(DLookup("[Data_Prevista]"; "Cadastro"; "[Registro] = " & Forms!Avaliações!CodigoRef_Cad)))

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]DLookup em campo Nulo

    Mensagem  pengo em Ter 20 Maio 2014, 17:54

    Olá Eduardo,

    O código funcionou sim, perfeitamente.

    E esse que você me passou por ultimo, depois de eu quebrar a cabeça, consegui implementar.

    Nada como parar um pouco, e tentar observar de outra forma.

    Fica aqui meus agradecimentos a você e a esse maravilho fórum.




    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    DLookup em campo Nulo

    Mensagem  good guy em Ter 20 Maio 2014, 18:25

    Olá pengo,

    O fórum todo agradece,

    Se puder passa lá no Facebook e curta minha página para melhor divulgação e compartilhe entre seus amigos..

    [Você precisa estar registrado e conectado para ver este link.]

    Não deixe de visitar meu site:

    [Você precisa estar registrado e conectado para ver este link.]

    Baixe aplicativos gratuitos e como forma de contribuição apenas clique em meus anúncios.
    Baixe se desejar aplicativos comerciais, alguns são profissionalizantes.
    Baixe jogos de entretenimento educacional totalmente gratuitos.
    Baixe apostilas para estudo.
    Leia e copie dicas de Access VBA minhas e de outros colegas.

      Data/hora atual: Sab 10 Dez 2016, 04:54