MS Access调用SQL Server存储过程

问题描述 投票:11回答:4

我有一个MS Access应用程序,其中包含链接到SQL Server的所有表,因此在MS Access VBA代码或查询中我使用这些表非常简单,我通过名称访问它们,如[Customers]

我在SQL Server中有一个名为sp_CopyData的存储过程,我需要从我的VBA代码中调用它。如何在不创建与SQL Server的新连接的情况下执行此操作(我已经在某处!?因为我可以访问表)?

或者这不可能?感谢任何帮助。谢谢!

sql-server vba ms-access stored-procedures ms-access-2007
4个回答
17
投票

找到正确的答案,应该是这样的:

Dim qdef As DAO.QueryDef
Set qdef = CurrentDb.CreateQueryDef("")
qdef.Connect = CurrentDb.TableDefs("[ANY LINKED TABLE TO MS SQL SERVER]").Connect
qdef.SQL = "EXEC sp_CopyData"
qdef.ReturnsRecords = False  ''avoid 3065 error
qdef.Execute

12
投票

创建一个传递查询,然后您可以在需要执行某些T-SQL时随时在整个WHOLE应用程序中使用它。

代码变为:

With CurrentDb.QueryDefs("qPass")
  .SQL = "exec sp_copydata"
  .ReturnsRecords = False  ''avoid 3065 error
  .Execute
End With

5
投票

MS Access中的代码适用于我:

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=[DB];Data Source=[PC];Integrated Security=SSPI;"
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sp_CopyData"
cmd.Parameters.Append cmd.CreateParameter("@param", adVarChar, adParamInput, 255, param)
cmd.Execute

4
投票

尝试:

CurrentProject.Connection.Execute "EXEC sp_CopyData"

参考文献:http://msdn.microsoft.com/en-us/library/office/ff821478(v=office.14).aspx

© www.soinside.com 2019 - 2024. All rights reserved.