¿Como saber si una variable fecha esta vacia?

2,802 views
Skip to first unread message

Alejandro Garcia G.

unread,
Jul 11, 2014, 6:41:01 PM7/11/14
to publice...@googlegroups.com
Tengo una tabla con un campo fecha o una variable que contiene una fecha y deseo saber si esta vacia o no. Por ejemplo: en una variable la inicializo asi:

ldFecha = {//}

Luego hago un proceso, y al final deseo saber si esta vacia o tiene una fecha cualquiera, pero no se por que no he logrado hallar la forma de validar esto.

¿Me pueden colaborar?. Gracias.

Fidel Charny

unread,
Jul 11, 2014, 6:43:03 PM7/11/14
to publice...@googlegroups.com
if empty(fecha)
    *Fecha vacía
endif

Alejandro Garcia G.

unread,
Jul 11, 2014, 7:06:03 PM7/11/14
to publice...@googlegroups.com
Gracias, si funciono, hace rato coloque esta instruccion y no se por que no me dio, por eso coloque la inquietud.

mpulla

unread,
Jul 11, 2014, 7:07:56 PM7/11/14
to publice...@googlegroups.com
Hola Alejandro.

Los SGDB no manejan el concepto fecha vacía.

Si estas trayendo los datos de algún SGDB la fecha puede tener NULL

If empty(NVL(MiCursor.Fecha, {//})
    messagebox('Fecha Vacia')
endif

Saludos.
Mauricio

Alejandro Garcia G.

unread,
Jul 12, 2014, 9:30:56 AM7/12/14
to publice...@googlegroups.com
Gracias por el dato, si uso MySQL pero en este caso tengo un cursor VFP nada mas, sin embargo voy tener presetne tu comentario.

Saludos.

Alejandro Garcia G.

unread,
Jul 12, 2014, 10:00:02 AM7/12/14
to publice...@googlegroups.com
No se pero cre que no me da el resultado que deseo, miren:

   IF !EMPTY(NVL(ulfechapago.fechapago,{//}))
       replace ALL fechapago WITH  CTOD(ulfechapago.fechapago) FOR numlib=ulfechapago.numlib
   ELSE
       replace ALL fechapago WITH  dfechacorte FOR numlib=ulfechapago.numlib
   ENDIF

ulfechapago.fechapago es un campo Date y esta en {//}, y lo que deseo es lo siguiente que si esta sin ningun tipo valor debe colocarme en fechapago el valor de la variable dfechacorte, pero no lo hace.

Fidel Charny

unread,
Jul 12, 2014, 10:24:28 AM7/12/14
to publice...@googlegroups.com
Pero una cosa es que el campo sea .null. NVL()  y otra que sea Empty() (EVL)
Si ulfechapgo.fechapago puede tener el valor .null. podrías poner:
IF !ISNULL(ulfechapago.fechapago) AND !EMPTY(ulfechapago.fechapago)
ELSE
ENDIF
Lo que no me queda claro es que tipo de dato es ulfechapago.fechapago. Porque si es tipo Character deberías verificar que esté Empty(). Por ejemplo:
IF EMPTY(ctod(ulfechapago.fechapago))
Para aclarar:
lcFecha="//"
Aunque esto se convierta en fecha, ? Empty(lcFecha) -> .F. (Tiene dos caracteres chr(47) )
ldFecha=CTOD(lcFecha)                ? Empty(ldFEcha) -> .T. (Es una fecha vacía)

También si
lcFecha=""
ldFecha=Ctod(lcFecha)  ó ldFecha=Ctod("")    -> Fecha vacía.

Carlos Miguel FARIAS

unread,
Jul 12, 2014, 10:38:26 AM7/12/14
to Grupo Fox
La fecha vacia en VFP se hereda del Fox para DOS, que no manejaba datos NULL, por lo que para representar una fecha NULL (dato no conocido), se usaba la fecha vacia. En VFP y en los SGBD existe el dato NULL.
La función EMPTY() de VFP da verdadero para numéricos = 0, booleanos = .F., cadenas de caracteres en blanco o vacias y fechas vacias.
Tambien considera EMPTY verdadero cualquier variable con valor null.
Saludos: Miguel, La Pampa (RA)

mpulla

unread,
Jul 12, 2014, 11:19:22 AM7/12/14
to publice...@googlegroups.com
Hola Miguel.

Empty devuelve falso si una variable o campo contiene null

Alejandro no le veo problema a tu código, seguramente los registros no están cumpliendo con FOR numlib=ulfechapago.numlib

Saludos.
Mauricio
Reply all
Reply to author
Forward
0 new messages