MS Access 2003:用户能够输入无效值;怎么样?

时间:2011-04-28 10:07:07

标签: ms-access

我有一个奇怪的现象,我无法解释或重现,我希望你知道用户输入无效值的可能性。

我有一个Access-MDB,其中包含一个包含编辑字段的表单,该表单只接受没有任何日期信息的时间值。

该编辑字段的相关属性如下:

  • 绑定到日期/时间数据库值(因为访问不知道只有时间的数据类型)
  • 格式:“时间,24小时”
  • 输入格式:“99:99”

(我使用德语版的Access,所以属性名称可能会略有不同,但你会看到模式)

现在我发现用户能够在该字段中输入日期值。我几乎100%确定它是一个意外而且没有“聪明的黑客”,直接打开表格并编辑相应的日期/时间字段。由于参赛作品于2009年制作(没有人发现错误),我没有机会询问用户是如何完成的。

我发现两个日期为“01.06.2000”和“01.07.2000”的错误条目,我想用户想要输入时间“06:00”和“07:00”。

我尝试了所有我能想象的输入(例如“6.0”,“6; 0”,“6,0”,复制和粘贴),但我无法访问并输入除数字和冒号之外的任何内容。

您是否知道发生了什么以及用户如何能够意外地进入这些日期?

2 个答案:

答案 0 :(得分:1)

Jet / ACE日期/时间值永远不会存储“没有任何日期信息”。如果您尝试仅存储时间组件,它实际上将在第0天(1899年12月30日)的相同时间存储。

我们只能推测2009年如何添加不正确的数据。如果您希望数据库引擎要求将日期/时间值与第0天一起存储为日期组件,则可以添加表级验证规则。从表属性表中,尝试使用验证规则:

DateValue([your_date_field])=CDate("1899/12/30")

如果您想为your_date_field允许Null,请尝试以下版本:

IsNull([your_date_field]) Or DateValue([your_date_field])=CDate("1899/12/30")

答案 1 :(得分:0)

几种可能性:

  • 开发人员(你?)在查看原始表时偶然做到了
  • 客户端访问软件暂时疯狂并损坏了条目。这种情况发生在我们(很幸运很少),我们的Access表最终会在字符串字段中以非ASCII字符结束。
  • Access运行时中的错误允许过去出现问题,但已在服务包中得到纠正。

最后,如果你放了90个小时,它会溢出到4天之内吗?那可能会这样做。