.:: Atualizar estoque com SQL ::.

Delphi

25/07/2003

Ola pessoal tudo bem ?

Estou usando o Banco Paradox e o seguinte código para atualizar meu estoque :

var registro : integer;
begin
REgistro := table1codprodvendas.AsInteger;
table2.First; // coloca no inicio
While not table1.Eof Do // enquanto nao chegar no final
begin
If Table2Codigoprod.Asinteger = Registro then
begin
Table2.Edit;
table2estoque.Asfloat:= table2estoque.Asfloat - table1qtd.Asfloat;
table2.post;
end;
table2.Next; // nao encontrando avança para proximo produto
end;

O sistema compila sem problemas, mas na hora de executar a rotina meu programa trava.
Não seria mais fácil fazer essa rotina em SQL?
Se alguém tiver algum exemplo pra me passar eu agradeceria, ou também se tivesse alguma explicação do porque meu programa trava com essa rotina também seria de grande ajuda.

Agradeço novamente a atenção de vocês. :roll:

[]´s


Shuljenko

Shuljenko

Curtidas 0

Respostas

Jeancamila

Jeancamila

25/07/2003

Colega,

coloque os campos das tabelas para poder analisar!

Grato

Jean


GOSTEI 0
Joilson_gouveia

Joilson_gouveia

25/07/2003

Cara,
O código trava porque a Table1 não tem o NEXT. Fica em Loop...
Verifique se o seu código em vermelho abaixo não estaria errado...
T+

var registro : integer;
begin
REgistro := table1codprodvendas.AsInteger;
table2.First; // coloca no inicio
While not table1.Eof Do // enquanto nao chegar no final
begin
If Table2Codigoprod.Asinteger = Registro then
begin
Table2.Edit;
table2estoque.Asfloat:= table2estoque.Asfloat - table1qtd.Asfloat;
table2.post;
end;
[color=red:1091a40c50]table2.Next; // nao encontrando avança para proximo produto [/color:1091a40c50]end;


GOSTEI 0
_nekinho_

_nekinho_

25/07/2003

Supondo q o nome da tabela do estoque e produtos
e o campo que contem o estoque é ESTOQUE, seria assim

UPDATE produto SET estoque = estoque - :QtdVendida
WHERE CodProduto = :CodProduto;

Simples né?
Na aplicação seria,

QryBaixaEstoque.ParamBy(´QtdVendida´).AsFloat := 10; // 10 vendidos
QryBaixaEstoque.ParamBy(´CodProduto´).AsInteger := 1207;
QryBaixaEstoque.ExecSQL;

QryBaixaEstoque é um componente estoque em q sua propriedade SQL... tem aquela Sql lá d cima =) Simples né? Boa Sorte e divirta-se meu caro.

´Se alguem souber d emprego na area de informatica em Fortaleza-CE me avisa heim =)´ (Eu mesmo) jnelson3@ig.com.br


GOSTEI 0
Shuljenko

Shuljenko

25/07/2003

Mas é o seguinte, até foi falha minha em não ter colocado isso antes, o campo ESTOQUE está na tabela PRODUTOS e é um campo N ( estou usando paradox ) e o campo QTD está na tabela de VENDAS e tbm é um campo N , não estou conseguindo conciliar essas duas tabelas, já que no código que me passaram trabalha somente com uma única tabela? estou certo? porque não estou conseguindo aqui mesmo... Desculpem a insistência pois sou novo no Delphi e estou aprendendo na medida em que estou desenvolvendo o meu sistema.

Agradeço a todos novamente ,

TABELA PRODUTOS

CodigoProd - Numerico
Descricao - Alpha
Unidade - Alpha
Valor - Numerico
Estoque - Numerico
Est_minimo - Numerico

TABELA VENDAS

Codvendas - +
Mesa - Alpha
CodProdVendas - Numerico
QTD - Numerico
CodFunc - Alpha


[]´s


GOSTEI 0
POSTAR