我有點失落與這一個。我有一個子窗體,顯示基於我的組合框選擇的記錄。這是這樣完成的(代碼是從組合框After_Update叫):訪問 - 報告顯示子表單結果(加入表)
:Sub ShowResults1()
With Forms![MYForm].RecordsetClone
.FindFirst "[ID] = " & Forms![MyForm]![CmbSearch]
If Not .NoMatch Then
If Forms![MyForm].Dirty Then Forms![MyForm].Dirty = False
Forms![MyForm].MySubfom.SourceObject = "MySubform"
Forms![MyForm].Bookmark = .Bookmark
End If
End With
End Sub
主窗體綁定到一個連接表,這是它的記錄源(它是通過在它的ID連接到2臺)
SELECT JoinTable.*, Table1.IDx AS IDx_Table1, Table1.Field1, Table1.Field2, Table1.Field3, Table2.IDy AS IDy_Table2, Table2.Field1, Table2.Field2, Table2.Field3
FROM Table2 INNER JOIN (Table1 INNER JOIN JoinTable ON Table1.IDx = JoinTable.IDx) ON Table2.IDy = JoinTable.IDy;
當執行上層代碼時,我得到了符合條件的子窗體中的結果,所以這工作正常。
現在,我想要的是有一個報告,這將顯示確切地顯示子窗體allready顯示。這太複雜了,還是有任何簡單的解決方案?
編輯:
我創建了一個新的查詢(名爲 「SearchReport」):
SELECT Table2.IDy, Table2.Field1, Table2.Field3
FROM Table2 INNER JOIN (Table1 INNER JOIN Join_Table ON Table1.IDx = JoinTable.IDx) ON Table2.IDy = JoinTable.IDy
WHERE JoinTable.IDy=3;
該查詢成功地表明,我想記錄,但只有ID 3.現在我刪除了「WHERE JoinTable.IDy = 3「,以便我可以顯示基於我的組合框的記錄。這就是我試圖打開的報告:
DoCmd.OpenReport "MyReport", acViewReport, "SearchReport", WhereCondition:="JoinTable.IDy =" & Forms![MyForm]![CmbSearch]
但是當報告打開時,Access不斷詢問輸入IDy的參數值。即使我輸入3,也會顯示該查詢中的所有記錄。哪裏不對 ??
你會使用相同的源報表作爲子表單 –
我做不到該子窗體不在任何可用記錄源下列出。我相信,因爲子窗體的記錄源基於查詢(來自JoinTable和Table1)。請看看我的編輯,我認爲我在正確的道路上。 – LuckyLuke82
try,DoCmd.OpenReport「SearchReport」,acViewPreview ,,「idy =」&Forms![MyForm]![CmbSearch]並移除WHERE JoinTable.IDy = 3;從查詢 – nazark