【问题标题】:MS Access 2000 (*mdb) default value of Now() sometimes fails?MS Access 2000 (*mdb) 默认值 Now() 有时会失败?
【发布时间】:2016-11-15 17:25:21
【问题描述】:

MS Access 2000 数据库是否存在已知的故障模式,当数据被拒绝(或静默丢弃,这更糟)插入到包含日期/时间类型字段的表中时,默认值为 =Now( ) ?

相关日期/时间字段未编入索引或不需要;

但是当一个 INSERT 查询被发送到数据库时,看起来 =Now() 函数失败了 - 并且数据没有写入表(但是另一个自动增量字段查找被执行,因为稍后=Now() 成功,自增有间隙,等于查询运行的次数)

例如我在表中看到

ID | Data | Timestamp
5  | foo  | 11/15/2016 17:15:00
1  | foo  | 11/15/2016 17:11:00

INSERT INTO TheTable ([Data]) VALUES (foo) 每分钟运行一次并且问题发生在运行 2、3 和 4 时。最终在一段时间后成功(如 ID=5 所示)

为什么我认为这可能是 =Now() 问题?

因为如果计算机时钟改变/向后/(例如在 DST 调整期间),就会发生相同/相似的故障。

但它最近突然发生了,在 DST 调整实际上已经发生的几个小时内无法将数据写入该表。

(程序本身没有被告知查询失败并像什么都没发生一样向前收费 - 一些调试工作仍在等待中)

我查看了 SO,想知道这个 Table Field Default Property Values Functions Not Working Anymore in Microsoft Access 2010 是否与它有关?但是程序和数据库通过 ODBC Microsoft Access (*.mdb) 驱动程序进行通信(是的 MS Office 2000 文件...)

希望这是有道理的, 亲切的问候...

【问题讨论】:

    标签: ms-access visual-c++ ms-access-2000


    【解决方案1】:

    从来没有听说过这样的问题,但为什么不调整你的SQL:

    INSERT INTO TheTable ([Data], [Timestamp]) VALUES (foo, Now())
    

    【讨论】:

    • 我要去。
    • 还可以创建一个测试/回退例程来验证该行是否已插入,如果无法检索,则尝试再次插入,但使用自己的方式检索当前日期/时间.很难调试它,因为它永远不会在测试台上发生......无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多