访问报告 - Recordsetclone as。记录源

时间:2016-04-15 10:05:23

标签: vba ms-access access-vba

我有一个表单,其中包含报告按钮。我想将Report .Recordsource设置为屏幕上的任何内容,所以基本上我需要.RecordsetClone表单发送到Report。这是我尝试过的,但它不起作用:

Me.Recordsource= Forms!Myform.RecordsetClone

我得到了一个无效的论点。任何想法如何解决这个问题?

编辑:

我也试过这个 - 这个按钮放在有记录的表格上并打开报告:

Private Sub cmdOpenReport_Click()

DoCmd.OpenReport "MyReport", acViewReport
   Reports![MyReport].RecordSource = Me.RecordSource
Reports![MyReport].Filter = Me.Filter
Reports![MyReport].FilterOn = True

End Sub

2 个答案:

答案 0 :(得分:0)

你不能这样做,但你可以逃脱:

Me.RecordSource = Forms!Myform.RecordSource

虽然这不包括应用于表单的过滤器。但是,Filter可以以相同的方式复制,然后:

Me.Filter = Forms!Myform.Filter  
Me.FilterOn = True

虽然必须以通常的方式在报告中指定排序。

概念证明

Private Sub Report_Open(Cancel As Integer)

    If MsgBox("Mod 2?", vbQuestion + vbYesNo, "Select") = vbYes Then
        Me.RecordSource = "Select * From TestTable Where Id Mod 2 = 0"
    End If

End Sub

答案 1 :(得分:0)

古斯塔夫,这是正确的答案。我已经打开了另一个线程,但我不知道什么是错的,在哪里。对不起交叉。这是我的线程的链接: Access Report - show current recordsource of another form

Dim strWhere As String

        Me.Dirty = False

        With Me.Recordset.Clone
            Do Until .EOF
                strWhere = strWhere & "," & !ID
                .MoveNext
            Loop
        End With
        strWhere = Mid(strWhere, 2)
        DoCmd.OpenReport "MyReport", acViewReport, WhereCondition:="ID In (" & strWhere & ")

版主可以删除其中一个帖子,我不能这样做。