通过Microsoft Access文本框解释模糊日期

时间:2015-02-24 10:21:17

标签: forms vba date ms-access

我一直在搜索MSDN或任何其他官方规范而没有任何运气,这些规范描述了如何在日期格式文本框中解释2位数年份。也就是说,当手动将数据输入到表单上的文本框中时,将格式发送到短日期。 (我当前的语言环境将日期定义为yyyy / MM / dd)

一些随机观察(从输入日期转换)

29/12/31 --> 2029/12/31
30/1/1   --> 1930/01/01

到目前为止,它有意义,2位数日期的范围是1930年至2029年。然后我们继续,

1/2/32  --> 1932/01/02 (interpreted as M/d/yy)
15/2/28 --> 2015/02/28 (interpreted as yy/M/dd)
15/2/29 --> 2029/02/15 (interpreted as M/d/yy)
2/28/16 --> 2016/02/28 (interpreted as M/dd/yy)
2/29/15 --> 2029/02/15 (interpreted as M/yy/dd)

它试图扭曲无效日期,以便它们以某种格式有效,但似乎忽略了日期的系统区域设置。只有那些无效的格式(如0/0/1)似乎会产生错误。这种行为是否记录在某处?

(我只想将最终用户引用到本文档中,我对实际行为没有任何问题)

1 个答案:

答案 0 :(得分:0)

Acc2Date.exe自述文件中,自1999-12-17以来, 29/30分割以这种方式解决了这个问题,作为上一次Y2K更新的一部分:

  

简介

     

Acc2Date.exe文件包含三个修改方式的更新文件   Microsoft Access 2.0解释了两位数的年份。默认情况下,Access   2.0解释用户输入或从文本文件导入的所有日期都在20世纪。应用更新后   文件,Access 2.0将处理从中导入的两位数日期   文本按以下方式进行:

     <00> 00到29 - 解决到2000年到2029年30到99年 - 解决   到1930年至1999年

     

输入对象属性表的年份,即查询设计   网格或Access模块​​中的表达式将基于a进行解释   计算机上Win.ini中定义的100年滑动日期窗口   正在运行Access 2.0。

     

Acc2Date.exe文件包含以下文件:

 File name      Version     Description   
 ---------------------------------------------------------------------    
 MSABC200.DLL   2.03        The Updated Access Basic file
 MSAJT200.DLL   2.50.2825   The Updated Access Jet Engine Library file
 MSAJU200.DLL   2.50.2819   The Updated Access Jet Utilities file
 Readme.txt     n/a         This readme file
  

有关此更新解决的特定问题的详细信息,   请参阅Microsoft知识库中的以下文章:

Article ID: Q75455    
Title     : ACC2: Years between 00 and 29 Are Interpreted as 1900 to 1929

这篇文章可以在这里找到KB75455(延迟页面加载):

ACC2: Years Between 00 and 29 Are Interpreted as 1900 to 1929

至于2/29/15这里不接受系统默认值为dd-mm-yyyy的情况,因此Access / VBA在解释日期表达式时的创造力有限。