SOMA DE DADOS NO DELPHI - UM NOVO DADO COM O JÁ EXISTENTE NO BD

Delphi

Back-end

Teste de Software

Lógica de programação

DevOps

03/01/2023

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.
Aleksandro Soares

Aleksandro Soares

Curtidas 0

Respostas

Natanael Ferreira

Natanael Ferreira

03/01/2023

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:

.... // o restante do seu código acima 

Edit;
FieldyByName('quantidade ').value := quantidade2; // inseri essa linha, adapte ao nome do seu campo
post;
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

03/01/2023

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:

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.
GOSTEI 0
POSTAR