FireBird SQL Com Datas
:?: 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
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
Curtidas 0
Respostas
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
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
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
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