背景:我正在使用Microsoft sql Server 2008后端的Access 2010用户前端工作.访问中的表都链接到sql Server数据库.我有一个存储过程,将新值(由参数提供)插入表中.我经历了很多例子,但我不明白是否真的很接近它或者我完全没有.我之前问了一个类似的问题并得到了一个很好的回答,但我有关于连接字符串的问题.这是问题/ anwser
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我试图实现这段代码,但我不确定如何传递参数,所以我尝试使用前面的例子.但是我在“Set rst = qdf.OpenRecordset(dbOpenSnapshot)”这一行得到错误“call Failed”,更不用说我的传递参数代码可能是关闭的.
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",InstrumentName) qdf.Parameters.Append qdf.CreateParameter("@FileName",FileName) qdf.Parameters.Append qdf.CreateParameter("@QueueId",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 = Me.Connection .CommandText = "your stored procedure" .CommandType = adCmdStoredProc .CommandTimeout = 0 .Parameters.Append .CreateParameter("your parameter name",adInteger,your parameter value) ' repeat as many times as you have parameters .Execute End With
要获取连接字符串,可以使用该行
Debug.Print CurrentDb.TableDefs("tblInstrumentInterfaceLog").Connect
在立即窗口中,它应显示您可以使用的连接字符串.
如果您有任何问题,请尝试一下,让我知道.
灰