MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Erro função DLookup

    Compartilhe

    maryprego
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Angola
    Mensagens : 46
    Registrado : 16/07/2017

    [Resolvido]Erro função DLookup

    Mensagem  maryprego em Dom 30 Jul 2017, 17:25

    olá, agradeço a vossa ajuda antecipadamente.

    encontrei aqui no fórum um exemplo de rotina do mestre Marcelo David que impede dar baixa estoque negativo.
    e fiz algumas adaptações consoante as minhas necessidade e esta a dar erro ao clicar no botão salvar do Frm_Pedido  erro: "invalid use of null. estou a dias a tentar ultrapassar sem êxito.

     Private Sub txtQuantPedido_BeforeUpdate(Cancel As Integer)
       Dim i As Integer
       If IsNull(Me!txtCodigoArtigo) Then    'Para evitar conflitos, verifico se o produto foi informado
           MsgBox "Artigo não informado!", vbExclamation, "Falta dados"    'Caso não tenha sido informado, desfaça as ações
           Me.Undo
           Cancel = True
       Else    'Se o produto estiver informado corretamente
           i = DLookup("Estoque", "Cst_Estoque", "CodigoArtigo=" & Me!txtCodigoArtigo)    'Guardo a quantidade atual do estoque do produto na variável i

           If i < Me!txtQuantPedido Then    'Verifico se a quantidade do estoque é menor que a informada na compra
               'Informo que não há estoque suficiente com detalhes
               MsgBox "Não é possível proceder a saida desse artigo na quantidade especificada." _
                    & vbNewLine & "Quantidade atual em estoque: " & i & "" & vbNewLine & "Quantidade informada para " _
                    & "Levantamento: " & Me!txtQuantPedido & "" & vbNewLine & "Diferença: " & Me!txtQuantPedido - i & "", vbExclamation, "Estoque insuficiente!"
               Me.Undo    'Desfaço as alterações
               Cancel = True    'cancela a atualização do registro
           End If
       End If

    End Sub

    tambem estei com funcao Nz esta a mostrar estoque zero (mas existe estoque) assim:

    i = Nz (DLookup("Estoque", "Cst_Estoque", "CodigoArtigo=" & Me!txtCodigoArtigo))

    alguem pode dar uma olha onde esta o erro.
    Anexos
    teste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (821 Kb) Baixado 3 vez(es)

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Erro função DLookup

    Mensagem  Phillip_Junior em Dom 30 Jul 2017, 22:11

    Olá

    Observe com atenção:

    Primeiro vc esta a utilizar um subform dentro do seu formulário, o que significa que é obrigatório vc informar isso ao código para executar o procedimento corretamente.

    Para o feito, renomei seu subform no seu formulário sem acentos e sem espaços. Ele está assim (Tbl_ItemPedido subformulário)

    Para exemplo euremomi-ei para Frm_ItemPedidoSub.

    Uma observação é que vc deve renomear tanto na lista dos objetos quando nas propriedades dele na aba Outra do seu subform. Pois no seus objetos ele está certo mas na aba das propriedades desse subform esta com outro nome.

    Feito isso, toda vez que vc for se referir ao subform dentro do seu form vc deve utilizar dessa forma

    NomeDoSubForm.Form!NomeDoCampoDoSubForm
    Sem utilizar value ou me. me! somente o nome do campo.

    Caso queira desfazer algo nele, vc pode fazer assim
    NomeDoSubForm.Form.Undo
    Ou para atualizar
    NomeDoSubForm.Form.requery


    Então no seu caso vc precisará informar onde exatamente encontrasse os campos que vc gostaria de verificar se são nullos

    No seu caso seria assim :

    Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtCodigoArtigo


    Feito isso, para verificar se o campo é nullo utilizando uma variável vc deve fazer assim:

    = Nz(DLookup("Estoque", "Cst_Estoque", "CodigoArtigo=" & Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtCodigoArtigo & ""), 0)

    Usar Nz( inicialmente
    Depois no fim fechar com & ""),0)


    Seu código alterado está abaixo.

    Teste e retorne para sabermos se resolveu ok

    Abraços


      Dim i As Integer
       
       
       If IsNull(Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtCodigoArtigo) Then    'Para evitar conflitos, verifico se o produto foi informado
           MsgBox "Artigo não informado!", vbExclamation, "Falta dados"    'Caso não tenha sido informado, desfaça as ações
           Forms!Frm_Pedido!Frm_ItemPedidoSub.Form.Undo
           Cancel = True
       Else    'Se o produto estiver informado corretamente
           i = Nz(DLookup("Estoque", "Cst_Estoque", "CodigoArtigo=" & Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtCodigoArtigo & ""), 0)  'Guardo a quantidade atual do estoque do produto na variável i
         
           If i < Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtQuantPedido Then    'Verifico se a quantidade do estoque é menor que a informada na compra
               'Informo que não há estoque suficiente com detalhes
               MsgBox "Não é possível proceder a saida desse artigo na quantidade especificada." _
                    & vbNewLine & "Quantidade atual em estoque: " & i & "" & vbNewLine & "Quantidade informada para " _
                    & "Levantamento: " & Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtQuantPedido & "" & vbNewLine & "Diferença: " & Forms!Frm_Pedido!Frm_ItemPedidoSub.Form!txtQuantPedido - i & "", vbExclamation, "Estoque insuficiente!"
              Forms!Frm_Pedido!Frm_ItemPedidoSub.Form.Undo    'Desfaço as alterações
               Cancel = True    'cancela a atualização do registro
           End If
       End If


    .................................................................................
    Phillip_Junior
    Analista de Sistemas

    maryprego
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Angola
    Mensagens : 46
    Registrado : 16/07/2017

    Re: [Resolvido]Erro função DLookup

    Mensagem  maryprego em Seg 31 Jul 2017, 20:07

    olá,
    muito obrigado pelo retorno tão breve e pelas análises que fizeste, aprendi muito com essa matéria.

    implementei conforme me orientaste, não está a descontar ao inserir a quantidade porque está a mostrar estoque zero (0) mas existe artigo em estoque.

    maryprego
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Angola
    Mensagens : 46
    Registrado : 16/07/2017

    Re: [Resolvido]Erro função DLookup

    Mensagem  maryprego em Qua 02 Ago 2017, 21:29

    helpe

    maryprego
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Angola
    Mensagens : 46
    Registrado : 16/07/2017

    Re: [Resolvido]Erro função DLookup

    Mensagem  maryprego em Sex 04 Ago 2017, 17:27

    up
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro função DLookup

    Mensagem  JPaulo em Sex 04 Ago 2017, 17:35

    Ola a todos;

    Mary, você inicialmente tem tudo correto, apenas falta dizer na linha abaixo qual a coluna da sua combobox está o código do artigo.

    Sendo uma combobox, as colunas começam por zero (0) e o codigo do artigo está na coluna(1)

    i = DLookup("Estoque", "Cst_Estoque", "CodigoArtigo=" & Me!txtCodigoArtigo.Column(1))

    Teste no seu projeto inicial e veja com funciona beleza.


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

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

    Sucesso e Bons Estudos
    Success and Good Studies

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

    maryprego
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Angola
    Mensagens : 46
    Registrado : 16/07/2017

    Re: [Resolvido]Erro função DLookup

    Mensagem  maryprego em Dom 06 Ago 2017, 15:30

    cheers pequenos detalhes fazem a diferença!!! está funcionar.
    grato pela ajuda.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Erro função DLookup

    Mensagem  Alexandre Neves em Dom 06 Ago 2017, 21:15

    Boa noite,
    Falta o "Resolvido"


    .................................................................................
    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

    maryprego
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Angola
    Mensagens : 46
    Registrado : 16/07/2017

    Re: [Resolvido]Erro função DLookup

    Mensagem  maryprego em Seg 07 Ago 2017, 11:58

    desculpe, grato...

      Data/hora atual: Qui 21 Set 2017, 02:35