//Logo Image
作者:洪永杰(2002-04-19),推薦:徐業良(2002-04-22)

Visual Basic作復健運動腳踏車資料庫程式設計

Visual Basic本身並沒有存取資料庫的基本能力,但是隨著應用程式的資料處理量日益增多,因此提供一個效率好又統一的資料庫存取介面是必須的,因此Microsoft公司提供了ActiveX Data Component物件模組(ADO物件)以供Visual Basic應用程式能順利存取資料庫。本文將利用VB所提供的的兩種控制元件-ADO Data Control(簡稱ADODC)及DataGrid來作為資料庫的主要程式設計,同時以復健運動腳踏車資料庫為例,做一有系統之闡述。

1. 設定ADODCConnectionString屬性

由於ADODCDataGrid都屬於外掛式的控制元件,使用之前必須先經過引用的程序。引用的方法是首先選取VB功能表的「專案—設定使用元件」,待出現「設定使用元件」交談視窗時,選取其中的「Microsoft ADO Data Control 6.0」及「Microsoft DataGrid Control 6.0」,如圖1所示,同時在圖2的表單上佈置一個ADODC

1. 登錄ADO Data 控制項

2. 在表單中佈置資料控制項(ADODC)

在佈置完資料控制項(ADODC)後,還必須設定一些基礎屬性的設定。在ADODC上面按下滑鼠右鍵,待出現快顯功能表時,選取「ADODC的屬性」,進行如圖3的設定。要特別的是VB 6.0連結資料庫時,需要使用「OLE DB Provider」來設定連結,OLE DB Provider 的服務對象包括各種不同資料庫格式如JetSQLOracle等。在此因復健運動腳踏車資料庫Bike.mdbMicrosoft Access的格式,因此在圖3的設定步驟2中必須選擇「Microsoft Jet 3.51 OLE DB Provider」此一選項。同於步驟3中需要指定所要開啟資料庫的路徑與檔名,以及使用者名稱與密碼。

3. 設定ADODC ConnectionString 屬性步驟

2. 設定ADODCRecordSource屬性

當連結完資料庫的工作完成後,欲使程式能取得資料庫中的資料記錄,必須設定資料來源,即ADODCRecordSource屬性,資料來源可以是資料庫的某個表格或是執行SQL敘述所取得的資料記錄的集合,RecordSource屬性的設定步驟如圖4所示。在屬性頁裡資料錄來源請選擇「2-adCmdTable」,代表取得的資料來源為資料庫中的表格。

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. 設定TextBoxDataSource屬性

設定好DataSource屬性後,尚需設定DataField屬性,以使資料來源的欄位內容能於適當的TextBox控制項中顯示出來,因此設定DataField屬性的重點即是選擇適當的欄位名稱即可,設定步驟如圖6

6. 設定TextBoxDataField屬性

4. 資料庫程式設計

使用VB設計程式,通常事先設計畫面與畫面上的控制項,等大略訂定好畫面之後,再針對各個控制項的不同事件加入程式碼補強。圖6已經定好所有要使用的控制項及其屬性,現在將進一步加上程式碼來補強設定控制項屬性時所達不到的功能。

7中加入了包含新增、刪除、寫入、瀏覽及脫離等5個命令按鈕提供使用者方便用滑鼠做點選的工作。同時這些命令按鈕所對應的程式碼如圖8所示。

7. 於表單上加入命令按鈕

8. 命令按鈕相關程式碼

上述整個程式設計是由一個Select Case敘述所架構而成,當使用者點選「新增」按鈕時,VB會執行「Command4_Click()」副程式裡的程式碼,並且傳入參數Index0;當使用者點選「刪除」按鈕時,VB會執行「Command4_Click()」副程式裡的程式碼,並且傳入參數Index1,其它以此類推。因此以Select Case敘述來判別Index的值,即可決定要處理的功能為何。細節說明如下:

data.Recordset.AddNew

data的資料錄中加入一筆新的資料。

data.Recordset.CancelUpdate

data的資料錄中放棄新增一筆新的資料。

9所示為刪除資料庫裡資料所需的相關程式碼。在程式執行的過程中,若要刪除紀錄,系統就真的會直接把紀錄給刪除,因此為了避免誤刪,特別設計了一個MsgBox對話框來提供使用者作確認的動作。

9. 刪除資料庫資料相關程式碼

data.Recordset.Delete

刪除資料庫裡目前所使用的資料錄。

data.Refresh, data.Recordset.MoveLast

在刪除完資料錄後程式並不會自動跳到其他資料錄,因此必須借助Refresh的方式取得最新資料錄狀態或是使用MoveLast移動資料錄位置,才能避免這個問題。通常如果資料庫裡面還有資料,會使用MoveLast的方式;如果已經沒有資料,則使用Refresh的方法。

最後,圖10所示為資料庫查詢功能的相關程式碼。所謂查詢其意義為從RecordSet物件中找出符合條件的資料記錄的過程,找出合乎條件的紀錄後,該紀錄將被設定為目前紀錄,在一般資料庫應用程式中,這是不可或缺的一個動作。

10. 資料庫查詢功能相關程式碼

當使用者點選表單上的「資料-查詢」,會出現如圖10的對話框讓使用者輸入欲查詢的條件值(如姓名、日期),程式便依據此條件值,在資料庫中尋找「姓名」、「日期」資料欄的值符合這個條件式的資料錄。如果找不到該筆資料時,便會彈跳出一個對話方塊,告訴使用者找不到指定的資料。

data.Recordset.FindState = ‘ NY ’

此行程式所代表的意思為搜尋data資料錄裡符合State資料欄值等於NY的紀錄。如果找到的話,紀錄指標會停在這一筆資料上,否則便會跳到檔案的最末端。

參考資料

許舜淵編著,Visual Basic 6 資料庫實務設計入門篇,碁峰資訊,1999

V.K工作室編著,Visual Basic 6 資料庫程式設計,知城數位,2001

王國榮著,新觀念的Visual Basic 6.0 教本,旗標,1998