Atualização de registro em lançamento avulso
Enviado: Julho 5th, 2011, 11:13 pm
Ola
Gustavo
estou com um erro em uma rotina de lançamento avulso, ela lança corretamente os registro mas quando ocorre um registro que já está gravado não faz a atualização do mesmo.
o produto a ser atualizado tem a chave dupla, ou seja dois campos para compor a chave principal.
pode orientar-me neste problema
Begin
Produto_fil := TabGlobal.DITVENDA.PRO_CODIGO.Conteudo;
Quantid_fil := TabGlobal.DITVENDA.PRO_QUANTIDADE.Conteudo;
Venda_num := TabGlobal.DITVENDA.ECF_NUMERO.Conteudo;
end;
TabGlobal.DITECOMPPROD.filtro.Clear;
tabGlobal.DITECOMPPROD.filtro.Add('CPRO_CODIGO ='+(Produto_fil));
TabGlobal.DITECOMPPROD.AtualizaSql;
tabglobal.DITECOMPPROD.First;
try
while not tabglobal.DITECOMPPROD.Eof do
begin
Pec_Produto := TabGlobal.DITECOMPPROD.CPPRO_CODIGO.Conteudo;
if TabGlobal.DITECOMPPROD.CPRO_CODIGO.Conteudo = Produto_fil then
begin
if Ptabela(TabGlobal.DGRADPROD, ['ECF_NUMERO', 'PRO_CODIGOGR'], [Venda_num, Pec_Produto]) then
begin
// *** Efetuando modificação em caso de ja existir a chave
TABGLOBAL.DGRADPROD.Modifica;
if not Ptabela(TabGlobal.DGRADPROD, ['ECF_NUMERO', 'PRO_CODIGOGR'], [Venda_num, Pec_Produto], 'TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo = TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo + ' +FracToStr(Wtotprodped)) then
MessageDlg('Falha na atualização da Tabela: '+TabGlobal.DGRADPROD.Titulo, mtError, [mbOk], 0);
TabGlobal.DGRADPROD.Refresh;
end;
if not Ptabela(TabGlobal.DGRADPROD, ['ECF_NUMERO', 'PRO_CODIGOGR'], [Venda_num, Pec_Produto]) then
// ********** Efetua a inclusão caso não existe a chave
begin
TABGLOBAL.DGRADPROD.Inclui(Nil);
Wprodped:= TabGlobal.DITECOMPPROD.CPPRO_CODIGO.Conteudo ;
Wquantped:= TabGlobal.DITECOMPPROD.CP_QUANT.Conteudo ;
TabGlobal.DGRADPROD.ECF_NUMERO.Conteudo:= Venda_num ;
TabGlobal.DGRADPROD.PRO_CODIGOGR.Conteudo:= Wprodped;
Wtotprodped:= (Wquantped * Quantid_fil);
TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo:= Wtotprodped ;
TabGlobal.DGRADPROD.Refresh;
end;
end;
TabGlobal.DITECOMPPROD.next;
end;
except
showmessage('Erro de Leitura...');
end;
desde ja agradeço
Gustavo
estou com um erro em uma rotina de lançamento avulso, ela lança corretamente os registro mas quando ocorre um registro que já está gravado não faz a atualização do mesmo.
o produto a ser atualizado tem a chave dupla, ou seja dois campos para compor a chave principal.
pode orientar-me neste problema
Begin
Produto_fil := TabGlobal.DITVENDA.PRO_CODIGO.Conteudo;
Quantid_fil := TabGlobal.DITVENDA.PRO_QUANTIDADE.Conteudo;
Venda_num := TabGlobal.DITVENDA.ECF_NUMERO.Conteudo;
end;
TabGlobal.DITECOMPPROD.filtro.Clear;
tabGlobal.DITECOMPPROD.filtro.Add('CPRO_CODIGO ='+(Produto_fil));
TabGlobal.DITECOMPPROD.AtualizaSql;
tabglobal.DITECOMPPROD.First;
try
while not tabglobal.DITECOMPPROD.Eof do
begin
Pec_Produto := TabGlobal.DITECOMPPROD.CPPRO_CODIGO.Conteudo;
if TabGlobal.DITECOMPPROD.CPRO_CODIGO.Conteudo = Produto_fil then
begin
if Ptabela(TabGlobal.DGRADPROD, ['ECF_NUMERO', 'PRO_CODIGOGR'], [Venda_num, Pec_Produto]) then
begin
// *** Efetuando modificação em caso de ja existir a chave
TABGLOBAL.DGRADPROD.Modifica;
if not Ptabela(TabGlobal.DGRADPROD, ['ECF_NUMERO', 'PRO_CODIGOGR'], [Venda_num, Pec_Produto], 'TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo = TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo + ' +FracToStr(Wtotprodped)) then
MessageDlg('Falha na atualização da Tabela: '+TabGlobal.DGRADPROD.Titulo, mtError, [mbOk], 0);
TabGlobal.DGRADPROD.Refresh;
end;
if not Ptabela(TabGlobal.DGRADPROD, ['ECF_NUMERO', 'PRO_CODIGOGR'], [Venda_num, Pec_Produto]) then
// ********** Efetua a inclusão caso não existe a chave
begin
TABGLOBAL.DGRADPROD.Inclui(Nil);
Wprodped:= TabGlobal.DITECOMPPROD.CPPRO_CODIGO.Conteudo ;
Wquantped:= TabGlobal.DITECOMPPROD.CP_QUANT.Conteudo ;
TabGlobal.DGRADPROD.ECF_NUMERO.Conteudo:= Venda_num ;
TabGlobal.DGRADPROD.PRO_CODIGOGR.Conteudo:= Wprodped;
Wtotprodped:= (Wquantped * Quantid_fil);
TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo:= Wtotprodped ;
TabGlobal.DGRADPROD.Refresh;
end;
end;
TabGlobal.DITECOMPPROD.next;
end;
except
showmessage('Erro de Leitura...');
end;
desde ja agradeço