Cómo preparar las aplicaciones de Visual Basic para el año 2000

Seleccione idioma Seleccione idioma
Id. de artículo: 162718 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

Como desarrollador, es posible que preocuparse de cómo controlará las aplicaciones a las fechas más allá del 31/12/1999. ¿En el 1 de enero del año 2000, los programas pensarán es el año 2000, 1900 o incluso 1980? El objetivo de este artículo es garantizar que sus aplicaciones se comportarán correctamente con las fechas más allá del 31/12/1999 de Visual Basic.

Más información

Mientras que todas las versiones de Visual Basic controlará los años mayores que 1999 (en un formato de cuatro dígitos), pasando un año de dos dígitos en una fecha (por ejemplo, 7/3/45) obliga a Visual Basic para suponer qué siglo corresponde la fecha a. Quizá la manera mejor para explicar este comportamiento sería ofrecer una rápida lección de historial de Visual Basic.

Lección de historial de Visual Basic

Para todas las versiones de Visual Basic para Windows (incluyendo a sus predecesores, como Visual Basic para DOS y QuickBasic) antes incluidos 3.0, años de dos dígitos se supone siempre que en el a siglo XX. El código para implementar este valor predeterminado se creó en biblioteca run-time la versión de cada y no depende la versión del sistema operativo o el siglo la actual fecha del sistema.

Entre los ciclos de desarrollo de Visual Basic 3.0 y 4.0, surgido dos nuevas entidades: Visual Basic para aplicaciones y la automatización. Anterior a la llegada de estas tecnologías, biblioteca de tiempo de ejecución del Visual Basic contiene el código de responsable de convertir un año de dos dígitos en un año de cuatro dígitos. Automatización OLE expone una gran funcionalidad que podrían tener acceso otras aplicaciones. No necesario implementar este código de Visual Basic para aplicaciones; podrían realizar llamadas a las bibliotecas de automatización en su lugar.

Visual Basic 4.0 se desarrolló con esta interoperabilidad en mente y empezó a dependen de las bibliotecas de automatización para convertir los años de dos dígitos en años de cuatro dígitos en la mayoría de los casos. La excepción a la regla es la función DateSerial que se implementó en la biblioteca de tiempo de ejecución Visual Basic porque Visual Basic necesarios que podría proporcionar más funcionalidad que la biblioteca OLE Automation en ese momento.

Durante el ciclo de desarrollo Visual Basic 4.0, Microsoft decidió que los valores predeterminados utilizados en versiones anteriores de Visual Basic eran confiables, pero no necesariamente es práctico. Por lo tanto, surgido una nueva regla. Se convertiría un año de dos dígitos en el siglo actual de la fecha del sistema. Por lo tanto, Year(Date("1/1/00")) se evalúe en el siglo actual. Esta nueva regla se implementó en las bibliotecas de automatización utilizadas por 4.0 de Visual Basic y Visual Basic para aplicaciones. La biblioteca de tiempo de ejecución Visual Basic 4.0 también implementa la regla de la función DateSerial.

Microsoft posterior reconsidered y cambiado el valor predeterminado en la automatización (ahora automatización simplemente) bibliotecas de la versión la 2.20.4049 de OleAut32.dll. Este cambio no afecta a las aplicaciones de 16 bits que dependen de las bibliotecas de automatización, sólo las aplicaciones de 32 bits. Ahora, un año de dos dígitos comprendido entre 00 y 29 (como 17) se interpreta como 2017 mientras que un año de dos dígitos entre 30 y 99 (como 72) se interpreta como 1972. Nuevas bibliotecas de automatización proporcionan la funcionalidad que Visual Basic requiere para la función DateSerial. Por lo tanto, Visual Basic 5.0 y versiones posteriores ya no implementan reglas para esta función en sus bibliotecas de tiempo de ejecución.

La biblioteca de automatización actualizada se incluye con Internet Explorer versión 3.0 y posteriores, Windows NT 3.51 Service Pack 5, Windows NT 4.0, Windows 95 OSR 2, Office 97, Visual Basic 5.0 y otros productos.

¿Qué todo este medio para desarrolladores que utilizan Visual Basic?

Visual Basic 3.0 y versiones anteriores convierten todos los años de dos dígitos a la a siglo XX.

Visual Basic 4.0 (16 bits) convierte todos los años de dos dígitos para el siglo la actual fecha del sistema. Dependiendo de la función utilizada, Visual Basic convierte la fecha basándose en valores predeterminados en las bibliotecas de automatización de 16 bits o la biblioteca de tiempo de ejecución. No se han modificado los valores predeterminados en las bibliotecas de automatización de 16 bits desde Visual Basic 4.0 liberados por lo que el comportamiento es coherente, independientemente de qué función de fecha se utiliza.

Visual Basic 4.0 (32 bits) convierte años de dos dígitos a años de cuatro dígitos según el predeterminado en las bibliotecas de automatización excepto cuando se utiliza la función DateSerial que convierte todos los años de dos dígitos para el siglo la actual fecha del sistema. Las bibliotecas de automatización de 32 bits (OleAut32.dll versión 2.10) que se distribuyeron cuando Visual Basic 4.0 se publicó convierten todos los años de dos dígitos en el siglo la actual fecha del sistema. Bibliotecas de automatización de 32 bits posterior (OleAut32.dll versión 2.20 y posteriores) convierten años de dos dígitos a la a siglo XX si el año de dos dígitos es entre 30 y 99. Si el año de dos dígitos está entre 00 y 29, la fecha se convierte en el 2000s.

Visual Basic las versiones posteriores a la 4.0, años de dos dígitos convertir años de cuatro dígitos según el valor predeterminado en las bibliotecas de automatización para todas las funciones de fecha. Visual Basic 5.0 suministrado con la versión 2.20.4054 que convierte los años de dos dígitos a la a siglo XX si el año con dos dígitos es entre 30 y 99. Si el año de dos dígitos está entre 00 y 29, la fecha se convierte en el 2000s.

¿Qué sucede si no como los valores predeterminados?

Puede que desee utilizar su propio conjunto de reglas en lugar de depender de los valores predeterminados nativos de Visual Basic. Por ejemplo, quizás desee especifique sólo un año de dos dígitos y tener 00 a 49 se corresponden con los años 2000 a 2049 y tienen el 50 y 99 se corresponden con los años de 1950 a 1999.

Cuando acepta una cadena de fecha del usuario, compruebe el formato de la cadena para determinar el número de dígitos especificado para el año. Según las reglas para esta aplicación de ejemplo, 1, 11/45 es en el año 2045 y no en el año 1945. En el código de la aplicación, cambie la cadena para que utilice el año de cuatro dígitos correspondiente, convertir esa cadena de fecha con el año de cuatro dígitos en una variable de fecha.

Código de ejemplo

El código siguiente da como resultado los datos introducidos en un cuadro de texto denominado txtDate al hacer clic en cmdConvertDate. Si la fecha contiene un año de dos dígitos, la fecha se convierte en una fecha de año de cuatro dígitos de acuerdo con la regla de ejemplo. El código a continuación, muestra la fecha inicial especificada, el año completo como convertir el código de acuerdo con la regla de ejemplo y se convierte el año completo por los valores predeterminados nativos de Visual Basic. Por último, la fecha que aparece en txtDate se convierte en una fecha no ambigua con el año de cuatro dígitos correspondiente.

Una vez ha desarrollado el código para controlar sus propias reglas para interpretar años de dos dígitos, puede crear ese código en un control personalizado de 32 bits con el control creación edición de Visual Basic. Para obtener más información acerca de este producto y crear sus propios controles personalizados, vea el sitio Web de Visual Basic de Microsoft en:

http://www.microsoft.com/vbasic

Este código requiere que se introduzca fechas en el formato mm/dd/aa, pero fácilmente podría cambiarse para controlar el formato de fecha diferentes:

   Private Sub cmdConvertDate_Click()
       Dim strYear As String
       Dim intSlash As Integer
       If IsDate(txtDate) or txtDate = "2/29/00" Then
           'Find first date separator.
           intSlash = InStr(txtDate, "/")
           If intSlash > 0 Then
               'Find second date separator.
               intSlash = InStr(intSlash + 1, txtDate, "/")
               If intSlash > 0 Then
                   'Extract the year from the date.
                   strYear = Mid(txtDate, intSlash + 1)
                   If Len(strYear) = 2 Then
                       If CInt(strYear) < 50 Then
                       ' Less than 50: year = 20XX.
                           strYear = "20" & strYear
                       Else
                       ' Greater than 50: year = 19XX.
                           strYear = "19" & strYear
                       End If
                   End If
                   MsgBox "Date Entered: " & txtDate
                   MsgBox "Year (Our Rule): " & strYear
                   MsgBox "Year (VB Default): " & Year(txtDate)
               Else
                   MsgBox "Date not in expected format!"
               End If
           Else
               MsgBox "Date not in expected format!"
           End If
       Else
           MsgBox "Not a valid date!"
       End If
       '  Clarify date in txtDate.
       txtDate.Text = Left(txtDate.Text, intSlash) & strYear
   End Sub
				

Referencias

Ayuda de Microsoft Visual Basic archivo; buscar en: fecha y tipos de datos Variant; IsDate función; funciones CDate y CVDate;

(c) 1997 Microsoft Corporation, reservados todos los derechos. Contribuciones por David Sceppa, Microsoft Corporation

Propiedades

Id. de artículo: 162718 - Última revisión: sábado, 22 de febrero de 2014 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowto KB162718 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 162718

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com