Como preparar aplicações do Visual Basic para o ano 2000

Traduções de Artigos Traduções de Artigos
Artigo: 162718 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Como programador, pode estar preocupado com o modo como as aplicações vão processar datas para além de 31/12/1999. 1 De Janeiro do ano 2000, de irão os programas pensa é o ano 2000, 1900 ou mesmo 1980? O objectivo deste artigo é assegurar que o Visual Basic aplicações funcionarão correctamente com datas para além de 31/12/1999.

Mais Informação

Enquanto todas as versões do Visual Basic processará anos superiores a 1999 (num formato de quatro dígitos), passar um ano de dois dígitos numa data (tal como 7/3/45) força o Visual Basic para assumir o século a data corresponde à. Talvez a melhor forma para explicar a este comportamento seria dar uma lição de histórico rápida do Visual Basic.

Lição do histórico de Visual Basic

Para todas as versões do Visual Basic para Windows (incluindo o respectivas predecessoras como o Visual Basic para DOS e QuickBasic) antes e incluindo 3.0, anos de dois dígitos foram sempre considerados in a 1900s. O código para implementar esta predefinição foi criado numa biblioteca de tempo de execução de cada versão e não depende a versão do sistema operativo ou o século da data actual do sistema.

Entre os ciclos de desenvolvimento para o Visual Basic 3.0 e 4.0, duas novas entidades emerged: Visual Basic for Applications e automatização OLE. Anterior para o aparecimento destas tecnologias, biblioteca de tempo de execução do Visual Basic continha código responsável para converter um ano de dois dígitos para um ano de quatro dígitos. Automatização OLE exposta uma grande funcionalidade que poderiam aceder a outras aplicações. Visual Basic for Applications não necessário implementar este código; conseguiu fazer chamadas para bibliotecas de automatização OLE em vez disso.

4.0 Do Visual Basic foi desenvolvido com esta interoperabilidade Lembre-se e começaram a dependem as bibliotecas de automatização OLE para converter anos de dois dígitos para anos com quatro dígitos na maioria dos casos. A excepção à regra é a função de SérieData foi implementada na biblioteca de tempo de execução do Visual Basic porque do Visual Basic necessários funcionalidade mais do que a biblioteca de Automação OLE poderia fornecer nesse momento.

Durante o ciclo de desenvolvimento do Visual Basic 4.0, a Microsoft decidiu que as predefinições utilizadas em versões anteriores do Visual Basic foram fiável, mas não necessariamente prático. Assim, uma nova regra emerged. Um ano de dois dígitos vai ser convertido para o século actual da data do sistema. Assim, Deverá avaliar Year(Date("1/1/00")) para o século actual. Esta nova regra foi implementada na automatização OLE bibliotecas utilizadas por 4.0 do Visual Basic e Visual Basic for Applications. A biblioteca de tempo de execução do Visual Basic 4.0 também implementa a regra para a função ' SérieData.

Microsoft posteriormente reconsidered e alterar a predefinição a Automação OLE (agora simplesmente automatização) bibliotecas como de versão 2.20.4049 OleAut32.dll. Esta alteração não afecta aplicações de 16 bits que dependem das bibliotecas de automatização, aplicações de 32 bits. Agora, um ano de dois algarismos entre 00 e 29 (tal como 17) é interpretado como 2017 enquanto um ano de dois dígitos entre 30 e 99 (tal como 72) é interpretado como 1972. As novas bibliotecas de automatização fornecem a funcionalidade requer o Visual Basic para a função ' SérieData. Assim, Visual Basic 5.0 e versões posteriores não implementam regras para esta função as bibliotecas de tempo de execução.

A biblioteca de automatização actualizada é fornecido com Internet Explorer versão 3.0 e posterior, Windows NT 3.51 Service Pack 5, Windows NT 4.0, Windows 95 OSR 2, Office 97, Visual Basic 5.0 e outros produtos.

O que faz tudo esta média para programadores que utilizar o Visual Basic?

Visual Basic 3.0 e versões anteriores convertem todos os anos de dois dígitos para o 1900s.

Visual Basic 4.0 (16 bits) converte todos os anos de dois dígitos para o século da data actual do sistema. Consoante a função utilizada, o Visual Basic converte a data com base nos valores predefinidos em bibliotecas de automatização de 16 bits ou a biblioteca de tempo de execução. As predefinições nas bibliotecas de automatização de 16 bits não foram modificadas desde o Visual Basic 4.0 disponibilizadas pelo que o comportamento é consistente independentemente da função data é utilizada.

4.0 Do Visual Basic (32 bits) converte dois dígitos para anos com quatro dígitos baseados a predefinição nas bibliotecas de automatização, excepto quando utilizar a função SérieData que converte todos os anos de dois dígitos para o século da data actual do sistema. As bibliotecas de automatização de 32 bits (OleAut32.dll versão 2.10) enviado quando o Visual Basic 4.0 foi lançado converter todos os anos de dois dígitos para o século da data actual do sistema. Bibliotecas de automatização de 32 bits posteriores (OleAut32.dll versão 2.20 ou posterior) converter anos de dois dígitos para o 1900s se o ano de dois dígitos é entre 30 e 99. Se se encontrar o ano com dois algarismos entre 00 e 29, a data será convertida para correspondendo ao século XXI.

Versões do Visual Basic posteriormente para 4.0, converter dois dígitos para anos com quatro dígitos baseados a predefinição nas bibliotecas de automatização para todas as funções de data. Visual Basic 5.0 fornecido com versão 2.20.4054 converte anos de dois dígitos para o 1900s se o ano de dois dígitos é entre 30 e 99. Se se encontrar o ano com dois algarismos entre 00 e 29, a data será convertida para correspondendo ao século XXI.

E se eu não como essas predefinições?

Poderá utilizar seu conjunto de regras em vez de utilizar as predefinições nativas para o Visual Basic. Por exemplo, poderá introduzir apenas um ano de dois dígitos e ter 00 para 49 correspondem para os anos 2000 a 2049 e ter 50 a 99 correspondem aos anos 1950 a 1999.

Quando aceitar uma cadeia de data do utilizador, teste o formato da cadeia para determinar o número de dígitos introduzido para o ano. De acordo com as regras para esta aplicação de exemplo, 1/11/45 é no ano 2045 e não no ano 1945. No código para a aplicação, altere a cadeia a utilizar o ano de quatro dígitos adequado e converter essa cadeia de data com o ano de quatro dígitos numa variável de data.

Código de exemplo

O seguinte código avalia os dados introduzidos na caixa de texto denominada txtDate quando clica cmdConvertDate. Se a data contiver um ano de dois dígitos, a data é convertida numa data de ano de quatro dígitos de acordo com a regra de exemplo. O código, em seguida, apresenta a data inicial introduzida, o ano completo como convertidos pelo código de acordo com a regra exemplo, e o ano completo é convertido por predefinições nativas para o Visual Basic. Finalmente, data mostrada no txtDate é convertida para uma data com o ano de quatro dígitos adequado não ambígua.

Assim que tiver desenvolvido código para processar as suas próprias regras para interpretar anos de dois dígitos, pode criar esse código para um controlo personalizado com o controlo de criação edição do Visual Basic de 32 bits. Para obter mais informações sobre este produto e como criar os seus próprios controlos personalizados, consulte o Microsoft Visual Basic Web site em:

http://www.microsoft.com/vbasic

Este código requer que as datas ser introduzidas no formato mm/dd/aa, mas pode facilmente ser alterado para processar um formato de data diferente:

   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
				

Referências

Ajuda do Microsoft Visual Basic ficheiro; procurar no: data e tipos de dados variante; ÉData função; funções CDATA e CVData;

(c) 1997 Microsoft Corporation, todos os direitos reservados. Contribuições de David Sceppa, Microsoft Corporation

Propriedades

Artigo: 162718 - Última revisão: 21 de fevereiro de 2014 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Learning Edition
  • 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhowto KB162718 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 162718

Submeter comentários

 

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