在第23課和第24課裡,我們已學會如何使用數據控件來建立VB數據庫應用程式。然而,數據控件不是一個非常靈活的工具,因為它可只進行有限數據種類的處理及只能在Visual Basic環境中操作。為了克服這些局限性,我們可以使用一個更為強大的數據控件,它就是ADO控件。 ADO的全名是ActiveX Data Objects.。因為ADO是以ActiveX為基礎的,所以它可以在不同的平台(不同的電腦系統)和不同的程式語言裡操作。此外,它可以獲取許多不同類型的數據,如在互聯網瀏覽器顯示的數據,電子郵件正文和其他圖形,甚至比一般的關聯和非關聯式資料庫的資料。
為了能夠使用ADO數據控件,您需要把ActiveX Data Control 插入到工具箱。為此,你只需按下CTRL +T 以打開組件對話框,並選擇Microsoft ActiveX Data Control 6. 。接下來您就可以著手建立您的以ADO技術為基礎的VB數據庫應用程式。
下面的例子將說明如何建立一個以ADO技術為基礎的數據庫應用程式。首先,把表單命名為frmbooktitle並改變其標題為書名數據庫。其次,插入ADO數據控件,將它命名為adobooks並改變其標題為book。接下來,插入必要的標簽,文本框和命令按鈕。運行時的界面如下圖,它允許添加和刪除記錄,以及更新和瀏覽的數據。
為了能夠獲取和管理數據庫,你需要連接ADO數據控件到一個數據庫檔案。我們可使用VB6配來的數據庫檔案biblio.mdb 。為了連接ADO來此資料庫檔案,請按照下列步驟進行:
1 )點擊一下該ADO控件以啟開其屬性頁。
2 )接下來點擊 ConnectionString 屬性,下面的對話框就會出現。
3.)當上述對話框出現時,選擇Use Connection String 的選項。下一步,在數據鏈接屬性頁裡(Data Link Properties),選擇Microsoft Jet 3.51 OLE DBprovider.。
下一步是點擊Next 按鈕以選擇biblo.mdb 文件。您可以按一下文本連接,以確保適當的連接數據庫文件。單擊確定以完成連接。 最后,在按一下 RecordSource 屬性,並設定指揮型為 adcmdTable 和選擇表名稱(Titles)。接下來你就可以使用該數據庫文件了。
為了能讀取數據庫裡的記錄,你必須在有關的文本框的屬性頁裡設定它的DataSource 和 Datafield, 如下圖所示。 在我們的范例裡,DataSource 是 adoBooks,書名的 DataField 是 Title, 以此類推。
下面的表中列出所有控件的屬性。
控件 | 屬性 |
Form Name | frmBookTitle |
Form Caption | Book Titles -ADOApplication |
ADO Name | adoBooks |
Label1 Name | lblApp |
Label1 Caption | Book Titles |
Label 2 Name | lblTitle |
Label2 Caption | Title : |
Label3 Name | lblYear |
Label3 Caption | Year Published: |
Label4 Name | lblISBN |
Label4 Caption | ISBN: |
Labe5 Name | lblPubID |
Label5 Caption | Publisher's ID: |
Label6 Name | lblSubject |
Label6 Caption | Subject : |
TextBox1 Name | txtitle |
TextBox1 DataField | Title |
TextBox1 DataSource | adoBooks |
TextBox2 Name | txtPub |
TextBox2 DataField | Year Published |
TextBox2 DataSource | adoBooks |
TextBox3 Name | txtISBN |
TextBox3 DataField | ISBN |
TextBox3 DataSource | adoBooks |
TextBox4 Name | txtPubID |
TextBox4 DataField | PubID |
TextBox4 DataSource | adoBooks |
TextBox5 Name | txtSubject |
TextBox5 DataField | Subject |
TextBox5 DataSource | adoBooks |
Command Button1 Name | cmdSave |
Command Button1 Caption | &Save |
Command Button2 Name | cmdAdd |
Command Button2 Caption | &Add |
Command Button3 Name | cmdDelete |
Command Button3 Caption | &Delete |
Command Button4 Name | cmdCancel |
Command Button4 Caption | &Cancel |
Command Button5 Name | cmdPrev |
Command Button5 Caption | &< |
Command Button6 Name | cmdNext |
Command Button6 Caption | &> |
Command Button7 Name | cmdExit |
Command Button7 Caption | E&xit |
Private Sub cmdSave_Click()
adoBooks.Recordset.Fields("Title") = txtTitle.Text
adoBooks.Recordset.Fields("Year Published") = txtPub.Text
adoBooks.Recordset.Fields("ISBN") = txtISBN.Text
adoBooks.Recordset.Fields("PubID") = txtPubID.Text
adoBooks.Recordset.Fields("Subject") = txtSubject.Text
adoBooks.Recordset.Update
End Sub
Private Sub cmdAdd_Click()
adoBooks.Recordset.AddNew
End Sub
Private Sub cmdDelete_Click()
Confirm = MsgBox("Are you sure you want to delete this record?", vbYesNo, "Deletion Confirmation")
If Confirm = vbYes Then
adoBooks.Recordset.Delete
MsgBox "Record Deleted!", , "Message"
Else
MsgBox "Record Not Deleted!", , "Message"End If
End Sub
Private Sub cmdCancel_Click()
txtTitle.Text = ""
txtPub.Text = ""
txtPubID.Text = ""
txtISBN.Text = ""
txtSubject.Text = ""
End Sub
Private Sub cmdPrev_Click()
If Not adoBooks.Recordset.BOF Then
adoBooks.Recordset.MovePrevious
If adoBooks.Recordset.BOF Then
adoBooks.Recordset.MoveNext
End If
End If
End Sub
Private Sub cmdNext_Click()
If Not adoBooks.Recordset.EOF Then
adoBooks.Recordset.MoveNext
If adoBooks.Recordset.EOF Then
adoBooks.Recordset.MovePrevious
End If
End If
End Sub
下圖是運行時的輸出界面: