2016-04-15 46 views
0

我有一個表格,它有報告按鈕。我想設置Report.Recordsource到屏幕上的任何東西,所以基本上我需要.RecordsetClone的形式發送到報告。這是我試過的,但它不起作用:訪問報告 - Recordsetclone as。記錄源

Me.Recordsource= Forms!Myform.RecordsetClone 

我得到一個無效的參數。任何想法如何解決這個問題?

編輯:

我想這太 - 這個按鈕被放置在具有記錄和打開Report形式:

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

'Recordsource'需要一個字符串(查詢或SQL)。你可以嘗試'Set Me.Recordset = Forms!Myform.RecordsetClone',但我不確定這是否有效。 – Andre

+0

@Andre,在Report_Open事件中粘貼時,出現錯誤:「此功能僅在ADP中可用」。看起來它不起作用。 – LuckyLuke82

回答

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 & ") 

版主可以刪除一個線程,我不能這樣做。

0

你不能這樣做,但你可能會逃脫:

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 
+0

Gustav,我在哪裏以及如何在Report_Open事件中嘗試此操作?我試過了,但沒有任何反應。或者我必須在button_click事件中做些什麼 - 我在哪裏打開報告(DoCmd.Openreport,「myReport」,AcViewPreview) – LuckyLuke82

+0

我會使用點擊事件 - 但那麼您必須用'Reports來替換'Me'。[NameOfYourReport]' – Gustav

+0

檢查我編輯的問題如果這是你的意思。它不工作。嘗試使用一些空白的連續表單進行測試 - 輸入2行,然後打開報告而不關閉表單,查看這2行 - 只會看到一個最後保存的記錄。 – LuckyLuke82