erro filtrar data

Delphi

10/07/2008

ola pessoal sou meio novato no delphi to fazendo um rpojeto no delphi 7 componente zeoslib firebird 2.0

fiz uma função para filtrar data por data iniical e final e um combobox onde sera tambem pesquisado o status do cliente esse e um caontas a pagar
mas quando faço a filtragem da erro e esse erro acontece sempre quando filtro com uma data em que o dia e maior que 13 a filtragem e o seguinte codigo

ZQUERY1.SQL.Clear;
ZQUERY1.SQL.Add(´SELECT * FROM RECEBER WHERE DataINI BETWEEN ´ + QuotedStr(MASKEDIT1.Text) + ´ AND ´ + QuotedStr(MASKEDIT2.Text)+´AND STATUS =´´PAGO´´´);
ZQUERY1.Open;

o erro q ocorre e o seguinte

SQL ERRO CONVERSION ERRO FROM STRING 18/07/2008 ERRO CODE OVERFLON OCCURRED DURING DATA TYPE CONVERSION

O QUE SERA ISSO JA ACONTECEU COM ALGUEM OU FIREBIRD É PROBLEMATICAO ASSIM MESMO?


Keliniciante

Keliniciante

Curtidas 0

Respostas

Paulo

Paulo

10/07/2008

Passe a data assim:
´2008-18-07´, entre aspas e ver se funciona ou assim:
´07-18-2008´


GOSTEI 0
Altingon

Altingon

10/07/2008

Eu sempre uso assim:

ZQUERY1.SQL.Clear;
ZQUERY1.SQL.Add(´SELECT * FROM RECEBER WHERE DataINI BETWEEN :dataini AND :datafim AND STATUS =´´PAGO´´´);
Zquery1.parambyname(´dataini´).asdate := strtodate(MASKEDIT1.Text);
Zquery1.parambyname(´datafim´).asdate := strtodate(MASKEDIT2.Text);
ZQUERY1.Open; 



GOSTEI 0
Luiz Henrique

Luiz Henrique

10/07/2008

Bom dia KelIniciante

Resolvi estes problemas de passagem de dados para Instrucoes-Firebird com funcoes especificas de conversao, inteiro, double(Real), strings, datas e etc...e nao tive mais dor de cabeca.
Para ilustracao da funcao conversao data(parametro tipo String, tenho por exemplo uma para parametro tipo TDateTime), fiz assim:

function fmtCToDtFB(__data: string): string;
begin
(* A funcao myctod(minha), testa convertendo a data...
para tipo TDateTime...
Sem Data, para nao dar erro, podera passar ´Null´
Logicamente, dependendo do objetivo, podera colocar constraint aqui
e retornar alguma mensagem, exceçao...fique a vontade, este exemplo
e uma ilustracao para mostrar a conversao que uso funcional
*)
if myctod(__data) = 0 then
result:= ´Null´
else
result:= Quotedstr(FormatDateTime(´mm/dd/yyyy´,myctod(__data)));
end;

Retornando sempre: ´mm/dd/yyyy´, padrao FB para datas corretas ou Null se nao informado a data.

Use la na tua SQL:
....Data = ´+fmtCToDtFB(eddata.edittext)...

Nao ficara mais dependente de configuracoes tipo windows por exemplo, ficara sempre com retorno correto.

Espero que te ajude, T+


GOSTEI 0
POSTAR