FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
Consulta con Fechas
holas
Tengo Problemas con una consulta SQL. Utilizo D5 y Tablas Paradox's. La consulta es algo similar a esta: Select * from Facturas Where BetWeen 'Fecha_inicial' and 'Fecha_final' Order BY Fecha Esta consulta intenta traer las facturas comprendidas en estas fechas por el usuario, es decir, el usuario es quien introduce ambas fechas(uso mascaras para evitar errores). Todo parace estar bien, pero el problema llega cuando intento hacer la consulta en meses diferentes, me explico si introdusco 01/04/2003 and 30/04/2003 todo sale bien pero si es de esta manera 01/03/2003 and 08/05/2003 no trae ningun registro. podria alguien ayudarme o explicarme por que sucede esto Gracias por sus atenciones bey bey
__________________
Y recueda que no hay preguntas tontas, si no, tontos que no preguntan. Sr. Genny Cris Morillo Santos Estudiante ING. Sistemas Santo Domingo D.N. |
#2
|
||||
|
||||
Si no me equivoco el problema lo tienes a la hora de la sentencia con la fecha ya que pones dd/mm/aaaa y debería ser mm/dd/aaaa, o por lo menos es la manera de la que yo lo solucione, te mando mi función y prueba
//Cambia el mes y el dia de posición para las sentencias SQL function Cambiafecha(ffecha:tDateTime):string; var fec2:string; Present: TDateTime; Year, Month, Day, Hour, Min, Sec, MSec: Word; begin Present:= ffecha; DecodeDate(Present, Year, Month, Day); fec2:=inttostr(month)+'/'+inttostr(day)+'/'+inttostr(year); result:=fec2; end; Recuerda que en tu fuente iria Query1.sql.clear; Query1.sql.add('Select * from Facturas'); Query1.sql.add('Where BetWeen '+chr(39)+cambiafecha(Fecha_inicial)+chr(39)+' and '+chr(39)+cambiafecha(Fecha_final)+chr(39)); Query1.sql.add('Order BY Fecha'); Un saludo desde Canarias |
#3
|
|||
|
|||
Hola cmgenny:
Creo que lo mejor en estos casos es utilizar una consulta con parámetros, algo asi como: Select * from Facturas Where BetWeen :Fecha_inicial and :Fecha_final Order BY Fecha Donde Fecha_INicial y Fecha_Final son parámetros de tipo TDateTime. Con esto te ahorras el problema del cambio de formato entre Fecha y String y viceversa....
__________________
Salud...os Luis Briceño P. |
#4
|
||||
|
||||
holas
gracias a todos por sus respuestas. Aun tengo algunos problemitas. Okay la tabla en la que hago la consulta es paradox y el campo fecha no esta definido como tipo date, si no, es un Alpha de 12, un string y hago la consulta es con string, por que despues de un tiempo deja de funcionar por completo. Yo se que el problema anda por lo de, dia mes año, mes dia años. pero aun no he podido controlarlo bien. Seria bueno cambiar el tipo de campo de la Tabla? Muchisimas gracias a todos por sus respuestas
__________________
Y recueda que no hay preguntas tontas, si no, tontos que no preguntan. Sr. Genny Cris Morillo Santos Estudiante ING. Sistemas Santo Domingo D.N. |
#5
|
|||
|
|||
Hola:
Cita:
He hecho alguna prueba con Paradox sobre un campo Fecha de tipo string y el comportamiento es totalmente errático cuando le lanzo una consulta, le da igual que haya un valor almacenado como dd/mm/aaaa que como mm/dd/aaaa, y además en el resultado de la consulta influye el formato del primer registro encontrado. Así que no te lo pienses.
__________________
Guía de Estilo |
#6
|
||||
|
||||
Holas
Gracias me llevare de tu consejo andres
__________________
Y recueda que no hay preguntas tontas, si no, tontos que no preguntan. Sr. Genny Cris Morillo Santos Estudiante ING. Sistemas Santo Domingo D.N. |
#7
|
||||
|
||||
Holas
La solucion que he estado aplicando al problema mencionado es la que me da LBriceno y me funciona bien, casi a la perfecion. El bendito casi, bueno casi por que hace las consultas bien menos la de 30 dias atras. me explico si quiero que me traiga exactamente un mes me da error. ejem. si la consulta es 01/01/2003 al 18/06/2003 trae todos los registros exactamente como se los pido. pero si es 18/05/2003 al 18/06/2003 no trae a nadie. Me di cuenta al querer hacer un estado de cuenta que cortara al mes pasado a partir de la fecha de la primera compra. Gracias por todas sus respuestas me han ayudado mucho.
__________________
Y recueda que no hay preguntas tontas, si no, tontos que no preguntan. Sr. Genny Cris Morillo Santos Estudiante ING. Sistemas Santo Domingo D.N. |
#8
|
|||
|
|||
Hola nuevamente:
Te hago un par de consultas: 1. ¿Que tipo de conexión utilizas con la BD, ADO, BDE, eetc? 2. ¿De que tipo de datos son tus parámetros? 3. ¿Te arroja un error o simplemente no te denuelve ningún registro? 4. ¿Tienes registros en el periodo solicitado? te pregunto poruqe me parece bastante raro el error, ya que los campos tipo DateTime son del tipo Float., asi que debes tener en cuenta que los parametros sean de fecha, es decir la hora en 0, es decir, si tienes unregistro el 18/05/2003 15:00:00 y pides los datos desde el 18/05/2003 18:00:00, no te lo va a pescar. Esto es bueno tenerlo en cuenta cuando utilizas el termino 'Between' en la clausula 'Where'.
__________________
Salud...os Luis Briceño P. |
#9
|
||||
|
||||
Respuestas
1 - Utilizo DBE con paradox y D5 2 - En la tabla el campo que utilizo para guardar la fecha es Alpha de 12 y los parametros de la busqueda son dos maskedit del tipo, /99/99/9999 y los guardo en varibles de tipo Tdate para hacer el select en SQL. 3 - Simplemente no me devuelve ningun registro. 4 - Si existen registros en el rango solicitado, como te decia si la consulta es 01/05/2003 al 20/06/2003, la hace bien pero si es 20/05/2003 al 20/05/2003 no me devuelve ningun valor. Gracias por tu ayuda.
__________________
Y recueda que no hay preguntas tontas, si no, tontos que no preguntan. Sr. Genny Cris Morillo Santos Estudiante ING. Sistemas Santo Domingo D.N. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema consulta con fechas ... | serhasae | Varios | 5 | 24-01-2006 07:13:10 |
Problemas con una consulta de fechas | tiagor64 | SQL | 6 | 08-02-2005 20:52:04 |
Consulta por fechas | omy | SQL | 2 | 16-12-2003 19:40:14 |
Consulta sobre fechas | Novás | SQL | 1 | 18-10-2003 13:58:32 |
Ayuda con consulta de fechas !!! | kamezen | SQL | 1 | 12-08-2003 01:17:30 |
|