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]Dlookup Válido retornando valor nulo.

    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 00:07

    Olá galera,

    Eu fiz a expressão:

    Código:
    qCliente = DLookup("cod_cliente", "carrosClientes", "[placa_cliente]= '" & Me.Placa.Text & "' ")

    Tenho certeza que tem 1 resultado válio, porém o valor de qCliente está nulo.

    Já tentei até colocar o texto direto no lugar da variável, porém ainda retorna nulo.

    Imagem da tabela com 2 registros pra teste.

    [Resolvido]Dlookup Válido retornando valor nulo. K9t1lg

    Já coloquei MSG com o conteúdo de Me.Placa.Text e o texto é extamente igual, Além do mais o Me.Placa.Text encontra resultados para DlookUp em outras tabelas com o mesmo critério.

    Estou perdido.

    Mais um vez solicito a ajuda dos mestres aqui! Grande abraço!
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  Marcelo David 15/12/2015, 00:15

    Poste seu aplicativo para darmos uma olhada...


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Dlookup Válido retornando valor nulo. Marcel11
    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 00:41

    Tá na mão meu amigo

    http://ge.tt/5pdpufT2/v/0?c
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  Marcelo David 15/12/2015, 01:24

    Ok, quais são os objetos envolvidos?


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Dlookup Válido retornando valor nulo. Marcel11
    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 01:28

    Nesse caso o formulário movimentoEntrada
    No evento afterUpdate do campo Placa.

    Ele o dlookup deveria pegar essa placa, procurar na tabela carrosClientes e retornar o código do cliente.

    Mas mesmo a placa existindo, ele retorna Null, já coontruí uma consulta usando SQL fora do VBA e retornou normalmente os valores.
    Tenho Dlookup que vai em outra tabela também pela placa e busca os dados sem problema.

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  Marcelo David 15/12/2015, 02:26

    Olá, amigo, não sei como estava fazendo, mas percebi que você
    referencia o conteúdo das textbox com .text... Isso no Access só se o
    campo tiver o foco... Se precisar do texto de alguma textbox, basta
    se referenciar a ela da seguinte forma: Me.NomeDaTextBox

    O Me é para fazer referencia ao formulário atual...

    Também percebi que você não usa o compactar do Access...
    Seu aplicativo estava com quase 30mb... Com um sismples compactar ele
    diminuiu drasticamente para menos de 1Mb. aproximadamente 900k!

    Criei uma textbox com as bordas vermelhas que retorna o código do cliente
    no evento após atualizar do textbox Placa. O código contendo o delookup usado
    está identificado com comentários.

    Dê uma olhada e nos retorne por gentileza.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Dlookup Válido retornando valor nulo. Marcel11
    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 10:10

    Olá, eu descrevi errado, desculpa era o sono.

    Na verdade o campo placa vem de outro formulário.
    No formulário Main, quando eu digito a placa ele verifica se já existe um movimento de entrada com aquela placa,
    se sim, abre-se o movimentoSaída com os dados da entrada, se não abre-se o movimentoEntrada com a placa para dar entrada no veículo.
    Logo, o Dlookup tem que ser no evento Form_Load().

    Porém, como viu, se coloco em outro campo tras u resultado correto, mas no Form_Load() está trazendo valor = Null.

    Como o formulário sempre se carrega com dados, eu preciso fazer uma série de verificações para que a maioria dos dados não necessitem ser digitados, mas sejam automaticamente carregados através das tabelas relacionadas.

    Por exemplo se a placa pertence a um cliente, sua forma de contrato, modelo do veículo e se já possuí outro veículo do mesmo cliente no pátio devem ser verificados.

    Mais uma vez desculpe o erro.
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  Marcelo David 15/12/2015, 13:38

    Ok, sem problemas...
    Para facilitar, comento o mais claro possível
    o código no evento ao carregar e não esqueça
    de especificar as variáveis... Que por sinal não entendi
    porque declarar elas como variante... Mas se possível,
    detalhe o mais claro possível nos comentários..

    Aguardo.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Dlookup Válido retornando valor nulo. Marcel11
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  JPaulo 15/12/2015, 14:17

    Um pitaco;

    Com a licensa do Marcelo;

    Traz valor nulo, porque você está a usar Placa.Text, .Text serve para comando ao alterar (OnChange), além disso se placa vem do form Main tem de invocar o form;

    Use sempre e tambem a função Nz para Nulos;

    Código:
        qCliente = Nz(DLookup("cod_cliente", "carrosClientes", "placa_cliente= '" & Forms!Main!txtplaca & "'"), 0)
        placaCliente = Nz(DLookup("placa", "carrosClientes", "[placa]= '" & Forms!Main!txtplaca & "'"), 0)
        qteCliente = Nz(DCount("cliente", "movimento", "[cliente]= " & qCliente & " AND " & IsNull([horaSaída]) & " "), 0)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new Instruções SQL como utilizar...
    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 15:39

    Caro JPaulo,
    mais uma vez obrigado, para o qCliente funcionou perfeitamente, porém para o qteCliente retorna um erro:

    Erro em tempo de execução '2471':

    A expressão que você inseriu como parâmetro de consulta gerou este erro: 'Falso'.

    Ao pressionar depurar para ler o valor de cada campo, verifico que no caso do erro o horaSaída não é nulo, será que é isso? Tem alguma outra forma de declarar a condição de quando o campo estiver vazio? Em SQL seria .... AND horaSaída Is Null...

    A variável qteCliente recebe o valor = 0, apesar do erro que para a execução do script.

    A expressão é:
    qteCliente = Nz(DCount("cliente", "movimento", "[cliente]= " & qCliente & " AND " & IsNull([horaSaída]) & " "), 0)
    O que quero é que conte os registros em que o cliente entrou e ainda não saiu. Ou seja, nesse caso ele se Dcount >= 1, então o cliente já está usando a vaga. Como as vezes as pessoas têm mais de 1 carro, o cadastro permite vários carros por cliente. As vezes acontece, por exemplo, do cônjuge do cliente, ou um filho, entrar no estacionamento quando o titular da vaga já está usando o espaço. Nesse caso o sistema tem que entrar o veículo no sistema normal de cobrança por frações de horas.

    Deu pra entender?

    Meu Form_Load() ficou assim:

    Código:

    Private Sub Form_Load()

    'Verificar se cliente é mensalista e se já tem vaga em uso

    Dim qCliente As Variant

    Dim qteCliente As Integer
    Dim placaEstacionado As String


        Me.Placa.SetFocus

    ' Definir código do cliente

        qCliente = Nz(DLookup("cod_cliente", "carrosClientes", "placa_cliente= '" & Forms!Main!txtplaca & "'"), 1)
       
       
    ' Verificar se cliente já possui veículo estacionado caso seja mensalista
       
        If qCliente <> 1 Then
           
            qteCliente = Nz(DCount("cliente", "movimento", "[cliente]= " & qCliente & " AND " & IsNull([horaSaída]) & " "), 0)
           
     
            If qteCliente >= 1 Then

    'Se já tiver veículo usando a vaga, avisar e setar campo mensalista como "Não" (0)

                placaEstacionado = DLookup("placa", "movimento", "[cliente]= '" & Cliente & "'")
     
                MsgBox ("Mensalista já possui o veículo " & placaEstacionado & " estacionado, este veículo será cobrado como horista")
     
     
                Me.Mensalista = 0
           
            Else
    ' Se não tiver entra como mensalista (-1)
               
                Me.Mensalista = -1
               
            End If
       
        Else
    ' Se não tiver cadastro entra como horista (0)

            Me.Mensalista = 0
     
        End If
     
    End Sub
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  JPaulo 15/12/2015, 16:02

    Esse trecho estava comentado, não vi;

    Veja se funfa;

    http://dl.dropboxusercontent.com/u/771097/MG%20Park_OLD.zip



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new Instruções SQL como utilizar...
    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 16:20

    Amigos, obrigado pelas dicas, os erros finais acabei encontrando sozinho, mas é claro a ajuda e as dicas de vocês foram indispensáveis.

    Eu aprendi VBA há 16 anos atrás e nunca usei, agora resolvi brincar e estou maravilhado com o poder disso, mas é claro estou muito enferrujado.

    O código funcional ficou assim: (coloquei comentários para ficar bem claro, pois pode acabar ajudando outros).

    Código:
    Private Sub Form_Load()

    'Verificar se cliente é mensalista e se já tem vaga em uso

    Dim qCliente As Variant

    Dim qteCliente As Integer
    Dim placaEstacionado As String
    Dim nomeCliente As String


    ' Resgatar código do cliente

        qCliente = Nz(DLookup("cod_cliente", "carrosClientes", "placa_cliente= '" & Forms!Main!txtplaca & "'"), 1)
       
       
    ' Verificar se cliente já possui veículo estacionado caso seja mensalista
       
        If qCliente <> 1 Then
           
            qteCliente = Nz(DCount("cliente", "movimento", "[cliente]= " & qCliente & " AND isnull([horaSaída]) "), 0)
           
            If qteCliente >= 1 Then

    'Se já tiver veículo usando a vaga, avisar e setar campo mensalista como "Não" (0)

                nomeCliente = Nz(DLookup("nomeCliente", "clientes", "[cod_cliente] = " & Me.Cliente & ""), 0)

                placaEstacionado = DLookup("placa", "movimento", "[cliente]= " & Cliente & " AND isnull([horaSaída]) ")
     
                MsgBox "Mensalista já possui o veículo Placa = " & placaEstacionado & " estacionado, este veículo será cobrado como horista", vbCritical, "AVISO!"
     
     
                Me.Mensalista = 0
           
            Else
    ' Se não tiver entra como mensalista (-1)
               
                Me.Mensalista = -1
               
            End If
       
        Else
    ' Se não tiver cadastro entra como horista (0)

            Me.Mensalista = 0
     
        End If
     
    End Sub


    Um abraço!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  JPaulo 15/12/2015, 16:22

    Fico feliz.

    Obrigado pelo retorno o forum agradece.

    Neste Natal ajude...




    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dlookup Válido retornando valor nulo. Folder_announce_new Instruções SQL como utilizar...
    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  mrjoneskod 15/12/2015, 16:34

    Ah, só uma coisa que esqueci de responder ao Marcelo.

    Eu coloquei as variáveis como Variante, por que esse tipo aceita resultados Nulos e eu queria que o código avançasse para que eu pudesse identificar e tratar mais erros de uma vez só.

    Grande abraço!


    Conteúdo patrocinado


    [Resolvido]Dlookup Válido retornando valor nulo. Empty Re: [Resolvido]Dlookup Válido retornando valor nulo.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 16:54