Campo fecha de tipo carácter

Soy nuevo en foxpro y ahora tengo un sistema en Foxpro 2.6 para DOS.
El problema que tengo es que de una tabla necesito extraer los registros por un rango de fecha que yo ingreso.
Pero la fecha es de un campo tipo carácter de 13 dígitos y cuando ejecuto:
set filter to fecha_ing>="01/01/2002" and fecha_ing<="31/12/2002"
Me arroja registros que no solicito, parece que debo de formatear la fecha de otra forma ya que son de tipo carácter

2 Respuestas

Respuesta
1
Fredy:
Si tienes fechas de tipo carácter y as ordenas veras lo que sucede:
Suponiendo que tienes las fechas:
1 - 01/01/2002
2 - 02/02/2000
3 - 02/01/2002
4 - 01/02/2000
las ordenará de la siguiente forma:
1 - 01/01/2002
4 - 01/02/2000
3 - 02/01/2002
2 - 02/02/2000
Lo cual esta mal para el objetivo que nosotros queremos, pero VFP hace bien el ordenamiento, ya que primero ordena por día, luego por mes y luego por año.
En definitiva, no puedes ordenar una tabla por fecha si la fecha es del tipo carácter.
Solución: Cambia el tipo a formato "Fecha" y si posteriormente tienes que trabajar con las fechas en "Caracter" usa la función:
Mi_Fecha = DTOC(Mi_Fecha)
Si necesitas crear un indice combinado en la tabla en el cual se use una fecha y algun/os otro/s campo/s, usa el siguiente criterio de indexación:
Ejemplo:
STR(Codigo_Cliente,5)+DTOS(Fec_Ingreso_Cliente)
Ejemplo:
DTOS(Nacimiento_Cliente)+Apellido+Nombre
------------ oOo ----------
La otra que puedes hacer es cambiar la instrucción:
set filter to fecha_ing>="01/01/2002" and fecha_ing<="31/12/2002"
por:
set filter to CTOD(fecha_ing)>=CTOD("01/01/2002") and CTOD(fecha_ing)<=CTOD("31/12/2002")
Pero se va a tornar lento ya que tiene que calcular 4 CTOD más el SET FILTER, y en una tabla chica no hay problema, pero en una grande... se muere.
Consejo:
CUANDO LOS CAMPOS DE UNA TABLA SEAN UNA FECHA, DEFINELOS COMO TAL (Para ello se creo este tipo de campo).
Un Saludo
Fernando Alvarez
La Pampa - Argentina
Respuesta
set filter to Allt(fecha_ing)>="01/01/2002" and Allt(fecha_ing)<="31/12/2002"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas