PDA

Ver la Versión Completa : Error --->1005/20/03 no es fecha válida


TIKIMORE
20-06-2003, 13:19:07
Hola a tod@s.
Este es el erro que me da cuando ejecuto la siguiente instrucción SQL:

Padre.Query1.CLOSE;
Padre.Query1.sql.clear;
Padre.Query1.SQL.Add('SELECT * FROM Parturientas WHERE FECHA>=:Desde and FECHA<=:Hasta'+
' ORDER BY ORDER BY Parturientas.[Nº Hª]');
Padre.Query1.ParamByName('Desde').ASdate:=strtodate(DBEdit1.TEXT);
Padre.Query1.ParamByName('Hasta').ASdate:=strtodate(DBEdit2.TEXT);
Padre.Query1.PREPARE;
Padre.Query1.Active:=TRUE;

Donde Padre es el Form Padre y el query1 pertenece al padre.

La llamada la hago desde otro formulario donde hay dos DBEdit conectados a la tabla "Filtros Fechas" con campos de tipo fecha.

El problema esta en que la fecha es 10/05/2003 y me recoge 1005/20/03.

A qué se debe y como puedo solucionarlo?
Gracias de antemano.
Saludosssssssssssssss.

andres1569
20-06-2003, 14:33:19
No sé por qué razón te toma esa fecha, salvo que en el DBEdit no esté bien escrito. Ya que se trata de un control DBAware, ¿has probado de hacer, en vez de StrToDate(DBEdit1.Text), esto otro DBEdit1.Field.AsDate? Mira a ver si te devuelve la misma fecha que antes.

Sea como sea, habría que averiguar por qué te devuelve 1005/20/03 en vez de 05/20/2003, parece indicar que toma el año del primer valor, ¿has revisado que las variables DataSeparator y ShortDateFormat sean las correctas?

Son algunas ideas, a ver si es eso.

__cadetill
20-06-2003, 15:48:30
dos cosillas

podria ser por cuestion de formato o porque no sea correcto el separador de fechas "/" y espere un "-". Prueba lo que te comenta andres1569 de acceder al Field directamente. Si no te funcionara, podrias mirar de hacer algo como esto

Padre.Query1.ParamByName('Desde').AsString := FormatDateTime('dd-mm-yyyy', DBEdit1.Field.AsDate);

Eso si, deberias emplear el formato de fecha que necesitas (en IB/FB es 'mm-dd-yyyy', pero en otros sistemas como DB2 es 'yyyy-mm-dd')

La segunda cosilla es que en el SQL en lugar de poner "campo >= fechaIni and campo <= fechaFin" puedes poner "campo between fechaIni and fechaFin"

Espero te sirva

TIKIMORE
20-06-2003, 17:09:33
Hola.

Bueno, ya he logrado solucionarlo a base de hacer pruebas.
Me parece que el error estaba en la mascara de entrada que tenía en propiedades del campo del Query.

La solución la he encontrado con:

Padre.Query1.ParamByName('Desde').AsString:=DBEdit1.text;
Padre.Query1.ParamByName('Hasta').AsString:=DBEdit2.text;

No crei que funcionaría porque tanto en la base de datos como en las propiedades de campo el tipo de dato es Date pero he ahí que me ha dejado.
No me pregunten el por qué.
¿Puede ser por la máscara de entrada en las propiedades del campo? No lo sé.

Saludosssssssssssss.