Consultas entre datas utilizado dbexpress
19/06/2008
0
Tenho um sistema em delphi 7 com interbase e utilizo componente dbxpress. Estou tendo problemas ao realizar consultas entre datas. Qual o componente devo utilizar. Tentei SIMPLEDATASET, SQLDATASET e SQLQUERY mas ao executar o comando OPEN aparece a seguinte mensagem de erro:
unassigned code.
Segue abaixo o código:
with SQLQuery_aniversariantes do
begin
sql.Clear;
sql.Add(´select * from clientes where dtnasc BETWEEN :data1 and :data2´);
ParamByName(´data1´).AsDateTime := de_inicial.Date;
parambyname(´data2´).AsDateTime := de_final.Date;
open;
end;
Sem mais agradeço antecipadamente,
Gilson Heleno
Ghsol
Posts
19/06/2008
Eltoncarbo
19/06/2008
Paullsoftware
with SQLQuery_aniversariantes do begin close; sql.Clear; sql.Add(´select * from clientes where dtnasc BETWEEN :data1 and :data2´); ParamByName(´data1´).AsDateTime := de_inicial.Date; parambyname(´data2´).AsDateTime := de_final.Date; open; end;
você também pode substituir o [b:22a07c8229]Sql.add[/b:22a07c8229] pelo [b:22a07c8229]Sql.Text[/b:22a07c8229] espero ter ajudado! :wink:
19/06/2008
Paullsoftware
with SQLQuery_aniversariantes do begin close; sql.Clear; sql.Add(´select * from clientes where dtnasc BETWEEN :data1 and :data2´); ParamByName(´data1´).AsDateTime := de_inicial.Date; parambyname(´data2´).AsDateTime := de_final.Date; open; end;
você também pode substituir o [b:b363ede56e]Sql.add[/b:b363ede56e] pelo [b:b363ede56e]Sql.Text[/b:b363ede56e] espero ter ajudado! :wink:
25/06/2008
Ghsol
Mais uma vez obrigado pela atenção! O problema permanece, inclusive já tinha tentado dessa forma que vc mencionou. Tentei também usando os parametros como string conforme abaixo mas dá erro de conversão de string.
ParamByName(´data1´.asstring:= de_inicial.text
parambyname(´data2´).AsString := de_final.text;
O campo na base interbase que fica armazenada as é do tipo Date. Devido a esse problema seria o caso de usando o tipo VARCHAR para armazenar as datas para evitar esse problema?
Sem mais fico no aguardo de mais uma dica.
Obrigado
Gilson Heleno
25/06/2008
Martins
with SQLQuery_aniversariantes do begin close; sql.Clear; sql.Add(´select * from clientes where dtnasc BETWEEN :data1 and :data2´); ParamByName(´data1´).AsDate := de_inicial.Date; parambyname(´data2´).AsDate := de_final.Date; open; end;
Caso apresente o mesmo erro, coloque a estrutura de sua tabela para q possamos analisar.
Boa sorte.
25/06/2008
Emerson Nascimento
assim:
ParamByName(´data1´).AsSQLTimeStamp := DateTimeToSQLTimeStamp( de_inicial.Date );
parambyname(´data2´).AsSQLTimeStamp := DateTimeToSQLTimeStamp( de_final.Date );
para usar a função DateTimeToSQLTimeStamp() é necessário adicionar a unit SQLTimSt à cláusula uses.
Clique aqui para fazer login e interagir na Comunidade :)