【问题标题】:MS Access not getting up-to-date records in multiple users environmentMS Access 无法在多用户环境中获取最新记录
【发布时间】:2017-03-22 07:02:21
【问题描述】:

我有一个供多个用户使用的 Access 应用程序。

程序和数据分为两个文件,程序位于用户的硬盘中,而数据文件位于服务器的共享文件夹中。

大程序是有时用户无法获得由其他用户创建或修改的最新记录,直到 Access 重新启动。

我想知道是否有任何缓存,所以 Access 只是获取旧数据。请指教。非常感谢。

query = "SELECT Max([ID])As MaxID FROM Entry"

Set rs = CurrentDB.OpenRecordset(query)

If IsNull(rs.Fields("MaxID").Value) Then
    largestId = 0
Else
    largestId = rs.Fields("MaxID").Value
End If

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    是的,Access 会缓存数据。您可以尝试将记录集作为快照打开(并使用 Nz):

    query = "SELECT Max([ID])As MaxID FROM Entry"
    Set rs = CurrentDB.OpenRecordset(query, dbOpenSnapshot)
    largestId = Nz(rs.Fields("MaxID").Value, 0)
    

    和/或重新查询记录集:

    query = "SELECT Max([ID])As MaxID FROM Entry"
    Set rs = CurrentDB.OpenRecordset(query)
    rs.Requery
    largestId = Nz(rs.Fields("MaxID").Value, 0)
    

    【讨论】:

    • 谢谢 Gustav,我可以知道 dbOpenSnapshot 或其他选项的功能是什么。我搜索了 MS 文档,但我仍然不完全了解它们到底是什么以及如何选择选项。再次感谢。
    • 一次读取所有记录。在这里仅使用一条记录并不意味着太多,但是 Access 不知道记录集何时打开,因此它的行为可能与作为默认动态集打开的行为不同。只需突出显示代码中的单词并按 F1 即可打开带有文档的网页。
    • 快照是只读的,而不是可编辑的动态集,我认为这对所有在 rs 打开时加载的记录没有任何影响
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多