.:: Atualizar estoque com SQL ::.
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
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
Curtidas 0
Respostas
Jeancamila
25/07/2003
Colega,
coloque os campos das tabelas para poder analisar!
Grato
Jean
coloque os campos das tabelas para poder analisar!
Grato
Jean
GOSTEI 0
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;
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_
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
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
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
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