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´.


Kaniggia

Kaniggia

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar