sql-server - 使用VBA调用存储过程

标签 sql-server vba ms-access stored-procedures

我正在使用 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/

相关文章:

c# - Image数据类型转Base64,Base64转Image数据类型

sql - 根据加入日期和离开日期选择用户

excel - If 语句 Excel 通配符

sql - 使用链接到 SQL 2008 的表对 Access 2003 数据库中的表进行排序是大小写锁定问题

ms-access - 对记录集使用 AddNew 时可以使用变量作为字段名称吗?

sql - sql - 设置顺序值而不循环/游标

sql-server - 如何在 SQL 2008 中更改列而不删除表

sql - 无论如何将SQL查询提取到Excel中

vba - 工作表复制错误 VBA

function - iif(Iserror())函数仍然返回#error