ID do artigo: 241728 - Última revisão: segunda-feira, 28 de junho de 2004 - Revisão: 3.0 PROBLEMA: Usando 2 dígitos com IsDate pode produzir resultados inesperados
Nesta páginaSintomasA função IsDate() pode retornar resultados inesperados se passado a uma data que contém um ano de 2 dígitos. CausaAs VBA data funções IsDate , formato , CDATA e CVDate utilizam uma função encontrada na automação OLE (OleAut32.dll). Esta função localiza todos os formatos de data possível por tokenizing cada um dos valores separados na seqüência de caracteres representando a data e retorna um valor Boolean que indica se a entrada pode ser representada como uma data. Isso é importante lembrar-se ao usar a função para interpretar uma data que contém um ano de 2 dígitos. Localidades diferentes utilizar vários formatos de data (ou seja, mm/dd/aa, aa/mm/dd, "DD MMM aa", "YY MMM DD" e assim por diante) e, portanto, a função tenta os dígitos em todas as posições até que a função tiver encontrado uma data válida ou esgotado todas as possibilidades. Corrente se 29 de fevereiro é uma data válida para um ano específico, é um exemplo de onde você pode obter resultados inesperados quando passando IsDate funcionar a uma data que contém um ano de 2 dígitos. Para ser mais específico, passar a função IsDate um ambíguo data como "29-fev-01", irá resultar em IsDate verificando todos os formatos de data disponíveis e retornam VERDADEIRO como 1 de fevereiro de 2029 é uma data válida. No entanto, quando o ano totalmente qualificado é passado como "29-fev-2001", em seguida, IsDate poderá determinar que isso uma data inválida e, portanto, retornará FALSE. ResoluçãoCrie uma função wrapper em torno a função IsDate para converter a data em um ano de 4 dígitos antes de passar a data convertida para a função IsDate() . SituaçãoEsse comportamento é por design. Mais InformaçõesAs funções no OleAut32.dll use um padrão "Deslizar ano" de modo que, por padrão, todos os anos de 2 dígitos no intervalo de 0 - 29 são considerados como sendo o 2000s e esteja no intervalo 30-99 estão na 1900s. Isso pode ser substituído facilmente com a seguinte função de wrapper. A documentação para a função IsDate define ele é projetado comportamento. IsDate(expression) A expressão necessária é um Variant que contém uma expressão de data ou expressão em seqüência reconhecível como uma data ou hora. Etapas para reproduzir o problema
Etapas para evitar o problema
A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 241728
(http://support.microsoft.com/kb/241728/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início