In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Verificar fecha
Verificar fecha
No lo recuerdo, pero... hay alguna función para comprovar si un valor
caracter es una fecha correcta???
De momento lo compruebo así...
If Day(CtoD(cVariable)) > 0
....
Pero me encuentro en que si compruebo un valor como "01/0000" lo da como
..T., y evidentemente luego me saltan errores.
Gracias.
Un Saludo,
Xevi.
caracter es una fecha correcta???
De momento lo compruebo así...
If Day(CtoD(cVariable)) > 0
....
Pero me encuentro en que si compruebo un valor como "01/0000" lo da como
..T., y evidentemente luego me saltan errores.
Gracias.
Un Saludo,
Xevi.
Un Saludo,
Xevi.
Xevi.
Verificar fecha
Xevi,
la función CToD() devuelve una fecha vacía (nula) si no es válida:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1acdd.html
Entonces debería bastar con:
IF Empty( CToD( cVariable ) )
Alert( "Fecha no válida" )
ENDIF
Saludos,
José Lalín
la función CToD() devuelve una fecha vacía (nula) si no es válida:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1acdd.html
Entonces debería bastar con:
IF Empty( CToD( cVariable ) )
Alert( "Fecha no válida" )
ENDIF
Saludos,
José Lalín
Verificar fecha
José,
Gracias, funciona perfecta.
Así pues...
FUNCTION IsDate(c)
Return !Empty(CToD(c))
La incorporo en mi aplicación... aunque, tratándose de una "sencilla"
función,
¿no seria mejor que alguien la incorporara en Harbour???, digo yo, no se. A
mi me sirve así, pero hay funciones que con lo sencillas que son (Visual
Basic tiene esa misma IsDate())... parece que no estaría de mas
incorporarla.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102c4b9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
la función CToD() devuelve una fecha vacía (nula) si no es válida:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1acdd.html
Entonces debería bastar con:
IF Empty( CToD( cVariable ) )
Alert( "Fecha no válida" )
ENDIF
Saludos,
José Lalín
Gracias, funciona perfecta.
Así pues...
FUNCTION IsDate(c)
Return !Empty(CToD(c))
La incorporo en mi aplicación... aunque, tratándose de una "sencilla"
función,
¿no seria mejor que alguien la incorporara en Harbour???, digo yo, no se. A
mi me sirve así, pero hay funciones que con lo sencillas que son (Visual
Basic tiene esa misma IsDate())... parece que no estaría de mas
incorporarla.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102c4b9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
la función CToD() devuelve una fecha vacía (nula) si no es válida:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1acdd.html
Entonces debería bastar con:
IF Empty( CToD( cVariable ) )
Alert( "Fecha no válida" )
ENDIF
Saludos,
José Lalín
Un Saludo,
Xevi.
Xevi.
Verificar fecha
José,
Demasiado deprisa!!!
FUNCTION IsDate(c)
Return !Empty(CToD(c))
No sirve!!!
LogDebug( "01/0001", IsDate( "01/0001" ) )
LogDebug( "01/0001/01", IsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", IsDate( "01/0001/01/01" ) )
en los 3 casos devuelve .T.
Evidentemente no son fechas...
Habrá que currarse una función IsDate()
¿NO???
Un Saludo,
Xevi.
"Xevi" ha escrit al missatge:5102ce89$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
José,
Gracias, funciona perfecta.
Así pues...
FUNCTION IsDate(c)
Return !Empty(CToD(c))
La incorporo en mi aplicación... aunque, tratándose de una "sencilla"
función,
¿no seria mejor que alguien la incorporara en Harbour???, digo yo, no se. A
mi me sirve así, pero hay funciones que con lo sencillas que son (Visual
Basic tiene esa misma IsDate())... parece que no estaría de mas
incorporarla.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102c4b9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
la función CToD() devuelve una fecha vacía (nula) si no es válida:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1acdd.html
Entonces debería bastar con:
IF Empty( CToD( cVariable ) )
Alert( "Fecha no válida" )
ENDIF
Saludos,
José Lalín
Demasiado deprisa!!!
FUNCTION IsDate(c)
Return !Empty(CToD(c))
No sirve!!!
LogDebug( "01/0001", IsDate( "01/0001" ) )
LogDebug( "01/0001/01", IsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", IsDate( "01/0001/01/01" ) )
en los 3 casos devuelve .T.
Evidentemente no son fechas...
Habrá que currarse una función IsDate()
¿NO???
Un Saludo,
Xevi.
"Xevi" ha escrit al missatge:5102ce89$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
José,
Gracias, funciona perfecta.
Así pues...
FUNCTION IsDate(c)
Return !Empty(CToD(c))
La incorporo en mi aplicación... aunque, tratándose de una "sencilla"
función,
¿no seria mejor que alguien la incorporara en Harbour???, digo yo, no se. A
mi me sirve así, pero hay funciones que con lo sencillas que son (Visual
Basic tiene esa misma IsDate())... parece que no estaría de mas
incorporarla.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102c4b9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
la función CToD() devuelve una fecha vacía (nula) si no es válida:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1acdd.html
Entonces debería bastar con:
IF Empty( CToD( cVariable ) )
Alert( "Fecha no válida" )
ENDIF
Saludos,
José Lalín
Un Saludo,
Xevi.
Xevi.
Verificar fecha
Xevi,
creo que Harbour tiene de serie IsDate().
Saludos,
José Lalín
creo que Harbour tiene de serie IsDate().
Saludos,
José Lalín
Verificar fecha
José,
Pues existir en Harbour, existe, pues compila.
Ahora bien
LogDebug( "01/0001", IsDate( "01/0001" ) )
LogDebug( "01/0001/01", IsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", IsDate( "01/0001/01/01" ) )
LogDebug( "01010001", IsDate( "01010001" ) )
LogDebug( "01-01-0001", IsDate( "01-01-0001" ) )
LogDebug( "01/01/01", IsDate( "01/01/01" ) )
LogDebug( "01/01/2001", IsDate( "01/01/2001" ) )
LogDebug( "32/01/2001", IsDate( "32/01/2001" ) )
LogDebug( "01/15/2001", IsDate( "01/15/2001" ) )
Siempre devuelve .F.
la única documentación que encuentro...
C Prototype (macro definition)
#include "hbapi.h"
ISDATE( n ) --> <see ( hb_param( n, HB_IT_DATE ) != NULL )>
¿Cómo se utiliza???
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102d449$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
Xevi,
creo que Harbour tiene de serie IsDate().
Saludos,
José Lalín
Pues existir en Harbour, existe, pues compila.
Ahora bien
LogDebug( "01/0001", IsDate( "01/0001" ) )
LogDebug( "01/0001/01", IsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", IsDate( "01/0001/01/01" ) )
LogDebug( "01010001", IsDate( "01010001" ) )
LogDebug( "01-01-0001", IsDate( "01-01-0001" ) )
LogDebug( "01/01/01", IsDate( "01/01/01" ) )
LogDebug( "01/01/2001", IsDate( "01/01/2001" ) )
LogDebug( "32/01/2001", IsDate( "32/01/2001" ) )
LogDebug( "01/15/2001", IsDate( "01/15/2001" ) )
Siempre devuelve .F.
la única documentación que encuentro...
C Prototype (macro definition)
#include "hbapi.h"
ISDATE( n ) --> <see ( hb_param( n, HB_IT_DATE ) != NULL )>
¿Cómo se utiliza???
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102d449$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
Xevi,
creo que Harbour tiene de serie IsDate().
Saludos,
José Lalín
Un Saludo,
Xevi.
Xevi.
Verificar fecha
Xevi,
> ¿Cómo se utiliza???
Con mucho cuidado Imagino que el problema está en que hay que
convertirla a fecha con CToD() antes de pasarla.
Saludos,
José Lalín
> ¿Cómo se utiliza???
Con mucho cuidado Imagino que el problema está en que hay que
convertirla a fecha con CToD() antes de pasarla.
Saludos,
José Lalín
Verificar fecha
José,
lo he hecho despaciiiiiito...
Le he añadido la conversión a fecha...
Pero no funciona.
LogDebug( "01/0001", IsDate( CToD( "01/0001" ) ))
LogDebug( "01/0001/01", IsDate( CToD( "01/0001/01" ) ) )
LogDebug( "01/0001/01/01", IsDate( CToD( "01/0001/01/01" ) ) )
LogDebug( "01010001", IsDate( CToD( "01010001" ) ) )
LogDebug( "01-01-0001", IsDate( CToD( "01-01-0001" ) ) )
LogDebug( "01/01/01", IsDate( CToD( "01/01/01" ) ) )
LogDebug( "01/01/2001", IsDate( CToD( "01/01/2001" ) ) )
LogDebug( "32/01/2001", IsDate( CToD( "32/01/2001" ) ) )
LogDebug( "01/15/2001", IsDate( CToD( "01/15/2001" ) ) )
Siempre devuelve .T.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102de0e$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
> ¿Cómo se utiliza???
Con mucho cuidado Imagino que el problema está en que hay que
convertirla a fecha con CToD() antes de pasarla.
Saludos,
José Lalín
lo he hecho despaciiiiiito...
Le he añadido la conversión a fecha...
Pero no funciona.
LogDebug( "01/0001", IsDate( CToD( "01/0001" ) ))
LogDebug( "01/0001/01", IsDate( CToD( "01/0001/01" ) ) )
LogDebug( "01/0001/01/01", IsDate( CToD( "01/0001/01/01" ) ) )
LogDebug( "01010001", IsDate( CToD( "01010001" ) ) )
LogDebug( "01-01-0001", IsDate( CToD( "01-01-0001" ) ) )
LogDebug( "01/01/01", IsDate( CToD( "01/01/01" ) ) )
LogDebug( "01/01/2001", IsDate( CToD( "01/01/2001" ) ) )
LogDebug( "32/01/2001", IsDate( CToD( "32/01/2001" ) ) )
LogDebug( "01/15/2001", IsDate( CToD( "01/15/2001" ) ) )
Siempre devuelve .T.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5102de0e$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
> ¿Cómo se utiliza???
Con mucho cuidado Imagino que el problema está en que hay que
convertirla a fecha con CToD() antes de pasarla.
Saludos,
José Lalín
Un Saludo,
Xevi.
Xevi.
Verificar fecha
Xevi,
> lo he hecho despaciiiiiito...
¿y con cariño y HB_IsDate()?
Saludos,
José Lalín
> lo he hecho despaciiiiiito...
¿y con cariño y HB_IsDate()?
Saludos,
José Lalín
Verificar fecha
José,
Ni despacito, ni con cariño
....
LogDebug( "01/0001", HB_IsDate( CToD( "01/0001" ) ))
LogDebug( "01/0001/01", HB_IsDate( CToD( "01/0001/01" ) ) )
LogDebug( "01/0001/01/01", HB_IsDate( CToD( "01/0001/01/01" ) ) )
LogDebug( "01010001", HB_IsDate( CToD( "01010001" ) ) )
LogDebug( "01-01-0001", HB_IsDate( CToD( "01-01-0001" ) ) )
LogDebug( "01/01/01", HB_IsDate( CToD( "01/01/01" ) ) )
LogDebug( "01/01/2001", HB_IsDate( CToD( "01/01/2001" ) ) )
LogDebug( "32/01/2001", HB_IsDate( CToD( "32/01/2001" ) ) )
LogDebug( "01/15/2001", HB_IsDate( CToD( "01/15/2001" ) ) )
Devuelve todo .T.
LogDebug( "01/0001", HB_IsDate( "01/0001" ) )
LogDebug( "01/0001/01", HB_IsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", HB_IsDate( "01/0001/01/01" ) )
LogDebug( "01010001", HB_IsDate( "01010001" ) )
LogDebug( "01-01-0001", HB_IsDate( "01-01-0001" ) )
LogDebug( "01/01/01", HB_IsDate( "01/01/01" ) )
LogDebug( "01/01/2001", HB_IsDate( "01/01/2001" ) )
LogDebug( "32/01/2001", HB_IsDate( "32/01/2001" ) )
LogDebug( "01/15/2001", HB_IsDate( "01/15/2001" ) )
Devuelve todo .F.
Un Saludo,
Xevi,
"José Lalín" ha escrit al missatge:5102e780$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
> lo he hecho despaciiiiiito...
¿y con cariño y HB_IsDate()?
Saludos,
José Lalín
Ni despacito, ni con cariño
....
LogDebug( "01/0001", HB_IsDate( CToD( "01/0001" ) ))
LogDebug( "01/0001/01", HB_IsDate( CToD( "01/0001/01" ) ) )
LogDebug( "01/0001/01/01", HB_IsDate( CToD( "01/0001/01/01" ) ) )
LogDebug( "01010001", HB_IsDate( CToD( "01010001" ) ) )
LogDebug( "01-01-0001", HB_IsDate( CToD( "01-01-0001" ) ) )
LogDebug( "01/01/01", HB_IsDate( CToD( "01/01/01" ) ) )
LogDebug( "01/01/2001", HB_IsDate( CToD( "01/01/2001" ) ) )
LogDebug( "32/01/2001", HB_IsDate( CToD( "32/01/2001" ) ) )
LogDebug( "01/15/2001", HB_IsDate( CToD( "01/15/2001" ) ) )
Devuelve todo .T.
LogDebug( "01/0001", HB_IsDate( "01/0001" ) )
LogDebug( "01/0001/01", HB_IsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", HB_IsDate( "01/0001/01/01" ) )
LogDebug( "01010001", HB_IsDate( "01010001" ) )
LogDebug( "01-01-0001", HB_IsDate( "01-01-0001" ) )
LogDebug( "01/01/01", HB_IsDate( "01/01/01" ) )
LogDebug( "01/01/2001", HB_IsDate( "01/01/2001" ) )
LogDebug( "32/01/2001", HB_IsDate( "32/01/2001" ) )
LogDebug( "01/15/2001", HB_IsDate( "01/15/2001" ) )
Devuelve todo .F.
Un Saludo,
Xevi,
"José Lalín" ha escrit al missatge:5102e780$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
> lo he hecho despaciiiiiito...
¿y con cariño y HB_IsDate()?
Saludos,
José Lalín
Un Saludo,
Xevi.
Xevi.
Verificar fecha
Xevi,
entonces tendrás que hacer una.
Saludos,
José Lalín
entonces tendrás que hacer una.
Saludos,
José Lalín
Verificar fecha
De momento me he creado una para mis necesidades...
//---------------------------------------------------------- --------------------
FUNCTION xIsDate(c)
Local cDateFormat := Set( _SET_DATEFORMAT )
Local nLenDateFormat := Len(cDateFormat)
Local n, lFormatN := .T.
If ValType(c) = "C" .and. nLenDateFormat = Len(c)
lFormatN := .T.
For n:=1 to nLenDateFormat
IF (Chr(SubStr(cDateFormat,n,1)) = 100 .or.
Chr(SubStr(cDateFormat,n,1)) = 109 .or. Chr(SubStr(cDateFormat,n,1)) = 121)
// "d" "m" "y"
If !(Chr(SubStr(c,n,1)) > 47 .and. Chr(SubStr(c,n,1)) < 58)
//"0123456789"
lFormatN := .F.
EndIf
EndIf
Next
If lFormatN
Return !Empty(CToD(c))
EndIf
EndIf
Return .F.
***
Para validar la fecha debe pasarse una variable tipo caracter que se
corresponda con el formato SET() que tenemos establecida en la aplicación.
Estos formatos los comprueba correctamente.
***
METHOD FormInitialize( oSender ) CLASS TForm1
Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
LogDebug( "01/0001", xIsDate( "01/0001" ) )
LogDebug( "01/0001/01", xIsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", xIsDate( "01/0001/01/01" ) )
LogDebug( "01010001", xIsDate( "01010001" ) )
LogDebug( "01-01-0001", xIsDate( "01-01-0001" ) )
LogDebug( "01/01/01", xIsDate( "01/01/01" ) )
LogDebug( "00/01/2001", xIsDate( "00/01/2001" ) )
LogDebug( "01/01/2001", xIsDate( "01/01/2001" ) )
LogDebug( "32/01/2001", xIsDate( "32/01/2001" ) )
LogDebug( "01/15/2001", xIsDate( "01/15/2001" ) )
LogDebug( "ABC", xIsDate( "ABC" ) )
LogDebug( "ABCabc1234", xIsDate( "ABCabc1234" ) )
RETURN Nil
SE PUEDE MEJORAR... CLARO QUE SI!!!, pero de momento salvo el obstáculo.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5103b5fa$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
Xevi,
entonces tendrás que hacer una.
Saludos,
José Lalín
//---------------------------------------------------------- --------------------
FUNCTION xIsDate(c)
Local cDateFormat := Set( _SET_DATEFORMAT )
Local nLenDateFormat := Len(cDateFormat)
Local n, lFormatN := .T.
If ValType(c) = "C" .and. nLenDateFormat = Len(c)
lFormatN := .T.
For n:=1 to nLenDateFormat
IF (Chr(SubStr(cDateFormat,n,1)) = 100 .or.
Chr(SubStr(cDateFormat,n,1)) = 109 .or. Chr(SubStr(cDateFormat,n,1)) = 121)
// "d" "m" "y"
If !(Chr(SubStr(c,n,1)) > 47 .and. Chr(SubStr(c,n,1)) < 58)
//"0123456789"
lFormatN := .F.
EndIf
EndIf
Next
If lFormatN
Return !Empty(CToD(c))
EndIf
EndIf
Return .F.
***
Para validar la fecha debe pasarse una variable tipo caracter que se
corresponda con el formato SET() que tenemos establecida en la aplicación.
Estos formatos los comprueba correctamente.
***
METHOD FormInitialize( oSender ) CLASS TForm1
Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
LogDebug( "01/0001", xIsDate( "01/0001" ) )
LogDebug( "01/0001/01", xIsDate( "01/0001/01" ) )
LogDebug( "01/0001/01/01", xIsDate( "01/0001/01/01" ) )
LogDebug( "01010001", xIsDate( "01010001" ) )
LogDebug( "01-01-0001", xIsDate( "01-01-0001" ) )
LogDebug( "01/01/01", xIsDate( "01/01/01" ) )
LogDebug( "00/01/2001", xIsDate( "00/01/2001" ) )
LogDebug( "01/01/2001", xIsDate( "01/01/2001" ) )
LogDebug( "32/01/2001", xIsDate( "32/01/2001" ) )
LogDebug( "01/15/2001", xIsDate( "01/15/2001" ) )
LogDebug( "ABC", xIsDate( "ABC" ) )
LogDebug( "ABCabc1234", xIsDate( "ABCabc1234" ) )
RETURN Nil
SE PUEDE MEJORAR... CLARO QUE SI!!!, pero de momento salvo el obstáculo.
Un Saludo,
Xevi.
"José Lalín" ha escrit al missatge:5103b5fa$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
Xevi,
entonces tendrás que hacer una.
Saludos,
José Lalín
Un Saludo,
Xevi.
Xevi.