Select ´Data´

Delphi

17/12/2006

boa noite...mais uma vez venho recorrer a ajuda dos ´amigos´ do forum para me ajudarem a resolver um pequeno problema...

não estou conceguindo fazer uma ´busca´ por data...
o código é o seguinte...

Tabela.SQL.Add(´select * from dados.lancamentos_cx where cod_caixa=´+cod+´ and data =´+Dp_Data.Text+´´);

mas ja tentei tbm

Tabela.SQL.Add(´select * from tabela where cod_caixa=´+cod+´ and data :Patam1´);

e sempre retorna erro de sintaxe...oque devo fazer....

Alguem pode me ajudar??

Anderson


Andersonpgsql

Andersonpgsql

Curtidas 0

Respostas

Martins

Martins

17/12/2006

Testei não, mas tenta assim, pode ser q algo esteja errado, mas é +/- isso.
Tabela.SQL.Add(´select * from tabela where cod_caixa =:pcod and data =:pData´); 

Tabela.Sql.ParamByName(´pcod´).AsInteger := suavariável ou edit ...;

Tabela.Sql.ParamByName(´pcod´).AsDate := StrToDate(Editx.text);

Tabela.Open;


Boa sorte!


GOSTEI 0
Andersonpgsql

Andersonpgsql

17/12/2006

desta forma o erro parou...mas não ta buscando nada....vou postar uma parte maior do meu código pra ver se ajuda a alguem me ajudar...o banco que uso é postrgresql e a conexão é odbc e os componentes são query, provaider e clientdataset...

seque abaixo o código...

[b:61f9c9df11] cod:=inttostr(Dados_PT1.CDS_Caixascodigo.Value); Dados_PT1.CDS_Lanc_Cx.Close; begin with Dados_PT1 do begin if LCB_Caixa.Text<>´´ then begin if Cb_Tp.ItemIndex=0 then begin Lancamento_Cx.Close; Lancamento_Cx.SQL.Clear; Lancamento_Cx.SQL.Add(´select * from dados.lancamentos_cx where cod_caixa= :Param1 and data =:Param2´); Lancamento_Cx.Parameters.ParamByName(´Param1´).Value:=strtoint(cod); Lancamento_Cx.Parameters.ParamByName(´Param2´).Value:=StrToDate(Dp_Data.Text); Lancamento_Cx.Open; end; if Cb_Tp.ItemIndex=1 then begin Lancamento_Cx.Close; Lancamento_Cx.SQL.Clear; Lancamento_Cx.SQL.Add(´select * from dados.lancamentos_cx where cod_caixa=:Param0 and data Between :Param1 and :Param2´); Lancamento_Cx.Parameters.ParamByName(´Param0´).Value:=strtoint(cod); Lancamento_Cx.Parameters.ParamByName(´Param1´).Value:=strtodate(Dp_DtPr1.Text); Lancamento_Cx.Parameters.ParamByName(´Param2´).Value:=strtodate(Dp_DtPr2.Text); Lancamento_Cx.Open; end; end; end; end; Dados_PT1.CDS_Lanc_Cx.Open;[/b:61f9c9df11]



GOSTEI 0
Andersonpgsql

Andersonpgsql

17/12/2006

Por favor....alguem me ajude...ja postei o código no qual estou tendo dificuldade...


GOSTEI 0
Facc

Facc

17/12/2006

qual bd vc está usando?

pois dependendo vc terá que tratar a data...
exemplo ´18-dec-2006´



GOSTEI 0
Andersonpgsql

Andersonpgsql

17/12/2006

Estou usando o postgre...tenho outra tabela onde faço isso tbm e da certo...sem erro sem nada...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/12/2006

tente trocar de .Value para .Date ou .DateTime e veja se muda alguma coisa...


GOSTEI 0
Andersonpgsql

Andersonpgsql

17/12/2006

não tem como trocar...não sei se é por causa do banco ou dos componentes...mas só aceita value e asvariante...e não consulta em nem uma das formas...o interessante é que tenho outro form onde faço uma pesquisa bem semelhante e la funciona direitinho...que coisa estranha...

oque fazer?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/12/2006

na verdade é
trocar de .Value para .AsDate ou .AsDateTime


GOSTEI 0
Andersonpgsql

Andersonpgsql

17/12/2006

não aceita, apenas value...ja tentei varias vezes...não sei se é por causa do banco...mas não aceita


GOSTEI 0
POSTAR