VBA正确访问多用户数据库

时间:2018-03-28 20:14:26

标签: vba excel-vba access-vba excel

我有一个Excel加载项目,我正在使用该项目,其中有多个用户访问服务器上的数据库。只要一次只有一个用户访问数据库,目前所有代码都能正常工作并且一切正常。我使用DAO访问数据库并使用以下代码行传递SQL字符串来检索记录

Set db = OpenDatabase(g400DBPath, , True)
Set rs = db.OpenRecordset(sSQL, dbOpenSnapshot)

这会产生一个问题,即如果同时有多个人尝试访问数据库,则只有第一个人能够访问它。我尝试将记录集代码行更改为以下

Set rs = db.OpenRecordset(sSQL, dbOpenSnapshot, , dbOptimistic)

但是这给了我以下错误:运行时错误' 3001:无效参数

如何设置对记录集的访问权限以便多个用户可以运行报告?用户根本不更新数据库中的任何信息,一切都是只读的。

1 个答案:

答案 0 :(得分:0)

您的问题是:快照类型记录集始终是只读的。指定任何编辑锁定选项将引发运行时错误,因为快照类型记录集不会执行锁定。

我无法重现这种行为,但您可以尝试以下方法:

Set db = OpenDatabase(g400DBPath, False, False) 'Read-only can lead to exclusive locks since more specific locks are stored in the DB
Set rs = db.OpenRecordset(sSQL, dbOpenSnapshot, dbReadOnly)

或者,您可以尝试使用ADO和断开连接的记录集。据我所知,DAO并没有提供这种功能。