2

我在 Access 2010 应用程序中有一个直通查询,我用它来调用 SQL Server 后端上的存储过程。存储过程需要一个我需要动态化的参数。问题是这样的:

Execute spMyProc 'userName'按预期工作。

Execute spMyProc getUserName()生成“')'处的语法错误”消息。

是否可以在传递查询中使用函数作为参数?

另外,我应该注意到我正在将一个复杂的 Access 应用程序迁移到 SQL Server,而且我真的不精通我在做什么。任何关于我做错的事情的建议将不胜感激。这个特殊的问题是由于试图将表单的记录源从记录源属性中的简单选择语句更改为可以在服务器上运行的东西而引起的。

4

1 回答 1

4

您可以使用以下代码:

With CurrentDb.QueryDefs("MyPass")
  .SQL = "exec spMyProc '" & getUserName() & "'"
  .Execute
End With

因为 getUserName() 是一个本地 VBA 函数,所以您需要预先评估发送到 SQL Server 的实际字符串。如上所示,使用保存的传递是“方便的”,因为您不必处理连接字符串等。

于 2015-02-26T06:09:11.490 回答