【问题标题】:Filling a report from a stored procedure to an Access front end将报告从存储过程填充到 Access 前端
【发布时间】:2016-03-02 16:38:24
【问题描述】:

假设这个存储过程在 SQL Server 中:

CREATE PROCEDURE sp_MySP AS
  BEGIN
    SELECT a.Field1, a.Field2, v.Field3, p.Field4, a.Field5
    INTO #Temp1
    FROM tblMyTable1 AS a, tblMyTable2 AS p, tblMyTable3 AS v
    WHERE a.Field1 = p.Field1 
    AND a.Field1 = v.Field1 

    SELECT a.Field1, a.Field2, v.Field3, p.Field4, a.Field5
    INTO #Temp2
    FROM tblMyTable1 AS a, tblMyTable2 AS p, tblMyTable3 AS v
    WHERE a.Field1 = p.Field1 
    AND a.Field1 = v.Field1 

    SELECT *
    FROM #Temp1

    UNION ALL

    SELECT *
    FROM #Temp2

  END

还有这个vba代码(我把vba代码放在了报表的LOAD事件上):

Private Sub Report_Load()
    Dim rs As ADODB.Recordset
    Dim cnComments As New ADODB.Connection
    Dim strConn As String
    strConn = "PROVIDER=SQLOLEDB;DATA SOURCE=WML202;INITIAL CATALOG=TOOL_TRACKING;UID=" & CVHx(SSTR1) & ";PWD=" & CVHx(SSTR2) & ";"
    cnComments.Open strConn

    Set rs = cnComments.Execute("EXEC sp_MySP")

    '** What do I do here?

End Sub

实际的存储过程要复杂得多(并且不必要),但这就是数据集的布局。这是几个 #Temp 文件的 UNION ALL。

我如何处理'** What do I do here? 部分,以便存储过程的结果将填充报告?

【问题讨论】:

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


【解决方案1】:

您可以将表单的记录源设置为调用存储过程的传递查询(类似于将其设置为表或查询/视图的名称)。

然后您可以简单地使用数据感知控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2013-07-08
    • 1970-01-01
    相关资源
    最近更新 更多