【问题标题】:Can a VBA/ADODB recordset connection be used to retreive 'output' parameters from an Access stored query?可以使用 VBA/ADODB 记录集连接从 Access 存储查询中检索“输出”参数吗?
【发布时间】:2021-10-04 09:00:44
【问题描述】:

我一直在使用从 Excel VBA 到 Access 和 SQL Server 数据源的 ADODB 连接。

在使用 ADODB.Recordset.Parameters 集合调用 SQL Server 存储过程时,我可以发送输入参数,也可以接收输出参数。

但是,虽然我可以将输入参数发送到 Access 保存的查询中,但我无法找到一种方法来创建或接收与 Access 中的“输出”参数等效的参数。

是否存在使用 ADODB 连接对 Access 数据库的这种机制?

谢谢

【问题讨论】:

  • AFAIK,Access 不支持输出参数。如果可能的话,也许通过查询返回值?
  • 您可以在 SELECT 子句中创建一个输出值 - 并让该“伪字段”调用 VBA 函数以返回一个值或“输出参数”

标签: vba ms-access adodb


【解决方案1】:

Access 保存查询确实支持参数。你得到数据 - 所以没有输出参数。

公平地说,在大多数情况下,即使是 SQL 服务器存储过程也会返回数据而不是参数。

Access 现在确实有存储过程和表触发器。但是这些不能被 ODBC 或 ADO 调用。

因此,您可以创建查询,并且它们确实支持已将参数添加到此类查询中。

例如:

CREATE PROCEDURE Sales_By_Country [Beginning Date] DateTime, [Ending Date] DateTime;

但是,不要真的让“PROCEDURE”欺骗了你,它所做的只是创建一个带有参数的已保存查询。

由于您没有也不能真正调用 Access 存储过程,因此您真正拥有的只是可以发送到该数据引擎的 SQL 语句。

因此,如果您需要发票编号?

dim ivNum   as long
ivNum = 1234

 strSQL = "SELECT * from tblInvoices WHERE InvoiceNum = " & ivNum

因此,在大多数情况下,您都可以使用内联 sql,这具有很大的优势,因为您无需预先定义,甚至将您的 sql 查询限制为固定或硬无论如何编码参数。

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多