Visual Basic-toepassingen voor het jaar 2000 voorbereiden

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 162718 - Bekijk de producten waarop dit artikel van toepassing is.
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Als een ontwikkelaar u mogelijk over hoe uw toepassingen wordt betrokken datums na 31-12-1999 worden verwerkt. Op 1 januari van het jaar 2000, zal uw programma's vindt u dat het jaar 2000, 1900 of zelfs 1980 is? Het doel van deze artikel is ervoor te zorgen dat Visual Basic-toepassingen wordt gedragen. goed met datums na 31-12-1999.

Meer informatie

Terwijl alle verwerkt versies van Visual Basic jaar groter is dan (in 1999 een viercijferige notatie) doorgeven van een twee-cijferig jaar in een datum (bijvoorbeeld 3-7/45) Forceert aannemen welke eeuw de datum komt overeen met Visual Basic. Misschien Leg dit probleem het beste zou zijn om een snelle Visual Basic geschiedenisles.

Visual Basic geschiedenisles

Voor alle versies van Visual Basic voor Windows (met inbegrip van de voorafgaande taken zoals Visual Basic voor DOS en QuickBasic) voorafgaand aan en inclusief 3.0 tweecijferige jaren zijn altijd uitgegaan in het deze. De code Implementeer deze standaard is ingebouwd in elke versie Runtime-bibliotheek en is niet afhankelijk van de versie van het besturingssysteem of de eeuw van de huidige systeemdatum.

Tussen de ontwikkelingscycli voor Visual Basic 3.0 en 4.0 twee nieuwe entiteiten ontstaan: Visual Basic for Applications- en OLE-automatisering. Voorafgaande met de komst van deze technologieën, Visual Basic runtime library bevat de code die verantwoordelijk zijn voor het converteren van een twee-cijferig jaar een jaar van vier cijfers. OLE-automatisering blootgesteld uitgebreide functionaliteit die toegang tot andere toepassingen. Visual Basic for Applications hoeft niet voor de uitvoering van deze code; het maken aanroepen van de OLE Automation-bibliotheken in plaats daarvan.

Visual Basic 4.0 is ontwikkeld met deze interoperabiliteit rekening en begonnen afhankelijk van de OLE Automation-bibliotheken tweecijferige jaren te converteren viercijferige jaren in de meeste gevallen. De uitzondering op de regel is de DateSerial functie die is geïmplementeerd in de Visual Basic runtime library omdat Visual Basic vereist meer functionaliteit dan de OLE Automation-bibliotheek op dat moment kan bieden.

Tijdens de ontwikkelingscyclus van Visual Basic 4.0 heeft Microsoft besloten dat de standaardwaarden worden gebruikt in eerdere versies van Visual Basic waren maar niet betrouwbaar altijd praktisch. Dus ontstaan een nieuwe regel. Een twee-cijferig jaartal zou zijn. geconverteerd naar de huidige eeuw van de systeemdatum. Dus Year(Date("1/1/00")) zou de huidige eeuw opleveren. Deze nieuwe regel in de OLE Automation-bibliotheken gebruikt door Visual Basic 4.0 is geïmplementeerd en Visual Basic for Applications. De Visual Basic 4.0 runtime library ook implementeert de regel voor de functie DateSerial.

Microsoft later onderzocht en gewijzigd standaard in OLE-automatisering (nu gewoon automatisering) bibliotheken op versie 2.20.4049 van het bestand OleAut32.dll. Deze wijziging heeft geen invloed op de 16-bits toepassingen die afhankelijk van de automatisering zijn bibliotheken alleen 32-bits toepassingen. Nu, een jaar van twee cijfers tussen 00 en 29 (bijvoorbeeld 17) is geïnterpreteerd als 2017 tijdens een twee-cijferig jaartal tussen 30 en 99 (bijvoorbeeld 72) is geïnterpreteerd als 1972. De nieuwe bibliotheken automatisering de functionaliteit die Visual Basic voor de DateSerial vereist functie. Dus, Visual Basic 5.0 en latere versies niet meer regels voor deze functie implementeren in hun runtimebibliotheken.

De bijgewerkte Automation-bibliotheek wordt geleverd met Internet Explorer versie 3.0 en later Service Pack 5 voor Windows NT 3.51, Windows NT 4.0, Windows 95 OSR 2 Office 97, Visual Basic 5.0 en andere producten.

Wat doet deze gemiddelde alle ontwikkelaars die Visual Basic gebruiken?

Visual Basic 3.0 en eerdere versies converteren alle tweecijferige jaren aan de deze.

Alle tweecijferige jaren converteert Visual Basic 4.0 (16-bits) naar de eeuw van de huidige systeemdatum. Afhankelijk van de functie gebruikt Visual Basic converteert de datum die is gebaseerd op de standaardinstellingen in een 16-bits automatiseren bibliotheken of de runtime library. De standaardinstellingen in de 16-bits automatisering bibliotheken niet zijn gewijzigd sinds u Visual Basic 4.0 uitgebracht dat de gedrag is consistent ook welke datumfunctie is gebruikt.

Visual Basic 4.0 (32-bits) converteert tweecijferige jaren om jaartallen met vier cijfers op basis van de standaard in de bibliotheken van automatisering, behalve wanneer u de DateSerial, functie die alle tweecijferige jaren naar de eeuw van converteert de huidige datum. De 32-bits automatisering bibliotheken (OleAut32.dll versie 2.10) die wordt geleverd bij Visual Basic 4.0 is uitgebracht alle geconverteerd tweecijferige jaren de eeuw van de huidige systeemdatum. Hoger 32-bits Automatisering-bibliotheken (OleAut32.dll 2,20 en hoger) converteren tweecijferige jaren de deze als het jaar van twee cijfers tussen 30 en 99. Als de twee-cijferig jaartal is tussen 00 en 29, wordt de datum geconverteerd naar de 2000S.

Visual Basic-versies na 4.0, converteren tweecijferige jaartallen met vier- op basis van de standaard in de bibliotheken automatisering voor alle datum-cijferig jaar functies. Visual Basic 5.0 wordt geleverd bij versie 2.20.4054 converteert tweecijferige jaren de deze als het jaar van twee cijfers tussen 30 en 99. Als de twee-cijferig jaartal is tussen 00 en 29, wordt de datum geconverteerd naar de 2000S.

Wat als bevalt me niet de standaardinstellingen?

U wilt uw eigen set regels gebruikt niet vertrouwen op de standaard in Visual Basic. U wilt bijvoorbeeld Voer alleen een twee-cijferig jaartal en hebben 00 tot en met 49 komen overeen met de jaren 2000 tot 2049 en 50-99 overeenkomen met de jaren 1950-1999 hebben.

Wanneer een datumreeks van de gebruiker accepteren, test u de indeling van de tekenreeks bepalen van het aantal cijfers voor het jaar ingevoerd. Volgens de de regels voor deze voorbeeldtoepassing 11-1-45 jaar 2045, is en niet in het jaar 1945. De tekenreeks te wijzigen binnen de code voor de toepassing het juiste jaar vier cijfers te gebruiken en vervolgens die datum converteren met de jaar van vier cijfers in een variabele.

Voorbeeldcode

De volgende code evalueert de ingevoerde gegevens in een tekstvak met de naam txtDate Wanneer u klikt op cmdConvertDate. Als de datum waarop een twee-cijferig jaartal bevat de datum geconverteerd naar een datum jaartal met vier cijfers van de regel van het monster. Vervolgens wordt de eerste datum, het volledige jaar als geconverteerd de code van de regel van het monster en het volledige jaar geconverteerd door de standaardinstellingen in Visual Basic. Ten slotte, de datum weergegeven in txtDate wordt geconverteerd naar een datum dubbelzinnig met het juiste jaar met vier cijfers.

Nadat u hebt ontwikkeld code voor het verwerken van uw eigen regels voor de interpretatie van twee jaartallen, kunt u die code maken in een 32-bits aangepast besturingselement met de Control Creation Edition van Visual Basic. Voor meer informatie over deze product en Zie de Microsoft voor het bouwen van uw eigen aangepaste besturingselementen Visual Basic-website op:

http://www.Microsoft.com/vbasic

Deze code is vereist dat de datums worden ingevoerd in de notatie dd-mm-jj, maar kan eenvoudig worden gewijzigd om een andere datumnotatie:

   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
				

Referenties

Microsoft Visual Basic Help-bestand. Zoeken op: datum en een Variant-gegevenstypen; IsDate, functie; CDate en CVDate functies;

(c) Microsoft Corporation, 1997, alle rechten voorbehouden. Bijdragen door David Sceppa, Microsoft Corporation

Eigenschappen

Artikel ID: 162718 - Laatste beoordeling: zaterdag 22 februari 2014 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Visual Basic 6.0 Professional Edition
  • 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 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition
Trefwoorden: 
kbnosurvey kbarchive kbhowto kbmt KB162718 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende: 162718

Geef ons feedback

 

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