gpt4 book ai didi

vba - 从 excel vba 到 Access DB 的多个同时连接

转载 作者:行者123 更新时间:2023-12-04 21:55:02 25 4
gpt4 key购买 nike

我正在为一家银行构建一个有点复杂的 Excel 表格,它使用 Access 数据库。

该工作表将大量数据加载到预建工作表中。
之后,他们可以运行一些宏并添加一些输入
最后,我打开一个新连接,将这些输入插入到与开始查询的表不同的表中

我的问题是,将信息加载到工作簿时,此操作一次只能由一个用户执行。

当此过程在一台用户计算机上运行时,其他用户会收到错误

The Microsoft Office Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data.



我知道用户有权限,因为一旦用户 1 完成该过程,用户 2 就没有问题。

我正在使用 ADODB(连接、记录集和命令),这是我使用大约四次不同时间 Access 四个不同存储查询的代码:
Dim cnn As ADODB.Connection 
Dim rs As ADODB.Recordset
Dim cmd_apoio As New ADODB.Command

Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & PV.dbpath

With cmd_apoio
.ActiveConnection = cnn
.CommandType = adCmdStoredProc
.CommandText = "tabela_apoio_entidades"
.Parameters.Append .CreateParameter("nip", adNumeric, adParamInput, 20)
.Parameters.Append .CreateParameter("anomes", adNumeric, adParamInput, 20)
.Parameters(0) = PV.nip_grupo
.Parameters(1) = PV.ano_mes
End With

Set rs = cmd_apoio.Execute()

(PV.变量是在另一个模块(PV)中声明的公共(public)变量)
使用这种方法有没有办法一次允许多个连接?
特别是因为这只是为了检索信息(只读)而不是更新表中的任何记录。

我正在使用 Excel 2013 和 Access 2013,数据库是 .accdb

编辑:这些表是链接到 txt 文件的表(我认为这可能很重要)

最佳答案

尝试使用 rs.Open而不是 cmd.Execute ,并指定锁类型:

在您的 End With 之后:

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open cmd_apoio, cnn, adOpenStatic, adLockOptimistic

关于vba - 从 excel vba 到 Access DB 的多个同时连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46687397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com