Msaccess 2010-基于记录源的报告

时间:2013-01-14 11:33:45

标签: ms-access-2010

我已经查看过您的前一个例子,详细说明如下。但是我有一个问题:

继承我的代码,它运行在名为Reports:

的表单上的按钮上
Dim dbs As Database

    Dim qdf As QueryDef
    Dim varitem As Variant

    Set dbs = CurrentDb()

    Set qdf = dbs.QueryDefs("Qry_rpt_cr")
    qdf.Parameters(0) = Forms!frm_reports.rmselectfilter.Column(1, varitem)
    qdf.Parameters(4) = Forms!frm_reports.rmselectperiod.Column(0, 0)
    qdf.Parameters(3) = Forms!frm_reports.rmselectperiod.Column(0, 1)
    qdf.Parameters(2) = Forms!frm_reports.rmselectperiod.Column(0, 2)
    qdf.Parameters(1) = Forms!frm_reports.rmselectperiod.Column(0, 3)

    Set grst = CurrentDb.OpenRecordset("Select * from Qry_rpt_cr")

    DoCmd.OpenReport "rpt_cr_test", acPreview

    grst.Close

    Set grst = Nothing
End Sub

问题是查询需要传递五个参数,然后使用定义的参数打开记录集,然后打开报告。但是代码没有打开。它在这一行上说错误设置grst = CurrentDb.OpenRecordset(“从* Qry_rpt_cr中选择*”)要求5个参数,但我已经在代码中提前通过了它们。任何建议都会受到欢迎。很乐意为正确答案捐款。 ED

您的档案示例 从Access Web,您可以使用记录集的“name”属性。结果代码看起来像这样:

在报告中

Private Sub Report_Open(Cancel As Integer)
    Me.RecordSource = gMyRecordSet.Name
End Sub

在调用对象(模块,表单等)中

Public gMyRecordSet As Recordset
'...
Public Sub callMyReport()
    '...
    Set gMyRecordSet = CurrentDb.OpenRecordset("Select * " & _
                                               "from foo " & _
                                               "where bar='yaddah'")
    DoCmd.OpenReport "myReport", acViewPreview  
    '...
    gMyRecordSet.Close  
    Set gMyRecordSet = Nothing
    '...
End Sub

1 个答案:

答案 0 :(得分:1)

我暂时没有使用Access,但我认为你是为查询设置params,然后运行不同的查询。 Access要求为您询问的查询提供参数(“select * from ...”),而不是查询引用的(命名)查询,如果有意义的话。

这应该很容易修复,只需从QueryDef运行OpenRecordset

Set grst = qdf.OpenRecordSet

然后Access将正确包含查询的参数。

编辑:Thx Remou