[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