第 15 章 資料表的進階設計 著作權所有 © 旗標出版股份有限公司
本章提要 在書籍資料表中加入『圖片』欄位 進階的欄位屬性設定 設定『輸入遮罩』 管制欄位資料的正確性 管制整筆記錄的正確性 設定『查閱』頁次的屬性
在書籍資料表中加入『圖片』欄位 什麼是 OLE 物件 建立 OLE 物件欄位 輸入照片 修改照片的內容 更換照片
什麼是 OLE 物件 OLE (Object Linking and Embedding) 物件可以是任何類型的資料, 例如:圖形、聲音、動畫、甚至是 Word、Excel 的文件等等, 因此只要使用 OLE 物件資料類型的欄位, 任何種類的資料都可以放進我們的資料庫中。
什麼是 OLE 物件 使用 OLE 物件的先決條件, 那就是您必須先在作業系統中安裝能夠處理該類資料, 並具備 OLE 功能的應用程式才行。如此該物件才能透過這個應用程式來正確的顯示或編輯。
什麼是 OLE 物件
建立 OLE 物件欄位 請開啟書附光碟中 "Ch15範例資料.mdb", 再開啟書籍資料表的設計視窗:
建立 OLE 物件欄位
輸入照片 若要將照片圖檔輸入封面照片欄中時, 由於該欄是 OLE 物件類型, 所以我們要以插入 "物件" 的方式來輸入資料。請先選取第 3 筆記錄的封面照片欄位, 然後執行功能表的『插入/ 物件』命令, 開啟插入物件交談窗:
輸入照片
輸入照片 由於 Windows 所附的小畫家程式能夠處理副檔名為 .bmp 的圖形檔, 所以這類的圖形檔我們可直接使用, 而不需再安裝其它軟體。假設我們要將 F004.bmp 這個圖形檔插入到第 3 筆記錄的封面照片欄中, 那麼請在插入物件交談窗中如下操作:
輸入照片
輸入照片
輸入照片
輸入照片 請注意!若勾選了連結選項, 那麼指定的圖片並不會放入資料表中, 而是與圖片檔建立一個『連結』的關係。當您要觀看或編輯這張圖片時, Access 才會由圖片檔中讀進來顯示。這樣作可以大大地節省資料庫的儲存空間, 但要注意連結的圖片檔必須放在固定的資料夾中 (不可以搬移到其它資料夾), 否則會發生找不到圖片檔的情形。
輸入照片 最後完成結果如下所示:
修改照片的內容 直接在封面照片欄中的 "點陣圖影像" 上雙按滑鼠, 即可叫出物件所關聯的應用程式 (例如:小畫家) 來做編輯:
修改照片的內容
更換照片 如果想要更換照片, 那麼只要先選取該封面照片欄位, 然後重新執行『插入/物件』命令, 輸入另外一張新的照片即可。
進階的欄位屬性設定
進階的欄位屬性設定 由於每種類型的特性都不一樣, 所以它們的屬性設定項目也會略有差異。底下我們就來看看這些屬性要如何設定, 請匯入書附光碟中 "Ch15 範例資料.mdb" 的欄位屬性測試資料表:
進階的欄位屬性設定
進階的欄位屬性設定 『欄位大小』屬性 『格式』屬性 『小數點位數』屬性 『標題』屬性 『預設值』屬性 『必須有資料』屬性 『允許零長度字串』屬性 其它的屬性
『欄位大小』屬性
『格式』屬性 格式是用來設定資料要如何的顯示或列印出來。例如:
『格式』屬性
『格式』屬性
『小數點位數』屬性 這個屬性可用來控制數字及貨幣類型的資料, 在顯示時要有固定的小數位數。例如您不要顯示小數位數, 就可以設為 0。預設的是自動, 表示不做任何控制 (依照原來的格式)。
『標題』屬性 標題屬性中設定的字串, 可在顯示或列印時取代欄位名稱。例如我們將書籍編號欄的標題設為書號, 那麼無論在顯示或列印資料表視窗時, 您看到的欄位標題都會是"書號"。
『預設值』屬性 除了自動編號、OLE 物件之外的類型, 都可以指定一個在新增資料時自動輸入的欄位預設值。Access 預設會將數字、貨幣類型的預設值屬性設為 0, 其它類型則無預設值。
『必須有資料』屬性 這裡只能填入是或否, 若選是, 那麼該欄位就一定要輸入資料而不得為空白, 否則當離開該筆記錄時會出現如下視窗: 若設定為否, 而且在編輯時也沒有填入資料, 則該欄位的值將被設為 Null。
何謂 Null 值 Null表示不知道、未知的情況, 即表示目前設定為 Null 值之欄位沒有包含任何資料。例如我們在輸入一筆客戶資料時, 若對方的地址尚不確定 , 那麼就可以留空白表示其為 Null 值, 待稍後地址確定了再行補上。
『允許零長度字串』屬性 零長度字串就是長度為 0 的字串, 我們也可稱之為空字串, 以 "" (二個連續的雙引號) 來表示。 這個屬性只對文字及備忘類型有效。預設為否, 表示編輯時若只輸入一或多個空白字元 (按 [Shift] 鍵), Access 會將之轉換成 Null 值來儲存。
『允許零長度字串』屬性 若設為是, 則輸入的『""』或『由空白組成的字串』會以零長度字串來儲存, 只有在不輸入任何資料時才會以 Null 值儲存。
『零長度字串』 和 Null 的 差異 Null 是表示未知的狀況, 而零長度字串則表示已知, 但其值為一個零長度的字串。
其它的屬性 索引:在第 3 章已介紹過, 不再贅述了。 輸入遮罩:此屬性可設定讓使用者只能依照固定格式輸入, 在下一節為您介紹。 驗証規則與驗証文字:設定能對輸入資料做一些正確性的檢查, 留到 15-4 節再介紹。 查閱頁次中的各項屬性, 將在 15-6 節詳細介紹。
設定『輸入遮罩』 什麼是『輸入遮罩』 設定『輸入遮罩』
什麼是『輸入遮罩』 例如使用者在輸入電話號碼時, 可能會輸入:
什麼是『輸入遮罩』 對於這些不統一的格式, 在尋找或排序資料時會造成相當大的困擾。而輸入遮罩的功能, 就是提供給使用者一個固定的輸入格式, 例如:
設定『輸入遮罩』 只有文字、數字、日期/ 時間及貨幣類型的欄位可以設定輸入遮罩。不過一般來說, 我們通常只會對文字或日期/時間設定輸入遮罩。 Access 已經替文字及日期/時間類型準備好了一個輸入遮罩精靈。請開啟欄位屬性測試資料表, 並開啟到設計視窗:
設定『輸入遮罩』
設定『輸入遮罩』
設定『輸入遮罩』
設定『輸入遮罩』
設定『輸入遮罩』
設定『輸入遮罩』
設定『輸入遮罩』 最後按完成鈕, 即設定好了電話號碼的遮罩, 請切換到資料工作表檢視視窗, 我們來試著操作看看:
設定『輸入遮罩』 日期/時間類型的輸入遮罩精靈和文字類型差不多, 只是可選取的項目不同而已:
設定『輸入遮罩』 如果輸入遮罩的格式和格式屬性中設定的有衝突, 那麼會以格式屬性為準。如果您想要自行設計輸入遮罩, 可以在輸入遮罩欄中按 [F1] 鍵,叫出 Access 線上輔助說明:
設定『輸入遮罩』
管制欄位資料的正確性 設定驗證規則的效果 驗證規則的格式
設定驗證規則的效果 當使用者在輸入資料時, 難免會有粗心打錯的時候, 此時如果我們能對輸入資料做一些正確性的檢查, 就可以降低這種錯誤發生。例如在輸入書籍的單價時, 不小心將400 打成4000 或40, 我們就可以設定單價欄位的驗証規則與驗証文字, 以減少輸入的錯誤:
設定驗證規則的效果
設定驗證規則的效果 設定好驗證規則及文字後, 日後當我們輸入超過規則範圍時, Access 就會拒絕輸入, 並顯示如下的訊息:
設定驗證規則的效果 如果您沒有設定驗証文字, 那麼在輸入不符規則的資料時, Access 會以運算式做為錯誤的說明:
當資料表中已有資料時 當您在設定驗証規則後要離開設計視窗時, 若資料表中已經有資料, 那麼會出現如下交談窗:
當資料表中已有資料時 按下是鈕, Access 便會用新的驗証規則來檢查現有的資料, 若發現有不符合的情形, 則再顯示如下交談窗:
驗証規則的格式 驗証規則的格式通常為一個運算元加上一個值, 例如: 如果有多個條件, 可以用 And 或 Or 來連接, 例如:
驗証規則的格式 常用的運算元如下:
驗証規則的格式 常用的運算元如下:
驗証規則的格式 In() 是用來判斷輸入值是否等於列表中的任一個值, 例如: 可改為:
驗証規則的格式 Like 運算元讓我們可以用萬用字元來驗証輸入的文字。Access 提供 3 種萬用字元: * 表示任何長度的字串, 包括空字串在內 ? 表示一個中文字或英文字母 # 表示一個數字字元
驗証規則的格式 例如:
驗證規則的格式 若要判斷欄位值是否為 Null, 可直接以常數值 Null 來比較, 例如我們的條件是數量欄 "必須大於 0" 或 "沒有輸入資料", 就可以使用下面的規則:
管制整筆記錄的正確性 前面介紹的是針對『個別』的欄位來做正確性檢查, Access 也允許我們針對整筆記錄來做正確性管制。在資料表的設計視窗中, 我們可以按下工具列的屬性鈕來開啟資料表屬性視窗:
管制整筆記錄的正確性
管制整筆記錄的正確性 不過要注意, 這裡輸入的驗証規則必須是一個完整的運算式, 而且運算結果必須為 "真" 或 "假", 例如我們要求任何一筆訂單如果尚未付款, 就必須在備註欄中填入原因, 那麼就可輸入以下的運算式:
管制整筆記錄的正確性
設定『查閱』頁次的屬性 『顯示控制項』屬性 『資料來源類型』及『資料來源』屬性 『結合欄位』屬性 『欄數』屬性 『欄名』屬性 『欄寬』屬性 清單允許列數和清單寬度 限制在清單內
『顯示控制項』屬性 這個屬性是用來設定顯示欄位資料的方式, 它會影響到工作表、表單中顯示資料的方式。其內容有 3 項可供選擇, 選不同的項目則其下的各屬性也會有所不同:
『顯示控制項』屬性
『顯示控制項』屬性
『顯示控制項』屬性 選文字方塊是最單純的一種, 沒有任何的查閱功能。當我們在輸入欄位資料時, 若希望由其他地方 (例如其他的資料表、查詢或固定的資料列表) 來查閱, 就可使用清單方塊或下拉式方塊項目, 然後在下方的各屬性中設定資料的來源、結合的方式等等。
『顯示控制項』屬性
『資料來源類型』及 『資料來源』屬性 這二個屬性必須搭配使用, 『資料來源類型』屬性有 3 種:
『資料來源類型』及 『資料來源』屬性 資料表 / 查詢 表示查閱的資料來源為『資料表』或『查詢』, 此時在資料來源屬性中則須填入資料的來源。您可拉下列示窗來選取一個已存在的資料表或查詢, 它也可以是一個利用建立幫手所產生的 SQL 陳述式:
『資料來源類型』及 『資料來源』屬性
『資料來源類型』及 『資料來源』屬性 或按右側的 […] 鈕, 建立一個查詢:
『資料來源類型』及 『資料來源』屬性 值清單 『值清單』就是由固定的一個清單中來做查閱, 這個清單必須輸入到『資料來源』屬性中, 例如客戶資料表的性別欄:
『資料來源類型』及 『資料來源』屬性
『資料來源類型』及 『資料來源』屬性 欄位清單 『欄位清單』項目和『資料表/ 查詢』類似, 只不過它查閱的是欄位名稱, 而非欄位中的值。例如我們將訂單資料表的客戶編號欄改為『欄位清單』:
『結合欄位』屬性 如果組合方塊是由多個欄位組成, 那麼可以在此設定第幾個欄位的值要做為儲存的值。例如訂單資料表的客戶編號欄是二個欄位 (客戶編號、客戶名稱) 的組合方塊, 而我們要以第一欄做為儲存值, 那麼就在此屬性中設定 1。
『結合欄位』屬性
『欄數』屬性 指出『組合方塊』中要顯示的欄位數目, 例如:若查閱的資料來源有 3 欄, 但我們將此屬性設為 2, 那麼就只會顯示最左邊的 2 欄。
『欄名』屬性 此屬性可用來設定是否要在清單方塊中顯示來源資料的欄位名稱, 例如我們在訂單資料表的查閱客戶欄中, 將欄名屬性改為 "是", 那麼在輸入資料時就可以看到欄名:
『欄名』屬性
『欄寬』屬性 我們可以在此設定清單方塊中每一欄的寬度, 每個值之間要以 ";" 隔開:
清單允許列數和清單寬度 在此指定組合方塊一次最多可顯示的列數, 以及組合方塊的寬度:
清單允許列數和清單寬度
限制在清單內 在此指定輸入欄位的值, 是否一定要是組合方塊中的一個值。如果您希望除了選取清單中的值外, 也可以自己輸入新的值, 那就要將此屬性設為否。