作者 : 洪永杰 (2002-04-19), 推薦 : 徐業良 (2002-04-22) 以 Visual Basic 作復健運動腳踏車資料庫程式設計 Visual Basic 本身並沒有存取資料庫的基本能力, 但是隨著應用程式的資料處理量日益增多, 因此提供一個效率好又統一的資料庫存取介面是必須的, 因此 Microsoft 公司提供了 ActiveX Data Component 物件模組 (ADO 物件 ) 以供 Visual Basic 應用程式能順利存取資料庫 本文將利用 VB 所提供的的兩種控制元件 -ADO Data Control ( 簡稱 ADODC) 及 DataGrid 來作為資料庫的主要程式設計, 同時以復健運動腳踏車資料庫為例, 做一有系統之闡述 1. 設定 ADODC 的 ConnectionString 屬性 由於 ADODC 及 DataGrid 都屬於外掛式的控制元件, 使用之前必須先經過引用的程序 引用的方法是首先選取 VB 功能表的 專案 設定使用元件, 待出現 設定使用元件 交談視窗時, 選取其中的 Microsoft ADO Data Control 6.0 及 Microsoft DataGrid Control 6.0, 如圖 1 所示, 同時在圖 2 的表單上佈置一個 ADODC 1
圖 1. 登錄 ADO Data 控制項 2
圖 2. 在表單中佈置資料控制項 (ADODC) 在佈置完資料控制項 (ADODC) 後, 還必須設定一些基礎屬性的設定 在 ADODC 上面按下滑鼠右鍵, 待出現快顯功能表時, 選取 ADODC 的屬性, 進行如圖 3 的設定 要特別的是 VB 6.0 連結資料庫時, 需要使用 OLE DB Provider 來設定連結, OLE DB Provider 的服務對象包括各種不同資料庫格式如 Jet SQL Oracle 等 在此因復健運動腳踏車資料庫 Bike.mdb 為 Microsoft Access 的格式, 因此在圖 3 的設定步驟 2 中必須選擇 Microsoft Jet 3.51 OLE DB Provider 此一選項 同於步驟 3 中需要指定所要開啟資料庫的路徑與檔名, 以及使用者名稱與密碼 3
圖 3. 設定 ADODC ConnectionString 屬性步驟 2. 設定 ADODC 的 RecordSource 屬性 當連結完資料庫的工作完成後, 欲使程式能取得資料庫中的資料記錄, 必須設定資料來源, 即 ADODC 的 RecordSource 屬性, 資料來源可以是資料庫的某個表格或是執行 SQL 敘述所取得的資料記錄的集合,RecordSource 屬性的設定步驟如圖 4 所示 在屬性頁裡資料錄來源請選擇 2-adCmdTable, 代表取得的資料來源為資料庫中的表格 4
圖 4. 設定 ADODC RecordSource 屬性步驟 3. 設定連結控制項的屬性 設定好 ADO Data 控制項的 ConnectionString 屬性和 RecordSource 後, 基本上應用程式已經可以連結上資料庫並取得資料集, 若是要將取得的資料記錄顯示出來, 則需要利用連結控制項, 本文將利用 TextBox 控制項來顯示資料記錄 要使 TextBox 控制項能顯示資料有下列 2 件事必須完成 : (1) 取得 ADO Data 控制項的資料來源 ( 設定 DataSource 屬性 ) (2) 設定想要顯示的資料內容 ( 設定 DataField 屬性 ) 連結控制項的 DataSource 屬性的設定步驟如圖 5 所示, 其主要的任務為取得由 ADO Data 控制項所取得的資料來源, 以供顯示之用, 因此 DataSource 屬性, 必須設定成 ADO Data 控制項名稱, 即 ADO Data 控制項的 Name 屬性 由於本文在表單上只佈置一個 ADO Data 控制項, 因此只能看到一個名稱, 即 adodc1( 意即圖 5 中的 data), 此時即完成 DataSource 屬性的設定工作 5
圖 5. 設定 TextBox 的 DataSource 屬性 設定好 DataSource 屬性後, 尚需設定 DataField 屬性, 以使資料來源的欄位內容 能於適當的 TextBox 控制項中顯示出來, 因此設定 DataField 屬性的重點即是選擇適 當的欄位名稱即可, 設定步驟如圖 6 6
圖 6. 設定 TextBox 的 DataField 屬性 4. 資料庫程式設計 使用 VB 設計程式, 通常事先設計畫面與畫面上的控制項, 等大略訂定好畫面之 後, 再針對各個控制項的不同事件加入程式碼補強 圖 6 已經定好所有要使用的控制 項及其屬性, 現在將進一步加上程式碼來補強設定控制項屬性時所達不到的功能 圖 7 中加入了包含新增 刪除 寫入 瀏覽及脫離等 5 個命令按鈕提供使用者方 便用滑鼠做點選的工作 同時這些命令按鈕所對應的程式碼如圖 8 所示 7
圖 7. 於表單上加入命令按鈕 8
圖 8. 命令按鈕相關程式碼 上述整個程式設計是由一個 Select Case 敘述所架構而成, 當使用者點選 新增 按鈕時,VB 會執行 Command4_Click() 副程式裡的程式碼, 並且傳入參數 Index 為 0; 當使用者點選 刪除 按鈕時,VB 會執行 Command4_Click() 副程式裡的程式碼, 並且傳入參數 Index 為 1, 其它以此類推 因此以 Select Case 敘述來判別 Index 的值, 即可決定要處理的功能為何 細節說明如下 : data.recordset.addnew 在 data 的資料錄中加入一筆新的資料 data.recordset.cancelupdate 在 data 的資料錄中放棄新增一筆新的資料 9
圖 9 所示為刪除資料庫裡資料所需的相關程式碼 在程式執行的過程中, 若 要刪除紀錄, 系統就真的會直接把紀錄給刪除, 因此為了避免誤刪, 特別設計了 一個 MsgBox 對話框來提供使用者作確認的動作 圖 9. 刪除資料庫資料相關程式碼 data.recordset.delete 刪除資料庫裡目前所使用的資料錄 data.refresh, data.recordset.movelast 在刪除完資料錄後程式並不會自動跳到其他資料錄, 因此必須借助 Refresh 的方式取得最新資料錄狀態或是使用 MoveLast 移動資料錄位置, 才能避免這個問題 通常如果資料庫裡面還有資料, 會使用 MoveLast 的方式 ; 如果已經沒有資料, 則使用 Refresh 的方法 最後, 圖 10 所示為資料庫查詢功能的相關程式碼 所謂查詢其意義為從 RecordSet 物件中找出符合條件的資料記錄的過程, 找出合乎條件的紀錄後, 該紀錄將被設定為 目前紀錄, 在一般資料庫應用程式中, 這是不可或缺的一個動作 10
圖 10. 資料庫查詢功能相關程式碼 當使用者點選表單上的 資料 - 查詢, 會出現如圖 10 的對話框讓使用者輸入欲查詢的條件值 ( 如姓名 日期 ), 程式便依據此條件值, 在資料庫中尋找 姓名 日期 資料欄的值符合這個條件式的資料錄 如果找不到該筆資料時, 便會彈跳出一個對話方塊, 告訴使用者找不到指定的資料 data.recordset.find State = NY " 此行程式所代表的意思為搜尋 data 資料錄裡符合 State 資料欄值等於 NY 的紀 錄 如果找到的話, 紀錄指標會停在這一筆資料上, 否則便會跳到檔案的最末端 參考資料 許舜淵編著,Visual Basic 6 資料庫實務設計入門篇, 碁峰資訊,1999 V.K 工作室編著,Visual Basic 6 資料庫程式設計, 知城數位,2001 王國榮著, 新觀念的 Visual Basic 6.0 教本, 旗標,1998 11