Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2003
Avatar de cmgenny
cmgenny cmgenny is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo
Posts: 71
Poder: 21
cmgenny Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 09-05-2003
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
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
Responder Con Cita
  #3  
Antiguo 11-05-2003
LBriceno LBriceno is offline
Miembro
 
Registrado: may 2003
Ubicación: Viña del Mar, Chile
Posts: 21
Poder: 0
LBriceno Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 07-06-2003
Avatar de cmgenny
cmgenny cmgenny is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo
Posts: 71
Poder: 21
cmgenny Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 07-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Cita:
Seria bueno cambiar el tipo de campo de la Tabla?
Si está en tu mano, ni te lo pienses. El tiempo que pierdas reajustando la aplicación lo ganarás a la larga.

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
Responder Con Cita
  #6  
Antiguo 09-06-2003
Avatar de cmgenny
cmgenny cmgenny is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo
Posts: 71
Poder: 21
cmgenny Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 18-06-2003
Avatar de cmgenny
cmgenny cmgenny is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo
Posts: 71
Poder: 21
cmgenny Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 19-06-2003
LBriceno LBriceno is offline
Miembro
 
Registrado: may 2003
Ubicación: Viña del Mar, Chile
Posts: 21
Poder: 0
LBriceno Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 20-06-2003
Avatar de cmgenny
cmgenny cmgenny is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo
Posts: 71
Poder: 21
cmgenny Va por buen camino
Post

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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 04:21:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi