为当前记录而不是为下一条记录生成时间戳

时间:2012-09-27 16:30:36

标签: ms-access timestamp

我对MS-Access有一个小问题,如下所示。

我有一个带有Timestamp列的表(字段的格式为Date/Time,默认值为Now())。问题在于,无论何时创建新记录,都会为我要创建的下一条记录设置时间戳,而不是我创建的记录。

这意味着我创建了记录50,并且时间戳设置为记录51.如果我一周后回来,并创建记录51,记录51的时间戳将是一周,并且时间戳将被设置记录52,我将在未来的某个时刻创建。

您可以通过启动MS-Access重新创建问题,创建一个包含几个字段的新表,其中一个字段是日期/时间,并将此字段的默认值设置为Now()。< / p>

这是设计,还是我在做一些愚蠢的事情?如果是设计,我如何在MS-Access中实现我想要的时间戳类型(在创建记录时设置日期/时间的类型)?如果我正在做一些愚蠢的事情,我到底在做什么?

编辑:下面是新创建的Access表的屏幕截图:

initial

我添加一些文本来记录一个,时间戳设置为记录二:

Second

我允许一些时间通过,将一些数据放入记录二,时间戳不会改变,现在记录三有一个时间戳:

Third

如果我关闭并打开表格,那么每当我打开表格时,(新)记录的时间戳都会更新:

Then

我允许一些时间通过,更新记录,并在我打开表格时保留时间戳:

Finally

1 个答案:

答案 0 :(得分:1)

正如评论中已经显示的那样,这个问题来自表格中的编辑,其中Now()设置为TimeStamp字段的默认值。

我建议您在表格中创建表单而不是编辑。如果您希望它看起来类似,只需使用数据表格。然后在Form的BeforeUpdate事件中输入代码如下:

Me!TimeStamp = Now()

作为旁注,我不会将TimeStamp用作字段名称。某些RDBMS(如SQL Server)具有名为TimeStamp的数据类型。最好避免使用数据类型或保留字的字段名称。将Access数据库移动到SQL Server非常常见,当您尝试执行此操作时可能会遇到问题。

相反,我会创建两个字段。一个名为DateTimeEntered,另一个名为DateTimeModified。我认为在我制作的几乎每张桌子中都需要这两个字段。如果你想进行任何类型的记录同步,你希望你至少有一个DateTimeModified字段。