Ms access 访问报告-记录集克隆为。记录源

Ms access 访问报告-记录集克隆为。记录源,ms-access,vba,Ms Access,Vba,我有一张表格,上面有报表按钮。我想将Report.Recordsource设置为屏幕上的任何值,所以基本上我需要.RecordsetClone表单发送到Report。以下是我尝试过的,但不起作用: Me.Recordsource= Forms!Myform.RecordsetClone 我得到了一个无效的论点。有什么办法解决这个问题吗 编辑: 我也试过了-此按钮放在有记录的窗体上,并打开报告: Private Sub cmdOpenReport_Click() DoCmd.OpenRepor

我有一张表格,上面有报表按钮。我想将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

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

Me.RecordSource = Forms!Myform.RecordSource
但这不包括应用于表单的筛选器。但是,可以使用相同的方法复制过滤器,然后:

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

古斯塔夫,这是正确的答案。我已经为此打开了另一个线程,但我不知道哪里出了问题,哪里出了问题。对不起,我错贴了。以下是我的帖子链接:


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

Recordsource
需要一个字符串(查询或SQL)。您可以尝试
Set Me.Recordset=Forms!Myform.RecordsetClone
但我不确定这是否有效。@Andre,在Report\u Open事件中粘贴此项时,我收到错误:“此功能仅在ADP中可用”。看起来好像不行。古斯塔夫,我应该在哪里以及如何在公开赛中尝试?我试过了,但什么也没发生。或者我必须在按钮点击事件中做些什么?在这里我打开报告(DoCmd.Openreport,“myReport”,AcViewPreview),我会使用点击事件,但是你必须用
报告替换
Me
。[NameOfYourReport]
检查我编辑的问题,如果这是你的意思。它不起作用了。尝试使用一些空白的连续表单进行测试-输入2行,然后在不关闭表单的情况下打开报表,以查看这2行-您将只看到一条上次保存的记录。然后使用
报表加载
事件进行还原。它也不起作用。正如我在开始时所说,我需要以某种方式将RecordsetClone设置为Report。我忘了提到有记录的表单实际上是通过SQL在所需的记录中打开的。所以表单的记录源基本上是在加载时定义的。看起来你不能再重新定义它了,所以这一定是一种制作RecordsetClone的方法。
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 & ")