CONTROLE DE ESTOQUE

ANTONIOSALES 13/12/2006 17:03:37
#189796
Estou fazendo um controle de estoque onde armazeno as vendas não realizada em uma tabela VENDA_N_REALI.
Não estou conseguindo da baixa na quantidade dos itens da tabela PRODUTO quando realizo uma venda.
As vezes ficam varios itens na tabela VENDA_N_REALI e quando clico no command, tem que da baixa nas quantidades da tabela produto.
Como comparar os itens pelo codigo do produto entre as tabelas VENDA_N_REALI e a PRODUTO e depois da baixa nas quantidades da tabela PRODUTO?
Estou tentando fazer assim:

Uso banco de dados access 2003 e a conexão ADO.

Private Sub Command1_Click()
Dim data As Date
Dim vMaior As Integer

rs.MoveFirst
rs.Find "CODIGO = & ins!Produto" 'aqui tenho fazer a comparação entre duas tabelas
If rs.EOF = True Then
MsgBox "Produto não encontrado encontrado"
txtcodProduto.Text = ""
txtQtde.Text = ""
txtcodProduto.SetFocus
Exit Sub
Else
vMaior = txtQtde.Text
If vMaior > rs!estoque Then
MsgBox "A quantidade de saida é maior que a do estoque", vbCritical, "ATENÇÃO"
txtcodProduto.Text = ""
txtQtde.Text = ""
txtcodProduto.SetFocus
Else
'Aqui armazeno a venda em outra tabela chamada VENDA
rs!estoque = rs!estoque - ins!QTDE ' Aqui tenho que da baixa na tabela poduto
rs.update
rsant.AddNew
rsant!id = txtID.Text
rsant!Produto = rs!Produto
rsant!CODIGO = txtcodProduto.Text
rsant!data = Date
rsant!VALORTOTAL = (rs!VALORVENDA * txtQtde.Text)
rsant.update
GerarID
txtvenda.Text = IIf(ins!VALORTOTAL = "", "0", Format(ins!VALORTOTAL, "#,##0.00"))
MsgBox "Estoque Atualizado!"
txtcodProduto.Text = ""
txtQtde.Text = ""
txtcodProduto.SetFocus
txtvendadia.Text = Format(Soma_Colunas(ins, "valortotal"))
MontarGrid
End If
End If
End Sub


Grato
USUARIO.EXCLUIDOS 13/12/2006 19:18:41
#189822
Olá Antonio,

O produto está sendo encontrado ? Não sei se estou errado, mas eu acho q a linha q vc faz a busca (Find) está com um erro. Veja abaixo:

rs.Find "CODIGO = & ins!Produto"

qdo. eu acho q deveria ser assim:

rs.Find "CODIGO = " & ins!Produto

Outra questão: O campo código é numérico ou texto ?

Espero poder tê-lo ajudado.

Boa sorte...

Daniel
LCSD 13/12/2006 19:57:58
#189824
Resposta escolhida
tipow eu uso assim

SQL = "UPDATE PRODUTOS INNER JOIN CUPOM ON PRODUTOS.CODPRODUTO = CUPOM.itemcode SET PRODUTOS.ESTOQUE = PRODUTOS.ESTOQUE - CUPOM.qty WHERE (((PRODUTOS.CODPRODUTO) = CUPOM.itemcode))"
bd.Execute (SQL)

ANTONIOSALES 13/12/2006 21:24:37
#189828
Daniel o produto não está sendo encontrado. Irei testa a maneira que vc passou e estou usando o campo do banco de dados como texto.

Foxman, usando essa instrução SQL, vai ter que fazer um loop para que os dados da tabela produto seja atualizado?
USUARIO.EXCLUIDOS 13/12/2006 21:39:57
#189829
Olá Antonio,

Então vc deverá colocar da seguinte maneira:

rs.Find "CODIGO = '" & ins!Produto & "'"

Boa Sorte...
LCSD 13/12/2006 22:55:08
#189838
naum....ele ja ta atualizando.....depende de como eh feito o lançamento geralmente esse codigo eh colocado no final da transação......

Neste exemplo tenho uma tabela temporaria....chamada cupom....nela armazeno todos os lançamentos de uma venda.....apenas uma venda......apos a venda ser concluida eu excluo todos os registro da tabela cupom.

Sendo assim....vc naum tem problemas com possives duplicidade de lançamento....

quaquer coisa posta ae

ANTONIOSALES 14/12/2006 16:28:40
#189996
Valeu rapazes, pena que eu não posso pontuar os dois.
Tópico encerrado , respostas não são mais permitidas