Fórum Problemas para gravar no banco #192345
02/11/2003
0
olá, tenho no meu banco uma tabela de cadastro de produtos e uma para estorno de produtos, quando faço um estorno gostaria de tambem alterar a o campo quantidade da tabela produto de acordo com a quantidade da tabela de estorno, como posso fazer isso, utilizo interbase, estou fazendo assim, mas esta dando um erro.
begin
DmlPrincipal.TBESTORNO_PRODUTOS.Open;
DmlPrincipal.TBESTORNO_PRODUTOS.Insert;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[0].Value:= 0;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[1].Value:= EdPCod.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[2].Value:= EdNF.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[3].Value:= StrToFloat(EdQuantidade.Text);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[4].Value:= StrToDate(LbDataNow.Caption);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[5].Value:= ´ENTRADA´;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[6].Value:= MmMotivo.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Post;
DmlPrincipal.TBESTORNO_PRODUTOS.Close;
DmlPrincipal.TBPRODUTOS.Open;
with DmlPrincipal.QRYPRODUTOS1 do
begin
Close;
with SQL do
begin
Clear;
Add (´SELECT *´);
Add (´FROM PRODUTOS´);
Add (´WHERE PCOD = :PCod´);
end;
ParamByName(´PCod´).Value:= EdPCod.Text;
Open;
end;
DmlPrincipal.QRYPRODUTOS1.Fields[5].Value:= DmlPrincipal.QRYPRODUTOS1.Fields[5].Value + StrToFloat(EdQuantidade.Text);
DmlPrincipal.QRYPRODUTOS1.Edit;
DmlPrincipal.TBPRODUTOS.Close;
Erro: Project raised exception class EIBClientError with message ´Not in edit mode´.
begin
DmlPrincipal.TBESTORNO_PRODUTOS.Open;
DmlPrincipal.TBESTORNO_PRODUTOS.Insert;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[0].Value:= 0;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[1].Value:= EdPCod.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[2].Value:= EdNF.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[3].Value:= StrToFloat(EdQuantidade.Text);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[4].Value:= StrToDate(LbDataNow.Caption);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[5].Value:= ´ENTRADA´;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[6].Value:= MmMotivo.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Post;
DmlPrincipal.TBESTORNO_PRODUTOS.Close;
DmlPrincipal.TBPRODUTOS.Open;
with DmlPrincipal.QRYPRODUTOS1 do
begin
Close;
with SQL do
begin
Clear;
Add (´SELECT *´);
Add (´FROM PRODUTOS´);
Add (´WHERE PCOD = :PCod´);
end;
ParamByName(´PCod´).Value:= EdPCod.Text;
Open;
end;
DmlPrincipal.QRYPRODUTOS1.Fields[5].Value:= DmlPrincipal.QRYPRODUTOS1.Fields[5].Value + StrToFloat(EdQuantidade.Text);
DmlPrincipal.QRYPRODUTOS1.Edit;
DmlPrincipal.TBPRODUTOS.Close;
Erro: Project raised exception class EIBClientError with message ´Not in edit mode´.
Kaniggia
Curtir tópico
+ 0
Responder
Posts
02/11/2003
Edilcimar
coloque as linhas em ordem, vc está mandando trocar o valor antes do comando de edit
Responder
Gostei + 0
02/11/2003
Kaniggia
Olá fiz a seguinte alteração e funcionou:
DmlPrincipal.TBESTORNO_PRODUTOS.Open;
DmlPrincipal.TBESTORNO_PRODUTOS.Insert;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[0].Value:= 0;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[1].Value:= EdPCod.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[2].Value:= EdNF.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[3].Value:= StrToFloat(EdQuantidade.Text);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[4].Value:= StrToDate(LbDataNow.Caption);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[5].Value:= ´ENTRADA´;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[6].Value:= MmMotivo.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Post;
DmlPrincipal.TBESTORNO_PRODUTOS.Close;
DmlPrincipal.TBPRODUTOS.Open;
with DmlPrincipal.QRYPRODUTOS1 do
begin
Close;
with SQL do
begin
Clear;
Add (´SELECT *´);
Add (´FROM PRODUTOS´);
Add (´WHERE PCOD = :PCod´);
end;
ParamByName(´PCod´).Value:= EdPCod.Text;
Open;
end;
DmlPrincipal.TBPRODUTOS.Edit;
DmlPrincipal.TBPRODUTOS.Fields[5].Value:= DmlPrincipal.TBPRODUTOS.Fields[5].Value + StrToFloat(EdQuantidade.Text);
DmlPrincipal.TBPRODUTOS.Post;
DmlPrincipal.TBPRODUTOS.Close
Mas na tabela produto a quantidade alterada é sempre a do primeiro registro, como faço para que a alteração seja no registro retornado pela query, ou seja, preciso mover o ponteiro da tabela produtos para o registro encontrado na consulta da query...desde ja agradeço....KANIGGIA
DmlPrincipal.TBESTORNO_PRODUTOS.Open;
DmlPrincipal.TBESTORNO_PRODUTOS.Insert;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[0].Value:= 0;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[1].Value:= EdPCod.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[2].Value:= EdNF.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[3].Value:= StrToFloat(EdQuantidade.Text);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[4].Value:= StrToDate(LbDataNow.Caption);
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[5].Value:= ´ENTRADA´;
DmlPrincipal.TBESTORNO_PRODUTOS.Fields[6].Value:= MmMotivo.Text;
DmlPrincipal.TBESTORNO_PRODUTOS.Post;
DmlPrincipal.TBESTORNO_PRODUTOS.Close;
DmlPrincipal.TBPRODUTOS.Open;
with DmlPrincipal.QRYPRODUTOS1 do
begin
Close;
with SQL do
begin
Clear;
Add (´SELECT *´);
Add (´FROM PRODUTOS´);
Add (´WHERE PCOD = :PCod´);
end;
ParamByName(´PCod´).Value:= EdPCod.Text;
Open;
end;
DmlPrincipal.TBPRODUTOS.Edit;
DmlPrincipal.TBPRODUTOS.Fields[5].Value:= DmlPrincipal.TBPRODUTOS.Fields[5].Value + StrToFloat(EdQuantidade.Text);
DmlPrincipal.TBPRODUTOS.Post;
DmlPrincipal.TBPRODUTOS.Close
Mas na tabela produto a quantidade alterada é sempre a do primeiro registro, como faço para que a alteração seja no registro retornado pela query, ou seja, preciso mover o ponteiro da tabela produtos para o registro encontrado na consulta da query...desde ja agradeço....KANIGGIA
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)