2013-07-30 66 views
2

我有一個填充了不同任務的子表單。我想用自動發生的過濾器在DUE_DT上過濾它們。其中一些記錄有一個空白DUE_DT,我想填寫。我還想過濾掉過去30天以上的記錄,其中DUE_DT已超過30天。我嘗試使用VB,但我一直無法找到合適的語法。過濾Microsoft Access子表

回答

0

「我想用自動發生的過濾器在DUE_DT上過濾它們。」

我不太清楚你在那裏有什麼,但我想知道這是否可以通過子窗體的記錄源查詢中的WHERE子句來處理。

WHERE DUE_DT >= Date() - 30 

這將是自動的,因爲過濾器總是適用。

請注意,您不必添加其他條件以明確排除空值(例如DUE_DT Is Not Null),因爲空值不是>= Date() - 30

+0

我已經在記錄源查詢中嘗試過你的建議,並且當我運行查詢時,我得到了我需要的結果。 但是,當我在窗體視圖中打開窗體時,子窗體輸出相同的結果,就好像根本沒有使用查詢。你有什麼建議如何解決這個問題? – Mike

+0

當你運行該查詢時,你會得到你需要的結果。這聽起來對我來說是正確的,所以我不明白......嗯......當你說記錄源查詢時,你的意思是主窗體或子窗體的記錄源?我的意思是表格的記錄來源。 – HansUp

+0

不幸的是,我看不到編輯子窗體的記錄源查詢的選項。 – Mike

0

試試這個在VBA,應每窗體或模塊,你把它放在上工作:

Form_subFormName.Filter = "DUE_DT IS NOT NULL AND DUE_DT >= #" & (Date - 30) & "#" 
Form_subFormName.FilterOn = True 

替換Form_subFormName與子窗體的名稱subFormName,但保留Form_

+0

我努力使這項工作-are'[表]'和'[subFormName]'應該與被改變此表單/子表單的名稱? – Mike

+0

我會編輯帖子澄清,對不起:) –

3

下面是一些語法appplying一個過濾器,一個子表單:

Forms!MyMainForm.ASubFormOnMyMainForm.Form.Filter = "whatever your filter is" 
Forms!MyMainForm.ASubFormOnMyMainForm.Form.FilterOn = True