Ch09 運算式的應用 資料庫管理
本章大綱 本章內容包含課本第16章: 運算式的基礎 運算式建立幫手 在物件建立運算式 運算式的應用實例
運算式的架構-說明 Access運算式是一個數學或邏輯運算式,這是一個計算欄位值的公式,也就說欄位值不是使用者自行輸入或由查閱欄選取,而是運算式的運算結果。例如:在訂單中的產品價格乘訂購數量是各項產品小計的運算式,如下所示: 小計:CCur([定價]*[數量]*[折扣]/100) 訂單總金額的運算式,如下所示: Sum([小計]) 【小計】是欄位別名,接著在”:”號之後是運算式。另一種應用是查詢物件【準則】欄位的邏輯運算式條件,如下所示: Like "*" & [請輸入客戶名稱] & "*"
運算式的架構-識別字1 識別字 在運算式中的[定價]、[數量]和[折扣]是識別字,使用”[“和”]”號括起的是資料表或查詢物件的欄位值,因為沒有指明資料表,所以是參考同一個資料表或查詢物件。 在識別字可以進一步使用”!”和”.”運算子參考物件的控制項和屬性值,如下所示: “!”運算子:參考到資料表欄位、表單,報表或表單/報表的控制項。 “.”運算子:參考到表單、報表或控制項的屬性。
運算式的架構-識別字2
運算式的架構-運算子 運算子 在運算式中的”*”、”-“和”/”是運算子,這就是我們常見的加減乘除和邏輯等數學或邏輯運算子。
運算式的架構-文字值 文字值 在運算式中除了識別字外,還可以直接使用「文字值」(Literal),這就是數字、字串或日期值,不同資料類型的文字值需要使用不同符號來分別,如下表所示:
運算式的架構-函數 函數 運算式中可以使用SQL聚合函數或VBA函數進行計算,例如:CCur()、SUM()、Int()、Date()等函數。在本節前2個運算式範例的說明,如下: 小計:CCur([定價]*[數量]*[折扣]/100)”:運算式的目的是建立別名為【小計】的欄位,欄位內容是運算式結果的產品金額小計。使用【定價】、【數量】和【折扣】的資料表欄位值進行運算,CCur()是VBA函數,可以將數值轉換成貨幣格式。 Sum([小計]):運算式是將稱為【小計】欄位(即上述產品小計)的值加總,這就是訂單總金額。Sum()是SQL聚合函數,可以計算指定欄位的總計。
運算式的使用 運算式可以在Access各種物件中使用,在資料庫中經常使用運算式的地方,如下所示: 資料表物件:設定資料表屬性,例如:欄位驗證規則或預設值欄位。 查詢物件:新增欄位或建立【準則】欄位的運算式,可以建立計算欄位或查詢/篩選記錄的條件。 表單物件:新增內含運算式作為計算用途的控制項,例如:新增計算各項產品銷售金額小計的控制項。 報表物件:新增內含運算式作為計算用途的控制項,例如:新增計算各項產品銷售金額小計的控制項。
運算式建立幫手-1 在Access建立運算式是使用「運算式建立幫手」。請在查詢物件的設計檢視視窗,在【準則】欄的欄位上執行右鍵快顯功能表的【建立幫手】指令,可以看到「運算式建立幫手」對話方塊。
運算式建立幫手-2 在運算式建立幫手對話方塊的使用介面,由上而下可以分成3部分,如下所示: 運算式方塊:在上方運算式方塊顯示建立的運算式。 運算子按鈕:中間一排按鈕可以在運算式插入數學或邏輯運算子。 運算式元件:在下方元件清單可以選擇運算式使用的運算元或其它運算子,例如:常數、函數、資料表或查詢物件欄位。
運算式方塊 運算式建立幫手的運算式方塊顯示建立的運算式,這就是準備建立的Access運算式,可以自行輸入、或是按下方運算子按鈕或選取運算式元件來建立運算式,以此例是建立運算式:【Like "*" & [請輸入客戶名稱] & "*"】。
運算子按鈕-說明 在運算式建立幫手的中間有一排按鈕,這些按鈕可以在運算式插入數學、字串、比較或邏輯運算子,在按鈕列的最後2個按鈕是左右括號”(“和”)”,在括號內的運算式比括號外的運算式先執行,其目的是推翻現存的運算子優先順序,即所謂:「先乘除,後加減」。
運算子按鈕-算術運算子 算術運算子是常見的加減乘除四則運算,如下表所示:
運算子按鈕-字串運算子 字串運算子”&”可以連結2個字串,如下所示: "*" & [請輸入客戶名稱] & "*" 在上述運算式可以在使用者輸入字串前後加上”*”星號的字串。如果運算式的內容不是字串而是數值,運算式會自行將數值轉換成字串後,再進行連結,如下表所示:
運算子按鈕-比較運算子 比較運算子可以建立欄位值的條件範圍,如下所示: <=#1980/1/1# 上述運算式是指日期值小於等於1980年1月1日,雖然在運算子按鈕只提供常用的”=”、”>”、”<”和”<>”四個,但是我們可以組合出”=”(等於)、”<=”(小於等於)、”>=”(大於等於)、”>”(大於)、”<”(小於)和”<>”(不等於)的比較運算子。
運算子按鈕-邏輯運算子(AND) AND邏輯運算子是一種「且」連結,連結的2個運算元都為True,則運算式結果為True,如下所示: 邏輯運算子需要2個條件都成立時才為True,反之為False,其真假值表如下表所示:
運算子按鈕-邏輯運算子(OR) OR邏輯運算子是一種「或」連結,連結的2個運算元中,只需任一個為Ture,則運算式結果就為True,如下所示: [地址]=”台北” OR [客戶名稱]=”學貫” 邏輯運算子的2個條件只需一個成立即可,其真假值表如下表所示:
運算子按鈕-邏輯運算子(NOT) NOT邏輯運算子只有一個運算元,這是一種「非」運算,傳回運算元相反的值,如下所示: 上述運算式是日期值小於等於1998年1月1日的相反,也就是大於1998年1月1日。其真假值表如下表所示:
運算子按鈕-邏輯運算子(LIKE-說明) 在上述第1個運算式是找出是否符合字串(02)2222-1111,第2個運算式使用萬用字元”*”星號代表任何子字串或數值,以此例只需電話開頭是(02)就符合條件。
運算子按鈕-邏輯運算子(LIKE-範例)
運算式元件-1 運算式元件可以選擇運算式可以使用的元件,包括:資料表、查詢、報表物件的欄位、常數和函數等,也可以包括其它運算子,如下圖所示:
運算式元件-2 在算式元件一共分成3個方塊,其說明如下所示: 左邊方塊:各種Access物件、函數、常數、運算子和共用運算式等資料夾,如果是”+”號,按兩下可以展開其子資料夾。 中間方塊:顯示選取左邊方塊資料夾後的詳細元件清單。例如:選【查詢】資料夾下的【查詢客戶的電話號碼】,可以顯示查詢物件的可用欄位。 右邊方塊:顯示欄位或控制項屬性值,或是詳細的內建函數清單。
在資料表物件使用運算式 在資料表物件使用運算式主要是使用在欄位屬性的【預設值】和【驗證規則
在查詢物件使用運算式 在查詢物件使用運算式是使用在【欄位】、【準則】和【或】等欄
在表單物件使用運算式-1 在表單物件的控制項可以在【控制項資料來源】屬性建立運算式,或是建立事件來執行指定的運算式。
在表單物件使用運算式-2 表單控制項除了可以使用運算式外,還可以使用巨集或VBA程式碼,其說明如下所示: 巨集建立幫手:使用巨集指令作為控制項內容的來源,詳細的說明請參閱課本第17章。 程式碼建立幫手:使用Access的VBA程式碼作為控制項的資料的來源,詳細的說明請參閱課本第19章。
在報表物件使用運算式 報表物件如同表單物件一般,控制項的內容也一樣可以改為運算式。
資料表欄位的預設值 當在資料表輸入記錄資料時,為了方便輸入,有一些欄位可以設定預設值,例如:大部分圖書產品說明都擁有【附光碟】字串,為了加速資料輸入,我們可以將它設為欄位的預設值。 再則,如果欄位資料類型是日期/時間,我們還可以使用Date()函數建立欄位預設值,在新增記錄時直接填入今天日期。
資料表欄位的驗證規則 在資料表設計檢視的欄位擁有【驗證規則】和【驗證文字】屬性,驗證規則可以檢查欄位內容是否符合條件,如果不符合就顯示【驗證文字】屬性的內容。 例如:【產品資訊】資料表的【安全庫存】欄位值不可小於等於50本書。
表單或報表的運算式欄位 當使用表單或報表精靈新增控制項時,其資料來源預設是資料表或查詢物件的欄位內容,不過我們還是可以將控制項的資料來源改為運算式,或是在表單或報表新增資料來源為運算式的額外控制項。 例如:產品售價是定價的8折,所以筆者準備在精靈建立的報表新增控制項來顯示產品售價。
練習一 課本p. 16-29,p. 16-30實作題10~12題