从 ms 访问调用标量 UDF 函数

Posted

技术标签:

【中文标题】从 ms 访问调用标量 UDF 函数【英文标题】:Calling scalar UDF function from ms access 【发布时间】:2016-06-06 11:58:16 【问题描述】:

我试图在 ms 访问中从我的数据库中调用一个标量函数。 这个函数应该返回一行我的加盐和散列参数。

我最初的尝试看起来像这样并返回以下错误:“undefined function 'dbo.SaltAndHashPassword' in expression”

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT dbo.SaltAndHashPassword('" & Me.txtWW & "','" & Me.salt & "') as salted", dbOpenSnapshot, dbReadOnly)

我尝试了this question 的解决方案,但出现“需要对象”错误

我也尝试了this question 的解决方案,但我无法让它工作(可能是由于参数错误)

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

【参考方案1】:

在这种情况下,您不能使用CurrentDb。您必须将Connection 对象设置到存储dbo.SaltAndHashPassword 函数的服务器/数据库(您提到的示例使用连接,即使未显示设置它的代码),因为它完全未知访问。 或者,您可以在 Access 中创建一个直通查询并使用 DAO。我发现它更容易,并且避免了创建另一个外部引用。


类似:

   Set db = CurrentDb()
   'Create a temporary passthrough query ' 
   Set ptq = db.CreateQueryDef("")
   'set ODBC connection  '
   ptq.Connect = "your connect string"
   ptq.SQL = "SELECT * from your SQL"
   ptq.ReturnsRecords = True
   Set rs = ptq.OpenRecordset(dbOpenSnapshot)

【讨论】:

谢谢,那么我该如何设置连接对象或使用 DAO 创建直通查询?

以上是关于从 ms 访问调用标量 UDF 函数的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的标量 UDF 函数返回不止一行?

如何将 UDF 标量函数传递给存储过程?

使用 EXECUTE 从 SQL Server 调用用户定义函数时的标量结果不同

MSSQL 上标量 UDF 中的 NULL 参数

MS SQL Server 中的标量 UDF 在查询中仅返回一个值

从 MS 访问调用 dll 函数