Alberto Mota Postado Dezembro 28, 2009 Denunciar Share Postado Dezembro 28, 2009 Prezados colegas, acredito que esse problema é a culminação de um trabalhode boleto bancário, onde se deve quitar os boletos liquidados pelo Banco.Depois de muita procura, não encontrei a solução:Ao clicar surge a mensagem de erro: Incorrect syntax near TblMovimentação.A mensagem é clara, mas não consigo resolver. Eis o código completo:beginAdoQuery1.Close;AdoQuery1.sql.clear;AdoQuery1.sql.add ('select * from TblArqRetorno ');AdoQuery1.Open;if not (AdoQuery1.IsEmpty) thenbeginwith AdoQuery2 dobeginclose;AdoQuery2.sql.clear;AdoQuery2.sql.add (' Update TblMovimentacao TblMovimentacao.vrpago = AdoQuery1.vr, ') ;AdoQuery2.sql.add (' TblMovimentacao.dtpgto = AdoQuery1.dt ');AdoQuery2.sql.add (' FROM dbo.TblMovimentacao ');AdoQuery2.sql.add (' INNER JOIN TblArqRetorno ON TblMovimentacao.seq = TblArqRetorno.numerodoc ');AdoQuery2.open;showmessage('boletos quitados com sucesso!!!');end;end;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Dezembro 28, 2009 Denunciar Share Postado Dezembro 28, 2009 Olá, tive muitos problemas assim pois usava muitos sql.add, no entanto tente colocar tudo junto..Assim:begin AdoQuery1.Close; AdoQuery1.sql.clear; AdoQuery1.sql.add ('select * from TblArqRetorno '); AdoQuery1.Open; if not (AdoQuery1.IsEmpty) then begin with AdoQuery2 do begin close; AdoQuery2.sql.clear; AdoQuery2.sql.add ('Update TblMovimentacao TblMovimentacao.vrpago = AdoQuery1.vr, ' + 'TblMovimentacao.dtpgto = AdoQuery1.dt ' + 'FROM dbo.TblMovimentacao ' + 'INNER JOIN TblArqRetorno ON TblMovimentacao.seq = TblArqRetorno.numerodoc '); AdoQuery2.open; showmessage('boletos quitados com sucesso!!!'); end; end; end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Dezembro 28, 2009 Autor Denunciar Share Postado Dezembro 28, 2009 Prezado Douglas, obrigado pela atenção.Meu código estava incompleto e tambem adaptei conforme sua sugestão.Entretando surge uma nova mensagem:"The multi-part identifier AdoQuery1.vr could not be bound"Alterei a linha para AdoQuery2.sql.add ('Update TblMovimentacao Set TblMovimentacao.vrpago = 200, ' + ...E a mensagem de erro foi para o campo dt da linha seguinte:The multi-part identifier AdoQuery1.dt could not be boundAcredito que o problema é no parametro da tabela de origem que quero manipular, no caso AdoQuery1.Segue o código que alterei. Um abraço. AdoQuery1.Close;AdoQuery1.sql.clear;AdoQuery1.sql.add ('select * from TblArqRetorno ');AdoQuery1.Open;if not (AdoQuery1.IsEmpty) thenbeginwith AdoQuery2 dobeginclose;AdoQuery2.sql.clear;AdoQuery2.sql.add ('Update TblMovimentacao Set TblMovimentacao.vrpago = AdoQuery1.vr, ' +'TblMovimentacao.dtpgto = AdoQuery1.dt ' +'FROM dbo.TblMovimentacao ' +'INNER JOIN TblArqRetorno ON TblMovimentacao.seq = TblArqRetorno.numerodoc ');AdoQuery2.open;showmessage('boletos quitados com sucesso!!!');end;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Dezembro 28, 2009 Autor Denunciar Share Postado Dezembro 28, 2009 Resolvi meu problema. E foi até relativamente fácil.Como estou utilizando o sql server criei uma stored procedure.USE [secraso]GO/****** Object: StoredProcedure [dbo].[sp_quita] Script Date: 12/28/2009 18:48:54 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[sp_quita]ASUPDATE dbo.TblMovimentacaoSET dbo.TblMovimentacao.vrpago = dbo.TblArqRetorno.vr,dbo.TblMovimentacao.dtpgto = dbo.TblArqRetorno.dtFROM dbo.TblMovimentacaoINNER JOIN dbo.TblArqRetorno ON dbo.TblMovimentacao.seq = dbo.TblArqRetorno.numerodocE depois foi só chama-la no Delphi.ADOStoredProc1.Close;ADOStoredProc1.ExecProc;showmessage('boletos quitados com sucesso!!!');Douglas, obrigado pela atenção Bom, pessoal, Feliz Ano Novo a todos! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Alberto Mota
Prezados colegas, acredito que esse problema é a culminação de um trabalho
de boleto bancário, onde se deve quitar os boletos liquidados pelo Banco.
Depois de muita procura, não encontrei a solução:
Ao clicar surge a mensagem de erro: Incorrect syntax near TblMovimentação.
A mensagem é clara, mas não consigo resolver.
Eis o código completo:
begin
AdoQuery1.Close;
AdoQuery1.sql.clear;
AdoQuery1.sql.add ('select * from TblArqRetorno ');
AdoQuery1.Open;
if not (AdoQuery1.IsEmpty) then
begin
with AdoQuery2 do
begin
close;
AdoQuery2.sql.clear;
AdoQuery2.sql.add (' Update TblMovimentacao TblMovimentacao.vrpago = AdoQuery1.vr, ') ;
AdoQuery2.sql.add (' TblMovimentacao.dtpgto = AdoQuery1.dt ');
AdoQuery2.sql.add (' FROM dbo.TblMovimentacao ');
AdoQuery2.sql.add (' INNER JOIN TblArqRetorno ON TblMovimentacao.seq = TblArqRetorno.numerodoc ');
AdoQuery2.open;
showmessage('boletos quitados com sucesso!!!');
end;
end;
end;
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.