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]Código em uma Caixa de Combinação de um sub-formulário

    Compartilhe
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 11/3/2019, 19:40

    Boa tarde Sr.s

    Estou com uma dúvida, tenho um formulário principal de vendas, Frm_vendas, ao registro os dados dos cliente e data da compra, e o número de pedido e numeração automática.
    Existe um sub formulário frm_vendasrev_sub, aonde tenho quais os produtos dessa venda, com as respectivas quantidade e preço unitário.
    A dúvida é a seguinte, quando eu escolher um produto que é uma caixa de combinação chamada Cod_rev, e a mesma estiver com estoque zerado, apareça uma msgbox("Favor dar entrada do produto em Estoque") e essa venda seja cancelada.
    Li algumas coisas porém todas estavam em um formulário principal.

    Aguardo retorno.

    Obrigado.
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Marcelo David em 12/3/2019, 00:45

    Boa noite,
    ao selecionar o produto, faça um dlookup na tabela buscando a quantidade
    daquele item. E caso não haja suficiente, não permita selecionar o produto.

    Melhor que cancelar a venda.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 12/3/2019, 20:59

    Boa noite Professor.
    Marcelo David.

    Bom eu tentei o seguinte código abaixo:

    If DCount("Cod_revest", "tbl_it_rev", "Cod_revest= " & "txt_revestimento") >= 0 Then

    MsgBox "Favor cadastrar o produto em estoque", vbCritical
    'faltou estas duas linhas
    Me.Txt_Revestimento.Undo
    Cancel = True
    Else
    MsgBox "Ok Produto liberado para cadastro", vbInformation

    End If
    End

    O problema é que em qualquer produto que seleciono ele dá a primeira mensagem "Favor cadastrar o produto em estoque"
    Por gentileza aonde está o erro?

    Obrigado...
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Marcelo David em 12/3/2019, 22:00

    Boa noite,
    Seu dcount não esta comparando os valores corretos.

    A quantidade de produtos está sendo controlada por um campo na tabela de produtos ou está diminuindo a quantidade de entrada pela quantidade de saída?

    Caso seja no campo, deverá usar o dlookup ao invés do dcount.
    O dlookup retorna o valor de um campo (ou campos) e o dcount retorna a quantidade de registros.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 13/3/2019, 00:29

    Boa noite professor.

    Sobre a quantidade de produtos ela está sendo descontada de uma consulta, cs_Estoque, do qual eu pego os lançamentos de compras de materiais (Entradas), e quando é executada uma venda (Saída), então como deveria proceder. tentei assim abaixo e deu errado:

    If DLookup("Produto" , "cs_estoque" , "txt_revestimento > 0")

    MsgBox "Favor cadastrar o produto em estoque", vbCritical
    'faltou estas duas linhas
    Me.Txt_Revestimento.Undo
    Cancel = True
    Else
    MsgBox "Ok Produto liberado para cadastro", vbInformation

    End If
    End
    End Sub

    Aguardo vosso retorno e obrigado...
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Marcelo David em 13/3/2019, 02:43

    Vamos lá!

    Bessa_SP escreveu:If DLookup("Produto" , "cs_estoque" , "txt_revestimento > 0")

    Produto retornar a quantidade em estoque? Se não, essa pesquisa deve retornar isso.
    txt_revestimento que campo é esse e de que tipo?

    Poderia traduzir: DLookup("Produto" , "cs_estoque" , "txt_revestimento > 0"),
    Dessa forma tetarei ser mais preciso.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 13/3/2019, 02:55

    Professor

    Eu tentei usar a mesma estrutura do Dcount:

    If DCount("Cod_revest", "tbl_it_rev", "Cod_revest= " & "txt_revestimento") >= 0 Then

    Porém o Sr. me questionou se era dessa forma que se diminuiria o meu estoque:
    A quantidade de produtos está sendo controlada por um campo na tabela de produtos ou está diminuindo a quantidade de entrada pela quantidade de saída?

    Então professor por isso tentei através do código abaixo:
    If DLookup("Produto" , "cs_estoque" , "txt_revestimento > 0")

    Produto, está contido dentro da consulta cs_estoque, e nessa consulta tem os seguintes campos:
    Produto
    Entrada
    Saida
    Estoque Atual: nz(entrada)-nz(saida)
    E txt_revestimento - É uma caixa de combinação dentro do meu sub-Formulário, aonde consta o produtos que ao serem selecionados deduz do meu estoque.
    Txt_revestimento - É um campo de texto...

    Obrigado
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Marcelo David em 13/3/2019, 17:25

    Grato pelas explicações, mas ainda assim está confuso.
    Pois precisamos saber o tipo de cada campo.

    Cod_revest, é que tipo de campo? Vem de qual tabela?

    Poderia postar aqui seu aplicativo, assim ficará mais fácil e já posto funcionando
    com os devidos comentários nos códigos.




    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 837
    Registrado : 01/03/2014

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Celso Roberto em 13/3/2019, 21:28

    Olá a todos

    Não seria:

    If DLookup("Estoque Atual:" , "cs_estoque" , "Cod_revest= '" & Me.txt_revestimento"'") <= 0 Then

    Aguardamos

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 14/3/2019, 02:00

    Boa noite a todos

    Professor Marcelo David
    O sistema e grande vou tentar arrumar somente a parte de vendas em um banco separado para postar e o campo cod_revest é uma caixa de combinação da tbl_it_revest.

    Professor Celso Roberto
    No seu código abaixo:
    If DLookup("Estoque Atual:" , "cs_estoque" , "Cod_revest= '" & Me.txt_revestimento"'") <= 0 Then

    Esta dando um erro nas aspas apos me.txt_revestimento

    Aguardo vosso retorno

    Obrigado

    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 14/3/2019, 02:01

    Boa noite a todos

    Professor Marcelo David
    O sistema e grande vou tentar arrumar somente a parte de vendas em um banco separado para postar e o campo cod_revest é uma caixa de combinação da tbl_it_revest.

    Professor Celso Roberto
    No seu código abaixo:
    If DLookup("Estoque Atual:" , "cs_estoque" , "Cod_revest= '" & Me.txt_revestimento"'") <= 0 Then

    Esta dando um erro nas aspas apos me.txt_revestimento

    Aguardo vosso retorno

    Obrigado

    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Marcelo David em 14/3/2019, 03:39

    Cod_revest = Caixa de combinação. Qual tipo de dados? Oquê armazena esse campo? Qual coluna está usando para comparar?

    Sobre o dlookup, esqueci um &. O correto é assim:

    Obs 1: Caso o campo Cod_revest seja texto:
    If DLookup("Estoque Atual:" , "cs_estoque" , "Cod_revest= '" & Me.txt_revestimento & "'") <= 0 Then

    Obs 2: Caso o campo Cod_revest seja número:
    If DLookup("Estoque Atual:" , "cs_estoque" , "Cod_revest= " & CInt(Me.txt_revestimento)) <= 0 Then


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 14/3/2019, 13:05

    Bom dia Professor Marcelo

    Primeiro desculpe em não postar o BD, como lhe disse ele muito grande e a parte de vendas está atrelado tanto em estoque como na parte financeira de entrada de caixa, e está uma correria para tentar montar um bd de teste para lhe mostrar o que necessito.
    Vou tentar te explicar, eu tenho uma tabela de Produtos e outra de Entrada de Produtos(Compras), essa tabela it_revest é aonde se executa o serviço e seleciona qual o revestimento utilizado, e nesse formulário de vendas tenho vários status desse pedido, quando seleciona o status FATURADO, ele baixa do estoque e da entrada de caixa, a minha necessidade é que quando a pessoa for cadastrar independentemente do seu status de pedido e o estoque esteja zerado ela não consiga nem lançar a venda, pois isso está dando muito erro de estoque.
    O cod_revest é um campo de texto que recebe da tabela produto o nome do produto.
    Tentei o seguinte código:
    If DLookup("Estoque Atual:" , "cs_estoque" , "Cod_revest= '" & Me.txt_revestimento & "'") <= 0 Then
    É erro que aparece é:
    Erro em tempo de execução '3075':
    Erro de sintaxe (operador faltando) na expressão de consulta Estoque Atual:'.
    Professor esse campo estoque atual como lhe disse é uma subtração entre entradas - saida da consulta cs_estoque, o cod_revest é um campo de texto da tbl_it_revest e o nome desse campo no formulario txt_revestimento.

    Obrigado pela ajuda...
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 837
    Registrado : 01/03/2014

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Celso Roberto em 15/3/2019, 01:22

    Olá;

    Como você disse que campo Estoque Atual é texto, Tente:


    If (DLookup("[Estoque Atual]" , "cs_estoque" , "[Cod_revest]= '" & Me.txt_revestimento & "'")) <= 0 Then

    Ou


    If DLookup("[Estoque Atual]" , "[cs_estoque]" , "Cod_revest= '" & Me.txt_revestimento & "'") <= 0 Then

    Ou

    If DLookup("[Estoque Atual]" , "[cs_estoque]" , "[Cod_revest]= '" & Me.txt_revestimento & "'") <= 0 Then


    Aguardamos

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 15/3/2019, 11:37

    Bom dia Senhores

    Professor Celso Roberto

    Amigo quero lhe agradecer pela ajuda...
    Não sei se estou sendo conseguindo passar minha necessidade, já que o campo Estoque Atual vem de uma consulta cs_estoque e esse valor é numérico pois e a diferença entre entrada e saídas, tentei o 3 códigos abaixo e todos eles acontecem a mesma coisa, eles dão sempre a primeira mensagem, dizendo que tem que dar entrada do produto em estoque, mesmo tendo a quantidade em estoque, segue abaixo como montei o código:

    If DLookup("[Atual]", "[cs_estoque]", "[Cod_revest]= '" & Me.Txt_Revestimento & "'") <= 0 Then

    MsgBox ("Favor dar entrada do produto em Estoque!"), vbCritical, "Estoque"
    Me.Txt_Revestimento.Undo
    Cancel = True

    Else
    MsgBox ("Produto liberado para venda!"), vbInformation, "Estoque"

    End If
    End

    Estou colocando um BD de teste pois assim fica mais fácil dos amigos me ajudarem e agradeço muito pela contribuição.
    Criei um formulario de vendas FrmVendas e um Sub que é o FrmVendasSub, e outro formulário de entradas de produtos que é FrmEntradaProdutos e FrmEntradaSub, o que eu desejo é:
    Cadastrei somente dois produtos
    Tubo 4"
    Tubo 6"
    E criei uma cs_estoque, aonde o primeiro tubo está zerado e o segundo tubo ainda tem 20 m no estoque.
    Eu quero que após atualizar o cod_revest que é um campo FrmVendasSub, se a quantidade inserida na venda for maior que a do estoque atual ele dê uma MsgBox("Favor cadastrar o produto em Estoque") e caso a quantidade seja suficiente a venda seja liberada, senão a venda não seja concluída.


    Obrigado pela ajuda.
    Anexos
    Vendas_Teste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (57 Kb) Baixado 3 vez(es)
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 837
    Registrado : 01/03/2014

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Celso Roberto em 15/3/2019, 19:27

    Olá..

    No exemplo que enviou coloque este código no evento antes de atualizar do campo "Qtd_Rev" do formulario

    Código:
    Private Sub Qtd_Rev_BeforeUpdate(Cancel As Integer)


    'If Nz(DLookup("[Estoque Atual]", "[Cs_Estoque]", "[Produto]= '" & Me.Cod_Revest & "'")) <= 0 Then

    If Me.Qtd_Rev > Nz(DLookup("[Estoque Atual]", "[Cs_Estoque]", "[Produto]= '" & Me.Cod_Revest & "'")) Then

    MsgBox ("Favor dar entrada do produto em Estoque!"), vbCritical, "Estoque"
    Me.Cod_Revest.Undo
    DoCmd.CancelEvent
    'Cancel = True

    Else
    MsgBox ("Produto liberado para venda!"), vbInformation, "Estoque"

    End If

    End Sub


    Aguardamos

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    Bessa_SP
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 07/11/2013

    Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Bessa_SP em 15/3/2019, 20:13

    Boa tarde!

    Professor Celso Roberto

    Primeiro muito obrigado, deu tudo certo, olha eu nunca vibrei tanto com um código dando certo, pois eu estava ficando louco de tanto de ajuste de estoque, assim consigo tratar o estoque corretamente.
    Mais uma vez obrigado ao Professor, como também o Professor Marcelo David que se empenharam em me ajudar.

    Valeu
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 837
    Registrado : 01/03/2014

    Re: [Resolvido]Código em uma Caixa de Combinação de um sub-formulário

    Mensagem  Celso Roberto em 15/3/2019, 20:41

    Olá...

    Ficamos felizes por ter ajudado.

    O Fórum agradece seu retorno

    Abraços e sucesso!!!


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....

      Data/hora atual: 25/3/2019, 00:12