我有一个表单,其中包含报告按钮。我想将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
答案 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)
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 & ")
版主可以删除其中一个帖子,我不能这样做。