0

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

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

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

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

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

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

最初的

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

第二

我允许一些时间过去,将一些数据放入记录二,并且时间戳没有改变,现在记录三有一个时间戳:

第三

如果我关闭并打开表,则(新)记录的时间戳会在我打开表时更新为:

然后

我允许一些时间过去,更新记录和时间戳停留在我打开表的时间:

最后

4

1 回答 1

1

正如评论中已经揭示的那样,这个问题来自于在表中进行编辑,将 Now() 设置为 TimeStamp 字段的默认值。

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

Me!TimeStamp = Now()

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

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

于 2012-09-28T03:53:05.973 回答