Compartir a través de


Compatibilidad con el milenio

Se ha mejorado Visual FoxPro para proporcionar mejor compatibilidad con el milenio. Esta sección describe las mejoras de Visual FoxPro que facilitan la creación de aplicaciones compatibles con el milenio.

SET CENTURY TO

La documentación indica que, si se ejecuta el comando SET CENTURY TO sin argumentos adicionales, se establece el siglo en el siglo actual. Esto sólo es cierto en el siglo 20, porque el siglo se establece a 19 independientemente de cuál sea el siglo actual. Ahora en Visual FoxPro, SET CENTURY TO establece el siglo en el siglo actual. Además, el valor de SET CENTURY TO en nuevas sesiones de datos se inicializa al siglo actual.

Además, en Visual FoxPro, se ha modificado el valor predeterminado de ROLLOVER para SET CENTURY con los dos dígitos del año actual más 50 años (si el año actual es 1998, nYear es 48, los dos últimos dígitos de 2048 (1998 + 50).

Vea SET CENTURY para obtener más información.

Formatos estrictos de fecha

Normalmente, las constantes o expresiones de tipo Date y DateTime se interpretan en función de los valores actuales de SET DATE y SET CENTURY en el momento en el que las constantes o las expresiones se compilan o evalúan. Esto significa que muchas constantes de fecha son ambiguas puesto que se pueden evaluar como valores diferentes en función de cuándo se compilaron y el valor de fecha del momento de la compilación.

Por ejemplo, ¿es la constante de fecha {10/11/12} 11 de octubre de 1912, 11 de octubre de 2012, 10 de noviembre de 1912, 12 de noviembre de 1910 o 12 de noviembre de 2010?

Todo depende de los valores actuales de SET DATE y SET CENTURY TO. Esto puede introducir errores en el código existente de Visual FoxPro siempre que se compilen o evalúen en tiempo de ejecución constantes o expresiones de tipo Date o DateTime, como expresiones de informe u objeto. Esto puede producir incompatibilidad con el milenio cuando el valor de SET CENTURY pase al año 2000 y no se especifiquen fechas de cuatro dígitos.

Para evitar la incompatibilidad, se ha incluido un formato de fecha estricto en Visual FoxPro. Las fechas estrictas siempre se evalúan con el mismo valor Date o DateTime independientemente de los valores de las fechas. El formato de fecha estricto es:

^aaaa-mm-dd[,][hh[:mm[:ss]][a|p]]

El carácter (^) denota siempre el formato de fecha estricto y hace que los valores de tipo Date y DateTime se interpreten en formato AMD. Los separadores válidos son los guiones, las barras, los puntos y los espacios.

Los valores de tipo Date y DateTime no son ambiguos y siempre son válidos. Los formatos vacíos válidos de tipo Date y DateTime incluyen {}, { — } y { — ,:}.

Con los formatos de fecha estrictos tiene a su disposición un rango más grande de valores de tipo Date y DateTime. En Visual FoxPro 5.0, el menor valor de fecha que se puede expresar es {^0100/1/1}, 1 de Enero de 100 D.C. Esto es así porque los valores de año inferiores a 100 siempre se redondeaban hasta el siglo siguiente basándose en el valor de SET CENTURY.

La menor fecha válida en Visual FoxPro es {^0001-01-01}, 1 de enero del 1 D.C. La mayor fecha válida en Visual FoxPro es {^9999-12-31}, 31 de diciembre de 9999 D.C.

Observe que el formato estricto de fecha ignora el valor TAIWAN en SET DATE, de forma que el año en el formato Date o DateTime estricto siempre hace referencia al calendario occidental. (Recuerde que esto no es así en Visual FoxPro 5.0).

SET STRICTDATE

Puede utilizar un nuevo comando, SET STRICTDATE, para forzar la compatibilidad de las constantes y cadenas de fechas con el milenio.

SET STRICTDATE TO 0

Establecer STRICTDATE a 0 significa que la comprobación del formato estricto de fecha está desactivada. 0 es el valor predeterminado para el entorno de tiempo de ejecución de Visual FoxPro y el controlador ODBC. Cuando STRICTDATE está establecido en 0, los valores Date y DateTime no válidos se evalúan como cadenas vacías.

SET STRICTDATE TO 1

Establecer STRICTDATE a 1 requiere que todas las constantes de tipo Date y DateTime estén en el formato estricto. Cualquier constante de tipo Date o DateTime que no esté en el formato estricto o que se evalúe como valor no válido generará un error, durante la compilación, en tiempo de ejecución o durante una sesión interactiva en Visual FoxPro. 1 es el valor predeterminado para las sesiones interactivas en Visual FoxPro.

SET STRICTDATE TO 2

Equivale a establecer STRICTDATE en 1, pero además genera un error de compilación (2033 – CTOD y CTOT pueden producir resultados incorrectos) siempre que las funciones CTOD( ) y CTOT( ) aparezcan en el código.

Como los valores devueltos por CTOD( ) y CTOT( ) se basan en SET DATE y SET CENTURY para interpretar la fecha que contienen, pueden producir errores de incompatibilidad con el año 2000. Utilice DATE( ) y DATETIME( ) con los argumentos numéricos opcionales para crear constantes y expresiones de tipo Date y DateTime.

La mayor utilidad de este valor se produce durante las sesiones de depuración para detectar el código que pueda contener errores de compatibilidad con el milenio.

Errores de formato estricto de fecha

Se han agregado los siguientes errores nuevos a Visual FoxPro y se pueden generar cuando SET STRICTDATE está establecido en 1 ó 2.

Cuadro de diálogo Opciones

La ficha General del cuadro de diálogo Opciones incluye ahora un cuadro de lista desplegable Compatibilidad con el milenio, que especifica el valor de SET STRICTDATE. Como los demás elementos del cuadro de diálogo Opciones, el valor se establece para la sesión actual de Visual FoxPro y la elección de Establecer como predeterminado guarda el valor en el Registro de Windows para la siguiente sesión de Visual FoxPro.

Funciones DATE( ) y DATETIME( )

Ahora las funciones DATE( ) y DATETIME( ) admiten argumentos numéricos opcionales que le permiten crear valores de tipo Date o DateTime compatibles con el milenio. Las mejoras de estas funciones proporcionan ahora un método preferible para crear valores de tipo Date y DateTime; ya no es necesario utilizar funciones de manipulación de caracteres para crearlos.

FDATE( ) (Función)

Ahora la función FDATE( ) acepta un argumento opcional que le permite determinar la hora de la última modificación de un archivo sin utilizar funciones de manipulación de caracteres. Por ejemplo, en versiones anteriores de Visual FoxPro era necesario escribir código como el siguiente para determinar cuándo se modificó por última vez el archivo de recursos de Visual FoxPro:

tLastModified = CTOT(DTOC(FDATE('Foxuser.dbf')) + ' ' ;
   + FTIME('Foxuser.dbf') 

Ahora puede reemplazar este código con el siguiente:

tLastModified = FDATE('Foxuser.dbf', 1)

Century (Propiedad)

El valor predeterminado de la propiedad Century en Visual FoxPro es 1 – Activado. La parte de siglo de la fecha se muestra en un cuadro de texto. En las versiones anteriores de Visual FoxPro, el valor predeterminado es 2 (el valor de SET CENTURY determina si se muestra la parte de siglo de las fechas).

Vea también

Compatibilidad con gráficos en Visual FoxPro | Crear métodos Access y Assign | Métodos Access y Assign | SET CENTURY | SET DATE