Sql server 在SQL Server中执行过程的MS访问

Sql server 在SQL Server中执行过程的MS访问,sql-server,vba,ms-access,Sql Server,Vba,Ms Access,我有一个在SQLServer中创建和更新表的过程。结果表链接到MS ACCESS FE。它之前是由涉及MS Access中查询的宏创建的。如何从MS Access FE调用或执行Proc 我尝试了这个代码,但没有任何结果 Dim cmd As ADODB.Command Set cmd = New ADODB.Command cmd.ActiveConnection = "Provider=SQLNCLI11.1;Security=SSPI;Initial Catalog=MYDB;Server

我有一个在SQLServer中创建和更新表的过程。结果表链接到MS ACCESS FE。它之前是由涉及MS Access中查询的宏创建的。如何从MS Access FE调用或执行Proc

我尝试了这个代码,但没有任何结果

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = "Provider=SQLNCLI11.1;Security=SSPI;Initial Catalog=MYDB;Server=MyServer;Integrated Security=SSPI;"
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "UPDATE_DATA"
cmd.Execute

我不熟悉VBA编码。任何帮助或线索都将不胜感激。

在您的代码中,您尚未打开与数据库的连接。首先打开连接,如以下代码所示:

Private Const gcConn As String = "Provider=SQLNCLI11.1;Security=SSPI;Initial Catalog=MYDB;Server=MyServer;Integrated Security=SSPI;"

Sub UpdateProc()

Dim oDB As ADODB.Connection
Dim oCM As ADODB.Command

Set oDB = New ADODB.Connection
oDB.Open gcConn
Set oCM = New ADODB.Command

With oCM
    .ActiveConnection = oDB
    .CommandType = adCmdStoredProc
    .CommandText = "UPDATE_DATA"
    .Execute
End With

oDB.Close
Set oDB = Nothing

End Sub

只需将命令另存为传递查询。因此,您的查询是:

UPDATE_DATA
然后这一行代码将运行该查询

CurrentDb.QueryDefs("MyPass").Execute

我得到一个错误“子函数或函数中的属性无效”,但您已在子函数外部声明了它,我不知道它为什么会抛出此错误。您是否将代码放在另一个过程或空白模块中?是的,放在另一个完成了多个VBA任务的模块中。第一行必须在第一个过程之前,或者根据答案的更新在过程中声明它。我在测试中以不同的形式包含了它MS访问数据库。但我看不到要运行的进程,目标表没有更改。我得到一个ODBC调用失败的“SQL Server Client 11.0”。在“Mypass”中也有不正确的语法。\102 CurrentDb.QueryDefs(“MyProc”).执行由于表驻留在SQL Server上,我觉得构建proc是一个更好的解决方案,然后从Access执行。我做了一些返工,我相信传递查询为我完成了这项工作。因为结束表的结果是几千而不是几百万。所以链接表完成了这项工作。