我正在使用 Access 2010 用户前端和 Microsoft SQL Server 2008 后端工作。
Access 中的表都链接到 SQL Server 数据库。
我有一个存储过程,它将新值(由参数提供)插入表中。
我之前问过类似的问题并得到了很好的答案Calling Stored Procedure while passing parameters from Access Module in VBA
我不知道如何查找创建连接字符串所需的信息(例如:我不知道提供商/服务器名称/服务器地址)。
我在这里发现了一个问题,其中指出“如果您已经有一个指向 SQL Server 数据库的 Access 链接表,那么您只需将其 .Connect
字符串与 DAO.QueryDef 对象一起使用即可执行存储过程”-Connection string for Access to call SQL Server stored procedure
我尝试实现这段代码。为了传递参数,我尝试使用前面的示例。
我收到错误
call failed
在 Set rst = qdf.OpenRecordset(dbOpenSnapshot)
行(更不用说我的传递参数代码可能还很遥远)。
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = CurrentDb.TableDefs("tblInstrumentInterfaceLog").Connect
qdf.sql = "EXEC dbo.upInsertToInstrumentInterfaceLog"
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
qdf.Parameters.Append qdf.CreateParameter("@BatchID", adVarChar, adParamInput, 60, BatchID)
qdf.Parameters.Append qdf.CreateParameter("@InstrumentName", adVarChar, adParamInput, 60, InstrumentName)
qdf.Parameters.Append qdf.CreateParameter("@FileName", adVarChar, adParamInput, 60, FileName)
qdf.Parameters.Append qdf.CreateParameter("@QueueId", adVarChar, adParamInput, 60, QuenueId)
rst.Close
Set rst = Nothing
Set qdf = Nothing
谁能告诉我我的代码可能有什么问题以及为什么我会收到此错误?
最佳答案
维多利亚,
您可以使用 ADO 运行存储过程,如下所示...
Set mobjConn = New ADODB.Connection
mobjConn.Open "your connection string"
Set mobjCmd = New ADODB.Command
With mobjCmd
.ActiveConnection = mobjConn
.CommandText = "your stored procedure"
.CommandType = adCmdStoredProc
.CommandTimeout = 0
.Parameters.Append .CreateParameter("your parameter name", adInteger, adParamInput, , your parameter value)
' repeat as many times as you have parameters
.Execute
End With
要获取连接字符串,您可以使用该行
Debug.Print CurrentDb.TableDefs("tblInstrumentInterfaceLog").Connect
在立即窗口中,应该会显示一个可以使用的连接字符串。
您可以尝试一下吗?如果有任何问题请告诉我。
Ember
关于sql-server - 使用VBA调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24267080/