erro filtrar data
10/07/2008
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
Posts
10/07/2008
Paulo
´2008-18-07´, entre aspas e ver se funciona ou assim:
´07-18-2008´
10/07/2008
Altingon
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;
11/07/2008
Luiz Henrique
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+
Clique aqui para fazer login e interagir na Comunidade :)