我在我的SQL Server和MS Access所在的虚拟机上运行。我建立了从Access到SQL的ODBC连接并链接了几个表。我可以对这些表执行常规操作(选择/更新等)。当试图从Access执行SQL Server存储过程时出现“无效SQL语句”错误
但是,我无法运行存储过程的一些奇怪的原因!该过程在SSMS上完美运行,但不是从Access VBA调用它时。以下是我使用执行PROC的代码(我需要传递3个参数为好,但我已经排除了从下面的代码为简单起见):
With CurrentDb.QueryDefs("qPass")
.SQL = "exec [HS].[spGetXMLExtract]"
.Execute
End With
通过MS访问返回的错误是
无效的SQL语句:期望的DELETE,INSERT,PROCEDURE,SELECT或UPDATE。
不知道是否发生这种情况,因为: 1.我在VM上安装了这些应用程序;和/或 2.我需要以某种方式将存储过程链接到MS Access,就像我为表所做的那样(也许这不能完成)。
我想我可能会采取复杂的方法但我不想。示例:
1.使用存储参数的列创建SQL表;在该表上写一个AFTER UPDATE
触发器,该表执行我的存储过程;从MS Access中触发一个'Update'查询来更新该表中的参数,然后SQL触发器被触发。要么;
2.完全消除存储过程,并通过MS Access中的Sub执行单个语句(选择/更新/插入等)。不知道这是否会导致创建临时表的问题。
有人可以请告知这个,这是一个真正的阻挡者!
在此先感谢!
这应该有效。你确定“qPass”是带有正确连接字符串的Pass-Through查询,并且'ReturnsRecords' = False? - 如果您手动运行该查询,该怎么办? – Andre
听起来像你diad不创建查询qPass作为传递。使用SQL设计器时,请确保您单击(选择)传递选项。 ONce完成你的代码应该可以正常工作。 –
谢谢你们。我不知道为什么它不工作,查询似乎是通过我。现在我已经使用触发器来节省时间,因为我需要遵守最后期限。但我会更深入! –