FireBird SQL Com Datas

Delphi

05/01/2006

:?: Olá a todos.
Uso FireBird + Delphi7 + ClientDataSet, com campo data da tabela definido como DATE. Verifiquei diversas dicas no Forum, mas não resolvi este problema. No Form uso MaskEdit, configurações regionais está DD.MM.AAAA, mas a rotina abaixo não filtra nem ordena nada.

M_Aux := ´SELECT * FROM PEDIDOSMESTRE A, CLIENTES B ´;

M_Aux := M_Aux + ´WHERE (A.Cli_Cod = B.Cli_Cod) ´;

Dmdados.SqlDtStPedidosMestre.CommandText := M_Aux;

// Data de Entrega
If EdtDtIt.Text = ´ / / ´ then
Begin
M_Aux := M_Aux + ´ And A.Ped_DtEntrega <= ´ + FormatDateTime(´DD.MM.YYYY´, StrToDate(EdtDtF.Text));
end
else
Begin
M_Aux := M_Aux + ´ And A.Ped_DtEntrega >= ´ + FormatDateTime(´DD.MM.YYYY´, StrToDate(EdtDtI.Text));
M_Aux := M_Aux + ´ And A.Ped_DtEntrega <= ´ + FormatDateTime(´DD.MM.YYYY´, StrToDate(EdtDtF.Text));
end;

M_Aux := M_Aux + ´ Order By ´ + A.Ped_DtEntrega + ´ Asc´;

dmdados.CliDtStPedidosMestre.Open;

Obrigado
Neto


Neto

Neto

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

05/01/2006

No Firebird, as datas devem ser passadas como MM/DD/AAAA. Para evitar esse tipo de problema, use parâmetros para passar o valor.


GOSTEI 0
Neto

Neto

05/01/2006

Obrigado pela colaboração.
Em alguns testes que fiz, usei parametros com FormatDateTime(...), mas não deu certo.
Poderia me dar um exemplo, usando este caso. Fico agradecido.
Abraços
Neto


GOSTEI 0
Gandalf.nho

Gandalf.nho

05/01/2006

Veja se isso dá uma idéia:

Query1.CommandText := ´SELECT * FROM tabela WHERE campo_data = :data´;
Query1.ParamByName(´data´).AsDate := valor_data;
Query1.Open;



GOSTEI 0
POSTAR