2016-04-02 53 views
0

我有一個允許用戶爲「ACFTsn」選擇值的子窗體我想對名爲「日誌」的表應用過濾器,其中「sn」(上表中的字段)= ACFTsn 當我步執行代碼被附加到按鈕上窗體在子窗體上應用過濾器並基於過濾器打開報表

Me.Form.Filter = "table![Logbook].SN=me.ACFTsn" 
Me.FilterOn = True 
DoCmd.openreport "logbook", acViewReport, Filter 

以下時,收到不正確,或太複雜,無法評價鍵入錯誤3071 /表達。

我確定存在語法錯誤,因爲這是我第一次嘗試使用VBA過濾器,我不確定這是將其應用於報表的正確方法。

回答

1

它應該是這個簡單:

Me.Filter = "[SN] = '" & Me!ACFTsn.Value & "'" 
Me.FilterOn = True 

如果SN不是字符串:

Me.Filter = "[SN] = " & Me!ACFTsn.Value & "" 
Me.FilterOn = True 

申請報告上的相同的過濾器:

DoCmd.openreport "logbook", acViewReport, , Me.Filter 
+0

我粘貼了前兩行並跟着他們: DoCmd.openreport「日誌」,acViewReport //報表打開,但未被過濾。 –

+0

然後將過濾器應用於報告。 – Gustav

+0

完美地工作。我錯過了原始帖子的最後一行。 –

2

另外,您可以使用ApplyFilter方法或甚至SetFilter(對於MS Access 2010+):

Dim strfilter As String 
strfilter = "[SN] = '" & Me!ACFTsn.Value & "'" 

DoCmd.ApplyFilter , strfilter       ' FILTERS FORM 
DoCmd.OpenReport "logbook", acViewReport, strfilter ' FILTERS REPORT