著作權聲明:可以任意轉載,轉載時請務必以超連結形式標明如下文章原始出處和作者資訊及本聲明
作者:xixi
出處:http://blog.csdn.net/slowgrace/archive/2008/10/02/3009505.aspx
表單控制項的條件式格式設定是指當指定的條件滿足時,以指定的格式顯示表單控制項,如以指定的背景色、指定的字型等顯示控制項及其內容。
可以手工設定條件式格式設定,方法是在表單檢視或資料工作表檢視下,選擇要設定格式的控制項,然後選菜單格式-》條件式格式設定。
比如各combobox的條件式格式設定設定如下:
第一條是,當控制項有焦點時,設定背景色為草綠色。第二條是當控制項值為NULL時設定控制項背景色為淺灰色。第三條是當某函數的值為真時,設定控制項的背景顏色為米黃色。
這裡要注意的是:
- ACCESS只允許有3條條件。
- 條件的類型有3種:一種是控制項獲得焦點時;一種是運算式為真時,需要使用者提供運算式;一種是控制項關聯的欄位值滿足某條件時(<, >, <=, >=, between, equal, not between, not equal), 之後使用者可以提供相應的數值區間
- 獲得焦點的條件必須是第一條
這裡我想重點講講運算式的用法,我是折騰了好久才弄明白的。其實我的要求也簡單,就是希望控制項值為NULL的時候顯示底板灰色。一開始我用欄位值=NULL做判斷,不行;後來用isnull函數,試了很多寫法,無意中發現上面這種寫法可以使ACCESS正確理解我的意思,就是根據控制項值的變化,即時的給ISNULL函數傳值。
isNull([cbo5])
其中在方括弧中的cbo5是控制項名。這種函數也可以是自己編寫的函數,比如我上面第3個條件用的就是自己的函數,仍然用控制項的即時值作為它的參數:
SetYellowOrNot([cbo5])
可以在程式裡設定條件式格式設定,看下面的代碼:
- Public Sub SetCboCondition()
- Dim i As Integer, j As Integer
- Dim cboX As Access.ComboBox
- Dim objFCs As Access.FormatConditions
-
- For i = 1 To 8
- Set cboX = Me.Controls("cbo" & i)
- Set objFCs = cboX.FormatConditions
-
- ' Bulk remove all current FormatConditions
objFCs.Delete
-
- objFCs.Add acFieldHasFocus
- objFCs(0).BackColor = RGB(146, 234, 58)
- objFCs.Add Type:=acExpression, Expression1:="isNull([cbo" & i & "])"
- objFCs(1).BackColor = RGB(230, 231, 229)
- objFCs.Add Type:=acExpression, Expression1:="SetYellowOrNot([cbo" & i & "])"
- objFCs(2).BackColor = RGB(245, 248, 116)
- Next i
-
- Set objFCs = Nothing
- Set cboX = Nothing
- End Sub
這段代碼一次性的給8個combobox控制項(cbo1, cbo2, …, cbo8)設定了上面3個條件式格式設定。注意formatconditons對象的add方法的第一個參數是type:用acFieldHasFocus值時,不需要提供其他參數;用acExpression時,則需要提供運算式。這裡這個運算式的寫法也是我試了N次才試出來的,就是要把整個運算式作為一個字串傳給它,代碼裡寫得很清楚,請對照這個代碼和上麵條件格式圖裡的設定看,就不多說了哈。
寫完這篇文章,又發現了幾個比較好的相關文章,列做參考資料如下:
- http://office.microsoft.com/zh-cn/access/HA102081332052.aspx這篇文章主要講了通過使用者介面進行條件式格式設定設定的細節,非常詳盡系統。
- http://office.microsoft.com/zh-cn/access/HP052691692052.aspx?pid=CH063662092052這篇文章講可以通過格式刷來複製條件式格式設定
- http://www.diybl.com/course/7_databases/access/ac_ch/2007614/51200.html這篇文章講了如何通過select case語句在程式裡擴充條件式格式設定,突破條件式格式設定只能有3個的局限