SOMA DE DADOS NO DELPHI - UM NOVO DADO COM O JÁ EXISTENTE NO BD
03/01/2023
0
Olá, estou desenvolvendo um software para controle de estoque no delphi 10.4.4, nesse controle estou na parte de entrada no estoque de produtos químicos, consigo cadastrar um novo pedido e da baixa nesse pedido aberto quando ele chega (ai vai para pedidos finalizados), mas na hora de somar a quantidade de produto quimico que chegou com a quantidade que já está em estoque não tá dando. Ex: Temos vários produtos no estoque, cadastro um pedido de 1000Kg de CLORO (a quantidade em estoque é 0kg), essa quantidade chega, dou baixa no pedido, mas não tá dando de somar a quantidade que chega com a que já tá no estoque.
Consigo pesquisar o pedido aberto e o produto pedido, mas na soma diz que o valor não é válido. Estou usando MySql
With dm.SQL_EstoqueSede do
Begin
//realiza a pesquisa do produto no estoque
Active;
Close;
Sql.Clear;
Sql.Add (''''''''Select * from tb_estoque_sede'''''''');
sql.Add(''''''''where produto_estoque = :produto''''''''); //pesquisa o produto
parambyname (''''''''produto'''''''').Value := ComboEdit1.Text; (edit onde informo o produto que chegou);
OPEN;
//Edit1 tá conectado com a linha quantidade da tabela de estoque
//quando realiza a pesquisa edit recebe automaticamente o quantitativo do produto pesquisado
//variaveis do tipo inteiro
quant := StrToInt (edit1.text); //edit1 recebe o valor que já tá no estoque
quantidade := StrToInt (editquantidade.text); //editquantidade recebe o valor que chegou
quantidade2 := quant + quantidade;
edit1.text := IntToStr (quantidade2);
Edit;
post;
End;
o código executa mas quando vai salvar o produto que chega, salva o pedido, mas não soma o quantitativo.
Consigo pesquisar o pedido aberto e o produto pedido, mas na soma diz que o valor não é válido. Estou usando MySql
With dm.SQL_EstoqueSede do
Begin
//realiza a pesquisa do produto no estoque
Active;
Close;
Sql.Clear;
Sql.Add (''''''''Select * from tb_estoque_sede'''''''');
sql.Add(''''''''where produto_estoque = :produto''''''''); //pesquisa o produto
parambyname (''''''''produto'''''''').Value := ComboEdit1.Text; (edit onde informo o produto que chegou);
OPEN;
//Edit1 tá conectado com a linha quantidade da tabela de estoque
//quando realiza a pesquisa edit recebe automaticamente o quantitativo do produto pesquisado
//variaveis do tipo inteiro
quant := StrToInt (edit1.text); //edit1 recebe o valor que já tá no estoque
quantidade := StrToInt (editquantidade.text); //editquantidade recebe o valor que chegou
quantidade2 := quant + quantidade;
edit1.text := IntToStr (quantidade2);
Edit;
post;
End;
o código executa mas quando vai salvar o produto que chega, salva o pedido, mas não soma o quantitativo.
Aleksandro Soares
Curtir tópico
+ 0
Responder
Posts
04/01/2023
Natanael Ferreira
Verificando seu código, creio que faltou a linha em que você seta o campo quantidade que será gravado o novo valor (entre as linhas do Edit e Post).
Exemplo:
Exemplo:
.... // o restante do seu código acima Edit; FieldyByName('quantidade ').value := quantidade2; // inseri essa linha, adapte ao nome do seu campo post;
Responder
05/01/2023
Arthur Heinrich
Você não pode se esquecer de que você não é o único usuário operando o sistema.
Imagine que seu estoque possui 100 unidades do produto e dois usuários estão tentando comprar 80 unidades.
Se ambas as requisições chegam simultaneamente, ambos identificarão 100 unidades no estoque, validarão a venda e, como resultado, você terá vendido 160 unidades e o estoque será atualizado com um saldo de 20 unidades.
Nunca podemos confiar em valores lidos e exibidos na tela, pois entre a exibição e o uso da informação, os dados podem ser alterados por outros usuários.
Se quiser manipular dados como estoque ou saldo de conta corrente, por exemplo, sempre atualize o dado no banco.
Por exemplo, para retirar 80 unidades do produto 1, você pode fazer algo como:
Então, você verifica se uma linha foi atualizada ou não. Se foi atualizada, o saldo já está corrigido e garante que outros usuários não utilizarão o produto retirado do estoque. Caso não seja atualizada nenhuma linha, é sinal de que o produto não existe, ou não possui a quantidade necessária em estoque.
Imagine que seu estoque possui 100 unidades do produto e dois usuários estão tentando comprar 80 unidades.
Se ambas as requisições chegam simultaneamente, ambos identificarão 100 unidades no estoque, validarão a venda e, como resultado, você terá vendido 160 unidades e o estoque será atualizado com um saldo de 20 unidades.
Nunca podemos confiar em valores lidos e exibidos na tela, pois entre a exibição e o uso da informação, os dados podem ser alterados por outros usuários.
Se quiser manipular dados como estoque ou saldo de conta corrente, por exemplo, sempre atualize o dado no banco.
Por exemplo, para retirar 80 unidades do produto 1, você pode fazer algo como:
update estoque set saldo = saldo - 80 where id_produto = 1 and saldo >= 80
Então, você verifica se uma linha foi atualizada ou não. Se foi atualizada, o saldo já está corrigido e garante que outros usuários não utilizarão o produto retirado do estoque. Caso não seja atualizada nenhuma linha, é sinal de que o produto não existe, ou não possui a quantidade necessária em estoque.
Responder
Clique aqui para fazer login e interagir na Comunidade :)