[firebase-br] Amigos da lista como substituir a variavel pelo conteudo da variavel

Fausto fausto.s.a em uol.com.br
Dom Jan 13 22:08:44 -03 2008


João Carlos de Abreu Lopes escreveu:
>     tenho uma rotinas em sql que transformo a date em string
>     e apos executo o sql, o meu problemas está na hora
> 
>     dinicial:= formatdatetime('mm/dd/yyyy',date);
>     dfinal := formatdatetime('mm/dd/yyyy',date);
> 
>     datamodule2.adoquerypacnotas.SQL.text := 'select *  from pacn'+inttostr(vano_baixa)+' where proto like '''+datamodule2.ADOQuerysame_pro.fieldbyname('proto').asstring+''' and data       between # &dinicial# and  # &dfinal order by data desc';
> 
> meu problema está em substituir na linha sql o conteudo da variavel dinicial que é 01/10/2007 e dfinal que é 31/10/2007,
> 
> 
> t+
> 
> um abraço a todos
Vamos lá João..
Eu faço assim:
with DataModule2 do
begin
   AdoQueryPacNotas.Sql.Text := 'SELECT * '+#13#10+
   'FROM'+#13#10+
   '  PACN'+IntToStr(VANO_BAIXA)+#13#10+
   'WHERE PROTO LIKE '+
   QuotedStr(AdoQuerySampe_Pro.FieldByName('PROTO').AsString)+#13#10+
   'AND Data between ('+ QuotedStr(DInicial) +
   ' AND ' +QuotedStr(DFinal)+')'+#13#10+
   'ORDER BY DATA DESC'
end;
Vai uma dica, procure dar nomes mais curtos aos DataModules, por exemplo
ao invés de DataModule2 opte por DM2.
Também dê uma olhada na função que utilizei QuotedStr no help do delphi.
Algumas pessoas questionam ou torcem o nariz para o #13#10, o problema é 
caso você precise ver o que esta sendo gerado no sql, salvando em um 
arquivo texto por exemplo, assim fica mais fácil de se depurar, caso 
contrário vai aparecer tudo em uma única linha.
Espero ter ajudado
-- 
Fausto Alves
Franca - SP
Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird





Mais detalhes sobre a lista de discussão lista