PDA

Ver la Versión Completa : Problemas al extraer fechas con paradox


Coco_jac
20-04-2006, 01:13:57
Hola amigos del Foro, necesito su ayuda.
Resulta que estoy trabajando Con Paradox y necesito poder filtar a partir de fechas establecidas, el campo fecha guarda la hora y fecha. En mi consulta deseo obtener los regsitros cuyos campo observacion tienen unas palabras buscadas, esto a partir de las fechas, esto involucra 2 tablas, las cuales uana de ellas OMIN02, guarda estas "observaciones", que es lo que busco y esta enlazada a partir de una campo (Nun_reg), bueno son alrdedor de 70 registros de los años 2002-2003, que cumplen, sin incluir las fechas establecidas, pero cuando quiero filtar por fechas, resulta que no respeta
las fechas que doy, creo que se me escapa algo.
Deseo obtener
lo hago asi :



SELECT MINV02.CLV_ART AS CODIGO, MINV02.FECHA_DOCU AS FECHA, MINV02.REFER AS REFERENCIA,
MINV02.TIPO_MOV AS MOVIMIENTO,MINV02.CANT AS CANTIDAD,MINV02.UNI_VENTA AS MEDIDA,MINV02.ALMACEN,OMIN02.X_OBSER FROM MINV02 INNER JOIN OMIN02 ON MINV02.NUM_REG=OMIN02.NUM_REG
WHERE
(EXTRACT(YEAR FROM MINV02.FECHA_DOCU)>=2002 AND EXTRACT(YEAR FROM MINV02.FECHA_DOCU)<=2003) AND
(EXTRACT(MONTH FROM MINV02.FECHA_DOCU)>=1 AND EXTRACT(MONTH FROM MINV02.FECHA_DOCU)<=11) AND
(EXTRACT(DAY FROM MINV02.FECHA_DOCU)>=1 AND EXTRACT(DAY FROM MINV02.FECHA_DOCU)<=18)
AND
(OMIN02.X_OBSER LIKE '%CAMBIO X GARANTIA%' OR OMIN02.X_OBSER LIKE '%CAMBIO X GARANTIA%')










Como mencione existe registros del 2002 al 2003, cuando filtro entre fechas del mismo año bien , pero cuando lo haga entre 2002-2003 no filtra las del 2002.
Espero sus comentarios, acerca de este problema.
O existira alguna manera de extraer la fecha sin tener que extarer por partes el año el mes y el dia
Gracias

pijo
20-04-2006, 20:06:24
Piensa en que haria el ordenador cuando filtras por ejemplo:
Fecha desde: 15/11/2002
Fecha hasta: 05/03/2003

Por ejemplo la consulta que pones en el foro no daria ningun registro nunca. Tienes un problema en la consulta, lo que yo haria (contando que tienes el problema de que el campo es un campo DateTime) es hacer la consulta normal

FECHA > '11/14/2002' AND FECHA < 06/03/2003

cuando introduces la fecha desde i la fecha hasta, restarle a la fecha desde un dia i poner el comparador de mayor que i a la fecha hasta sumarle un dia i poner como comparador el menor que. Siempre sin el igual.

Espero haberte servido de ayuda
ánims

Coco_jac
20-04-2006, 21:47:51
Hola y gracias por responder, Estoy trabajando con Paradox y no creo q acepte como mencionas, pero igual lo probe y me lanza el error :

Type mistmatch in expression


SELECT MINV02.CLV_ART AS CODIGO, MINV02.FECHA_DOCU AS FECHA, MINV02.REFER AS REFERENCIA, MINV02.TIPO_MOV AS MOVIMIENTO,MINV02.CANT AS CANTIDAD,MINV02.UNI_VENTA AS MEDIDA,MINV02.ALMACEN,OMIN02.X_OBSER FROM
MINV02 INNER JOIN OMIN02 ON MINV02.NUM_REG=OMIN02.NUM_REG
WHERE
(MINV02.FECHA_DOCU>'18/12/2002' and MINV02.FECHA_DOCU<'18/10/2003')
AND
(OMIN02.X_OBSER LIKE '%CAMBIO X GARANTIA%' OR
OMIN02.X_OBSER LIKE '%CAMBIO X GARANTIA%' OR
OMIN02.X_OBSER LIKE '%CAMBIO POR GARANTIA%')

Espero sus comentarios amigos.

gcaffe
26-04-2006, 11:17:13
En Paradox si pones la fecha con codigo duro, es decir sin parámetros, tiene el formato MM/DD/AAAA, ejemplo:
Código SQL [-] (http://www.clubdelphi.com/foros/#)SELECT * FROM Tabla
WHERE Fecha >= '10/30/2005' AND Fecha <= '12/01/2006'



Esta sentencia te selecciona entre las fechas 30/10/2005 hasta 01/12/2006,

Ahora si armas el SQL con parámetros tendras que poner algo asi:
Código Delphi [-] (http://www.clubdelphi.com/foros/#)with SQLSTR do begin SQL.Clear; SQL.Add('SELECT * FROM Tabla');
SQL.Add('WHERE Fecha >= ' + @FechaIni + ' AND Fecha <= ' + @FechaFin);
// donde luego pones los valores del parámetro
Parameters.Byname('@FechaIni').AsDate := StrToDate('30/10/2005');
etc..
end;


Espero que te de una idea.