我有一些麻煩得到一些複雜的IF邏輯工作內部的MS Access查詢,並在這一刻感覺油炸,所以我希望一雙新鮮的眼睛可以幫助我解決我的問題。複雜訪問公式邏輯
下面的截圖我希望能幫助我的邏輯更加清晰。與式
我的最終結果是,以確定是否一個借方(Borr)是外的日期提交的文件。在這種情況下,我只關心(P)FS和/或IE文件。
過期的條件有點複雜,我會在下面解釋它們。 TRUE等同於過期並且假爲合規。
- 如果
NR
複選框被選中爲(P)FS
和IE
然後FALSE - 如果不檢查
(P)FS
而IE
的NR
框和(P)FSdate is blank AND
IE`日期爲空白,則TRUE
這很容易,但現在對於棘手的部分 CYYY =當前的年,PYYY =前一年,PY2Y = 2年前
- 如果
(P)FS
或IE
是必需的,如果當前日期是1/1/CYYY和4/30/CYYYY和日期之間在(P)FS
或IE
爲10/1/PY2Y和4之間/ 30/PYYY然後FALSE否則TRUE - 如果
(P)FS
或IE
是必需的,如果當前日期是5/1/CYYY和9/30之間/ CYYYY和日期(P)FS
或IE
小於1歲然後FALSE否則TRUE - 最後一點要記住的是,只要有一個向上的最新
(P)FS
或IE
文件,結果應該是FALSE。他們都不是必需的。它是或者。
這張截圖應該有助於澄清日期公式:
這是我已經進入最後的取數公式,但仍然無法正常工作。我也想我知道爲什麼,但我也用這個炒,試圖繼續解決的時刻:
B1-FS-IE: IIf([annual_review].[prop_cd]<>"0056" And [nr_fs_b1]=True And
[nr_ie_b1]=True,False,IIf(([nr_fs_b1]=False And IsNull([fs_b1])) And ([nr_ie_b1]=False
And IsNull([ie_b1])),True,IIf(Month([fs_b1])>9 Or Month([fs_b1])<5
And (Month(Date())<5 And Date()-[fs_b1]>576) Or (Month([fs_b1])>4
And Month([fs_b1])<10 And Date()-[fs_b1]>=365) Or Month([ie_b1])>9
Or Month([ie_b1])<5 And (Month(Date())<5 And Date()-[ie_b1]>576)
Or (Month([ie_b1])>4 And Month([ie_b1])<10 And Date()-[ie_b1]>=365),True,False)))
最後,我把Excel
標籤,因爲如果有人能工作,這一點在Excel中,我可以轉換爲Access。
像這樣的公式不僅是一個噩夢發展,但也維護。我會把邏輯放入一個公共的VBA函數中,並將相關字段作爲參數傳遞。在那裏你可以編寫可讀的代碼。 – Andre
@Andre - 輝煌!我甚至沒有想到這一點。這將使得構建,閱讀和維護變得更容易!感謝您對我需要的觀點的改變! –