Comment faire pour préparer des Applications Visual Basic pour l'an 2000

Traductions disponibles Traductions disponibles
Numéro d'article: 162718 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Résumé

En tant que développeur, vous pouvez être soucieux de la façon dont vos applications gère les dates au-delà de 12/31/1999. 1Er janvier de l'année 2000, vos programmes penseront qu'il s'agit de l'année 2000, 1900 ou même 1980 ? L'objectif de cet article est de vous assurer que vos applications se comportera correctement avec des dates au-delà de 12/31/1999 de Visual Basic.

Plus d'informations

Alors que toutes les versions de Visual Basic gérera les années supérieures à 1999 (dans un format à quatre chiffres), en passant une année sur deux chiffres dans une date (par exemple, 7/3/45) force Visual Basic à assumer quel siècle la date correspond à. Peut-être la meilleure façon d'expliquer ce problème consisterait à donner une leçon de l'historique de Visual Basic rapide.

Visual Basic historique leçon

En règle générale, pour toutes les de versions de Visual Basic pour Windows (y compris ses prédécesseurs tels que Visual Basic pour DOS et QuickBasic) antérieurs à et incluant 3.0, deux chiffres ont été agit des années 1900 doivent. Le code pour implémenter cette valeur par défaut a été intégré à la bibliothèque run-time de chaque version et ne dépend pas de la version du système d'exploitation ou le siècle de la date système actuelle.

Entre les cycles de développement pour Visual Basic 3.0 et 4.0, deux nouvelles entités émergé : Visual Basic pour applications et de OLE Automation. Avant de l'apparition de ces technologies, runtime bibliothèque de Visual Basic contenait du code responsable de la conversion d'une année sur deux chiffres en une année à quatre chiffres. OLE Automation exposés beaucoup de fonctionnalités autres applications peuvent accéder. Visual Basic pour applications n'a pas besoin d'implémenter ce code ; il pourrait effectuer des appels vers les bibliothèques OLE Automation au lieu de cela.

Visual Basic 4.0 a été développé avec cette interopérabilité à l'esprit et ont commencé à s'appuient sur les bibliothèques OLE Automation pour convertir des années à deux chiffres en années à quatre chiffres dans la plupart des cas. L'exception à la règle est la fonction DateSerial qui a été implémentée dans la bibliothèque runtime Visual Basic car Visual Basic requis que plus de fonctionnalités que la bibliothèque OLE Automation pourrait fournir au moment de cet.

Au cours du cycle de développement Visual Basic 4.0, Microsoft a décidé que les valeurs par défaut utilisés dans les versions précédentes de Visual Basic étaient fiables mais pas nécessairement pratique. Ainsi, une nouvelle règle apparus. Une année sur deux chiffres est convertie en le siècle en cours de la date système. Par conséquent, Year(Date("1/1/00")) devrait correspondre à siècle en cours. Cette nouvelle règle a été implémentée dans les bibliothèques OLE Automation utilisés par Visual Basic 4.0 et Visual Basic pour applications. La bibliothèque runtime Visual Basic 4.0 implémente également la règle pour la fonction DateSerial.

Microsoft ultérieurement l'objet d'un réexamen et modifié les paramètres par défaut dans OLE Automation (maintenant simplement Automation) bibliothèques de la version 2.20.4049 de OleAut32.dll. Cette modification n'affecte pas les applications 16 bits qui s'appuient sur les bibliothèques d'Automation, uniquement les applications 32 bits. Maintenant, une année sur deux chiffres compris entre 00 et 29 (tel que 17) est interprétée comme 2017 tandis qu'une année sur deux chiffres compris entre 30 et 99 (par exemple 72) est interprétée comme 1972. Les nouvelles bibliothèques d'Automation fournissent les fonctionnalités Visual Basic requiert pour la fonction DateSerial. Par conséquent, Visual Basic 5.0 et versions ultérieures n'est plus implémentent les modalités de cette fonction dans leurs bibliothèques runtime.

La bibliothèque Automation mis à jour est fourni avec Internet Explorer version 3.0 et versions ultérieure, Windows NT 3.51 Service Pack 5, Windows NT 4.0, Windows 95 OSR 2, Office 97, Visual Basic 5.0 et autres produits.

Ce que fait tout ce moyen pour les développeurs qui utiliser Visual Basic ?

Visual Basic 3.0 et versions antérieures de convertir toutes les années à deux chiffres en les années 1900 doivent.

Visual Basic 4.0 (16 bits) convertit toutes les années à deux chiffres pour le siècle de la date système actuelle. En fonction de la fonction utilisée, Visual Basic convertit la date en fonction des paramètres par défaut dans les bibliothèques d'Automation de 16 bits ou la bibliothèque runtime. Les valeurs par défaut dans les bibliothèques d'Automation de 16 bits n'ont pas été modifiés depuis Visual Basic 4.0 ; par conséquent le comportement est cohérent, indépendamment de quelle fonction de date.

Visual Basic 4.0 (32-bit) convertit deux chiffres en années à quatre chiffres en fonction de la valeur par défaut dans les bibliothèques d'Automation, sauf lorsque vous utilisez la fonction DateSerial qui convertit toutes les années à deux chiffres pour le siècle de la date système actuelle. Les bibliothèques d'Automation 32 bits (OleAut32.dll version 2.10) fournis avec Visual Basic 4.0 a été convertie en toutes les années à deux chiffres du siècle de la date système actuelle. Bibliothèques d'Automation ultérieure 32 bits (OleAut32.dll version 2.20 ou ultérieure) convertir années à deux chiffres pour les années 1900 doivent si l'année à deux chiffres est compris entre 30 et 99. Si l'année à deux chiffres est compris entre 00 et 29, la date est convertie en la 2000s.

Versions de Visual Basic suite à des années à deux chiffres convertir 4.0, aux années à quatre chiffres en fonction de la valeur par défaut dans les bibliothèques d'Automation pour toutes les fonctions de date. Visual Basic 5.0 livrés avec la version 2.20.4054 qui convertit les années à deux chiffres pour les années 1900 doivent si l'année à deux chiffres est compris entre 30 et 99. Si l'année à deux chiffres est compris entre 00 et 29, la date est convertie en la 2000s.

Que ce passe-t-il si je ne pas comme ces paramètres par défaut ?

Vous souhaiterez peut-être utiliser votre propre ensemble de règles plutôt que les valeurs par défaut natives de Visual Basic. Par exemple, vous souhaiterez peut-être saisir uniquement une année à deux chiffres et avoir compris entre 00 et 49 correspondent aux années 2000 à 2049 et avez 50 et 99 correspondent aux années 1950 à 1999.

Accepte une chaîne de date à partir de l'utilisateur, testez le format de chaîne pour déterminer le nombre de chiffres saisis pour l'année. Selon les règles pour cet exemple d'application, 1/11/45 est dans l'année 2045 et non dans l'année 1945. Au sein du code de l'application, modifiez la chaîne à utiliser l'année à quatre chiffres appropriée, puis convertir cette chaîne de date avec l'année à quatre chiffres dans une variable de date.

Exemple de code

Le code suivant évalue les données entrées dans une zone de texte nommée txtDate lorsque vous cliquez sur cmdConvertDate. Si la date comporte une année sur deux chiffres, la date est convertie en une date de l'année à quatre chiffres en fonction de la règle exemple. Le code affiche ensuite la date initiale entrée, toute l'année sous la forme convertie par le code en fonction de la règle de l'échantillon, et toute l'année est convertie par les valeurs par défaut natives de Visual Basic. Enfin, la date affichée dans txtDate est convertie en date non ambiguë avec l'année à quatre chiffres appropriée.

Une fois que vous avez développé le code pour gérer vos propres règles pour l'interprétation des années à deux chiffres, vous pouvez générer ce code dans un contrôle personnalisé de 32 bits avec le contrôle création édition de Visual Basic. Pour plus d'informations sur ce produit et sur la création de vos propres contrôles personnalisés, consultez le site Web de Visual Basic de Microsoft à l'adresse :

http://www.microsoft.com/vbasic

Ce code requiert entrer les dates dans le format mm/jj/aa, mais il peut facilement être modifié pour supporter un format de date différent :

   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
				

Références

Aide de Microsoft Visual Basic fichier ; rechercher sur : date et de types de données Variant ; IsDate fonction ; fonctions CDate et CVDate ;

(c) 1997 Microsoft Corporation, tous droits réservés. Contribution de David Sceppa, Microsoft Corporation

Propriétés

Numéro d'article: 162718 - Dernière mise à jour: samedi 1 mars 2014 - Version: 3.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic 4.0 Édition Standard
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 2.0 Édition Standard
  • Microsoft Visual Basic 3.0 Édition professionnelle
  • Microsoft Visual Basic 1.0 Édition Standard
Mots-clés : 
kbnosurvey kbarchive kbmt kbhowto KB162718 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 162718
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

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