MODIFICAR VALORES DE UMA TABELA BASEADO NO GRID

WEBIER 09/12/2009 22:32:28
#329441
possuo uma tabela de PRODUTOS onde tem um campo chamado QUANT_ESTOQUE do tipo Numero: Duplo

Onde tem q quantidade em estoque de todos os meus produtos.

Num outro formulario de VENDA

quero vender varios produtos e quando eu der um clique no botão FINALIZAR VENDA ele subtraia a QUANT_ESTOQUE de meus produtos da tabela PRODUTOS com a quantidade q vendi.

exemplo:

no grid fica assim:

Arroz 10 R$ 1,20
Cebola 20 R$ 2,10

na tabela produtos tá assim:

Arroz 120
Cebora 200

ai ele vai no grid e pega os 10 arroz e subtrai pela quantidade no estoque

ESTOQUE_ATUAL = 10 - 120
ESTOQUE_ATUAL = 110

ai fiz assim no meu botão FINALIZAR VENDA

    For i = 0 To Grid.Rows - 1
Grid.Row = i
execSQL [Ô]UPDATE PRODUTOS SET QUANT_ESTOQUE = QUANT_ESTOQUE - [Ô] & Replace(Grid.TextMatrix(1, 6), [Ô],[Ô], [Ô].[Ô]) & [Ô] WHERE CODIGO = [Ô] & Grid.TextMatrix(1, 3) & [Ô][Ô]
Next


ele pega a quantidade que tá na coluna 6 do produto com o codigo igual a coluna 3 e subtrai pela QUANT_ESTOQUE

o problema é q ele tá subtraindo o doblo do valor q eh pra subtrair

exemplo:

120 - 10 = 100

esse campo é do tipo DUPLO porque removo do estoque as vezes valores quebrados (0,50... 0,75... 0,99... etc.)

por isso que tem esse:

[Ô] & Replace(Grid.TextMatrix(1, 6), [Ô],[Ô], [Ô].[Ô]) & [Ô]
EDERMIR 10/12/2009 09:11:42
#329453
Resposta escolhida
Seu erro está no TEXTMATRIX:
For i = 0 To Grid.Rows - 1
Grid.Row = i
execSQL [Ô]UPDATE PRODUTOS SET QUANT_ESTOQUE = QUANT_ESTOQUE - [Ô] & Replace(Grid.TextMatrix(1, 6), [Ô],[Ô], [Ô].[Ô]) & [Ô] WHERE CODIGO = [Ô] & Grid.TextMatrix(1, 3) & [Ô][Ô]
Next

Neste momento você está retirando para CADA LINHA DO GRID o valor que está na LINHA 1 COLUNA 6. para o produto da LINHA 1 COLUNA 3

é desnecessário o posicionamento de GRID1.ROW quando utilizamos TEXTMATRIX.
O correto seria (lembrando que a linha 0 deve conter o cabeçalho):
For i = 1 To Grid.Rows - 1
execSQL [Ô]UPDATE PRODUTOS SET QUANT_ESTOQUE = QUANT_ESTOQUE - [Ô] & Replace(Grid.TextMatrix(i, 6), [Ô],[Ô], [Ô].[Ô]) & [Ô] WHERE CODIGO = [Ô] & Grid.TextMatrix(i, 3) & [Ô][Ô]
Next
Tópico encerrado , respostas não são mais permitidas