Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

_Darkness_

Atualizar dados

Recommended Posts

Olá pessoal!

Bom eu tenho uma dúvida, digamos que eu tenha um formulário e nesse formulario eu tenha 3 campos

1º o campo "Entrada" depois o campo "Saída" e depois o campo "Estoque".

Eu queria saber como que eu faço para quando eu digar algo no campo "Entrada" o campo estoque atualize automaticamente sendo que o valor desse campo vem do banco de dados, e a mesma coisa aconteça parao campo "Saída", quando eu digitar um valor no campo "Saída" o valor do campo "Estoque" mude para menos, e depois atualize o valor no db, rs deu para entender a minha dúvida?

 

Bom se algúem souber como fazer isso e puder me ensinar eu fico muito grato.

 

Abraços! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Darkness:Você não especificou as propriedades de seu formulário, nem dos camponentes utilizados, e a solução pode ir da mais simples (como você verá abaixo) à mais complexa, a depender do nível de sua aplicação. Veremos apenas a mais simples que, apesar de ser um tanto "cadela" (hehehe), irá atender as suas necessidades imediatas. Não é necessário alterar seu formulário atual, se não quiser. Ao invés disso:1) crie um novo formulário com apenas 3 caixas de texto, as quais chamaremos de txtEntrada, txtSaida e txtEstoque;2) especifique a "origem do registro" como sendo a sua tabela (aqui chamada de txtTabela);3) especifique a "origem do controle" da txtEstoque como sendo o campo "Estoque" de sua tabela;4) no evento AfterUpdate da txtEntrada insira o seguinte código: Dim intQuantidade As Integer If IsNull(txtEntrada) Then Exit Sub Else Set db = CurrentDb intQuantidade = txtEstoque + txtEntrada db.Execute "UPDATE tblTabela SET Estoque = " & intQuantidade & "" txtEstoque.Requery End If5) no evento AfterUpdate da txtSaida insira o seguinte código: Dim intQuantidade As Integer If IsNull(txtSaida) Then Exit Sub Else Set db = CurrentDb intQuantidade = txtEstoque - txtSaida db.Execute "UPDATE tblTabela SET Estoque = " & intQuantidade & "" txtEstoque.Requery End IfComo eu disse, a solução é "cadela" mas funciona. Para "incrementar" um pouco mais a aplicação, você poderia definir, por exemplo, que txtEntrada e txtSaida só pudessem receber valores; que txtEstoque fosse desabilitada (para que o usuário não alterasse o seu conteúdo, ainda que de maneira acidental - lembre-se que o componente está acoplado a um campo da tabela); que txtSaida não pudesse receber valores menores do que o estoque; que um procedimento verificasse se realmente houve a alteração (acréscimo ou redução) esperada, etc.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Darkness:Você não especificou as propriedades de seu formulário, nem dos camponentes utilizados, e a solução pode ir da mais simples (como você verá abaixo) à mais complexa, a depender do nível de sua aplicação. Veremos apenas a mais simples que, apesar de ser um tanto "cadela" (hehehe), irá atender as suas necessidades imediatas. Não é necessário alterar seu formulário atual, se não quiser. Ao invés disso:1) crie um novo formulário com apenas 3 caixas de texto, as quais chamaremos de txtEntrada, txtSaida e txtEstoque;2) especifique a "origem do registro" como sendo a sua tabela (aqui chamada de txtTabela);3) especifique a "origem do controle" da txtEstoque como sendo o campo "Estoque" de sua tabela;4) no evento AfterUpdate da txtEntrada insira o seguinte código: Dim intQuantidade As Integer If IsNull(txtEntrada) Then Exit Sub Else Set db = CurrentDb intQuantidade = txtEstoque + txtEntrada db.Execute "UPDATE tblTabela SET Estoque = " & intQuantidade & "" txtEstoque.Requery End If5) no evento AfterUpdate da txtSaida insira o seguinte código: Dim intQuantidade As Integer If IsNull(txtSaida) Then Exit Sub Else Set db = CurrentDb intQuantidade = txtEstoque - txtSaida db.Execute "UPDATE tblTabela SET Estoque = " & intQuantidade & "" txtEstoque.Requery End IfComo eu disse, a solução é "cadela" mas funciona. Para "incrementar" um pouco mais a aplicação, você poderia definir, por exemplo, que txtEntrada e txtSaida só pudessem receber valores; que txtEstoque fosse desabilitada (para que o usuário não alterasse o seu conteúdo, ainda que de maneira acidental - lembre-se que o componente está acoplado a um campo da tabela); que txtSaida não pudesse receber valores menores do que o estoque; que um procedimento verificasse se realmente houve a alteração (acréscimo ou redução) esperada, etc.Abraços.

Valew =) salvou uma vida rsrsFico muito agradecido pela ajuda! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há! uma dúvida, notei q mesmo que eu insira mais de um produto na tabela, ele altera os dados de todos e não so de um...Eu teria que usar a cláusula Where para impedir isso né?Como eu faço isso?Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há! uma dúvida, notei q mesmo que eu insira mais de um produto na tabela, ele altera os dados de todos e não so de um...Eu teria que usar a cláusula Where para impedir isso né?Como eu faço isso?Abraços!

Há ja descobrifiz umas modificações no codigo e beleza valewSet db = CurrentDbintQuantidade = txtEstoque + txtEntradaintCod = txtCoddb.Execute "UPDATE tblTabela SET Estoque = " & intQuantidade & " WHERE cod = " & intCod & ""txtEstoque.RequerytxtEntrada = ""[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola boa tarde, alguem poderia me dizer como faço para limpar um campo logo após ele emitir uma mensagem informando que o dado já existe, Ex: tenho um campo CPF o mesmo já esta cadatrando no banco ok, preencho um novo cadastro com o mesmo CPF, o access informa numa caixa de mensagem que esse CPF já existe minha pergunta é? Quando eu clicar em "ok" nessa caixa de mensagem como faço para o campo "CPF" limpar altomaticamente ou seja ficar em branco no formulario será que alguem pode me ajudar? Gratomsn: sed-car-alaindelon@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Darkness:Desculpe pela solução incompleta, mas imaginava que o estoque correspondia a um produto/artigo único. Como há mais de um produto, você mesmo acabou encontrando a solução com a inclusão da cláusula WHERE.Abraços.Prezado carlosAlbert:Encontre o código VBA que faz surgir a MsgBox que menciona (algo como MsgBox "CPF já existente"...). Em seguida acrescente, logo após a linha descrita, a expressão abaixo:txtCPF = NulltxtCPD.SetFocusO primeiro comando "limpa" a caixa de texto (que é o que deseja).O segundo, opcional, mantém o foco no próprio componente (evitando que o foco for transferido para outro).Espero que isso ajude.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.