【问题标题】:Configuring an Access report to use a SQL Server stored procedure as its record source配置 Access 报表以使用 SQL Server 存储过程作为其记录源
【发布时间】:2013-12-14 06:19:24
【问题描述】:

我正在尝试使用 MS SQL Server 存储过程的结果在 MS Access 2010 中创建报告。在我的 VBA 代码中,我尝试:

Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = CurrentDb.TableDefs("[MyTable]").Connect
qdf.SQL = "exec spMyProc @ID = " & "1"
qdf.ReturnsRecords = True

Set rs = qdf.OpenRecordset(dbOpenSnapshot)

Set Me.Recordset = rs

但是它会抛出一个错误:

运行时错误“32585”
此功能仅在 ADP 中可用。

我做错了什么或如何解决?

【问题讨论】:

    标签: sql-server vba ms-access stored-procedures ms-access-2010


    【解决方案1】:

    在执行存储过程的 Access 中创建一个保存的传递查询。在此示例中,我将调用命名查询 [myPassThroughQuery]。

    编辑您的报告,使myPassThroughQuery 成为报告的Record Source

    现在您可以在打开报告之前调整 SP 调用:

    Dim cdb As DAO.Database, qdf As DAO.QueryDef
    Set cdb = CurrentDb
    Set qdf = cdb.QueryDefs("myPassThroughQuery")
    qdf.SQL = "EXEC spMyProc @ID = " & "1"
    Set qdf = Nothing
    Set cdb = Nothing
    DoCmd.OpenReport "mySpReport", acViewPreview
    

    【讨论】:

    • “在 Access 中创建一个保存的传递查询来执行你的存储过程” - 你能写一个例子吗?是查询应该像 exec spMyProc @Id = ???
    • @ihorko 您可以使用问题中的前五行代码在 VBA 中执行此操作,但使用 .CreateQueryDef("myPassThroughQuery") 而不是 .CreateQueryDef("")。或者您可以使用 Access GUI (Create > Queries)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2014-10-28
    • 1970-01-01
    • 2018-02-16
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多