FoxPro/Visual FoxPro - Buscar fechas en una tabla con IF

   
Vista:

Buscar fechas en una tabla con IF

Publicado por Néstor (23 intervenciones) el 29/04/2016 04:31:50
Buenas noches estimados... a ver si me pueden ayudar... tengo una gran duda cuando hago una busqueda de una fecha en una tabla.. les muestro las lineas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
***************************************
CLOSE ALL
SET CENTURY ON
***********************************************************************************
USE "c:\sis_g\base de datos\mcaja.dbf"
******************************************************
*fecha_inicial=CTOD("04/18/2016")
*fecha_final=CTOD("04/18/2016")
 
*	APPEND FROM "c:\sis_g\base de datos\movi\movi.dbf" FOR fecha=>fecha_inicial and fecha=<fecha_final
*******************************************************************************************************************
SELECT mcaja
fecha_inicial=CTOD("08/18/2016")
fecha_final=CTOD("08/18/2016")
IF fecha=fecha_inicial AND fecha=fecha_final
	*SET FILTER TO fecha=>fecha_inicial and fecha=<fecha_final    && SI HAGO ESTO FUNCIONA
   	eMessageTitle = 'Atención.....'
	eMessageText = 'no EXISTE INFORMACION CON ESA FECHA'
	nDialogType = 0+64
		nAnswer=MESSAGEBOX(eMessageText,nDialogType,eMessageTitle)
ELSE
   	eMessageTitle = 'Atención.....'
	eMessageText = 'si EXISTE INFORMACION CON ESA FECHA'
	nDialogType = 0+64
		nAnswer=MESSAGEBOX(eMessageText,nDialogType,eMessageTitle)
 
ENDIF

lo mas cumbre es que no tengo errores, pero no se que pasa que la repuesta que me da siempre es lo que esta despues del ELSE, es como si la condicion que estoy dando en el IF no es la correcta, por favor si me pueden ayudar se los voy a agradecer...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Buscar fechas en una tabla con IF

Publicado por Fidel José (321 intervenciones) el 29/04/2016 13:55:11
Te falta hacer una búsqueda. Ahi estás mirando el primer registro de la tabla solamente.
Genéricamente sería algo así;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
USE "c:\sis_g\base de datos\mcaja.dbf"
 
ldInicial = DATE(2016,4,18)
ldFinal = DATE(2016,4,18)
 
SELECT * ;
	FROM mcaja ;
	WHERE fecha between ldIncial AND ldFinal ;
	INTO CURSOR cur_mCaja READWRITE
lnTAlly = _tally
IF m.lnTally = 0
	USE IN "cur_mCaja"
	MESSAGEBOX("No hay datos")
ELSE
	MESSAGEBOX(TRANSFORM(m.lnTally)+" Coincidencias")
	SELECT cur_mCaja
	BROWSE
 
ENDIF
USE IN mCaja
USE IN cur_mCaja
Notas
1) En el segmento SELECT pongo el asterisco (*) porque no se cuales son tus campos. Debes mencionar los que te interesan solamente.
2) Para armar una fecha utiliza la función DATE() en lugar de CTOD(). Te independiza totalmente de la configuración del S.O.
3) Deberías evitar tener carpetas (folders) con nombres que contengan espacios o caracteres especiales. Te evita tener que poner el encomillado todo el tiempo. P.ej. la carpeta "Base de Datos" se puede llamar "BDatos". No afecta en nada y te soluciona las referencias a tablas y otros archivos que ahí pudieran existir.
4) Se recomienda una de dos formas, para el comando USE, más allá de lo que dice la ayuda:
USE "c:\sis_g\base de datos\mcaja.dbf" IN 0 SHARED AGAIN [ALIAS miAlias]
o bien
SELECT 0
USE "c:\sis_g\base de datos\mcaja.dbf" SHARED AGAIN [ALIAS miAlias]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar fechas en una tabla con IF

Publicado por Néstor (23 intervenciones) el 30/04/2016 14:25:18
Gracias Fidel por la gran ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar