我对MS-Access有一个小问题,如下所示。
我有一个带有Timestamp列的表(字段的格式为Date/Time
,默认值为Now()
)。问题在于,无论何时创建新记录,都会为我要创建的下一条记录设置时间戳,而不是我创建的记录。
这意味着我创建了记录50,并且时间戳设置为记录51.如果我一周后回来,并创建记录51,记录51的时间戳将是一周,并且时间戳将被设置记录52,我将在未来的某个时刻创建。
您可以通过启动MS-Access重新创建问题,创建一个包含几个字段的新表,其中一个字段是日期/时间,并将此字段的默认值设置为Now()
。< / p>
这是设计,还是我在做一些愚蠢的事情?如果是设计,我如何在MS-Access中实现我想要的时间戳类型(在创建记录时设置日期/时间的类型)?如果我正在做一些愚蠢的事情,我到底在做什么?
编辑:下面是新创建的Access表的屏幕截图:
我添加一些文本来记录一个,时间戳设置为记录二:
我允许一些时间通过,将一些数据放入记录二,时间戳不会改变,现在记录三有一个时间戳:
如果我关闭并打开表格,那么每当我打开表格时,(新)记录的时间戳都会更新:
我允许一些时间通过,更新记录,并在我打开表格时保留时间戳:
答案 0 :(得分:1)
正如评论中已经显示的那样,这个问题来自表格中的编辑,其中Now()设置为TimeStamp字段的默认值。
我建议您在表格中创建表单而不是编辑。如果您希望它看起来类似,只需使用数据表格。然后在Form的BeforeUpdate事件中输入代码如下:
Me!TimeStamp = Now()
作为旁注,我不会将TimeStamp用作字段名称。某些RDBMS(如SQL Server)具有名为TimeStamp的数据类型。最好避免使用数据类型或保留字的字段名称。将Access数据库移动到SQL Server非常常见,当您尝试执行此操作时可能会遇到问题。
相反,我会创建两个字段。一个名为DateTimeEntered,另一个名为DateTimeModified。我认为在我制作的几乎每张桌子中都需要这两个字段。如果你想进行任何类型的记录同步,你希望你至少有一个DateTimeModified字段。