資料控制項與資料存取物件 資料庫控制項 ( Adodc或DATA ) 提供的功能有限 半自動 方便,使用者不需要額外撰寫程式 功能較完整 需要撰寫程式碼 半自動 完全手動 二者可以交互使用,但不建議
資料控制項與資料存取物件 資料庫控制項 ( Adodc) 直接設定ConnectionString與RecordSource屬性 設定ADO物件後將Recordset物件指定給資料庫控制項(Adodc)
資料控制項與資料存取物件 顯示元件 如TEXT ADO物件 設定產生Connection與 Recordset物件
UI範例 設定DataSource與 DataField屬性 Command1_click
ADO ADODC範例 Private Sub Command1_Click() '連結資料庫 Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\VB6\DB\Book.mdb" cn.Open '取得資料集 Set rs = New ADODB.Recordset rs.Open "書籍", cn, adOpenStatic ‘ 設定ADO物件取得資料集 ‘ 要設定成adOpenStatic Set adoBook.Recordset = rs End Sub
ADO直接顯示範例 Private Sub Command1_Click() '連結資料庫 Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _ & "Data Source=C:\VB6\DB\Book.mdb" cn.Open '取得資料集 Set rs = New ADODB.Recordset rs.Open "書籍", cn, adOpenStatic ' 設定連結控制項的屬性 Set Text1.DataSource = rs Text1.DataField = "書名" Set Text2.DataSource = rs Text2.DataField = "作者" Set Text3.DataSource = rs Text3.DataField = "分類" Set Text4.DataSource = rs Text4.DataField = "出版社“ End Sub
ADO物件對資料庫的操作 操作項目: 資料錄的移動 資料錄的編輯 新增資料錄 刪除資料錄 搜尋資料錄 篩選資料錄 資料排序 對象都是目前紀錄(Current Record)
資料的移動 使用Move方法 語法:Recordset.Move skipRecords, Start +表示向最後一筆資料方向移動 -表示向第一筆資料方向移動 Start:移動的起始位置,預設為目前紀錄 adBookmarkFirst,以第一筆紀錄為起始點 adBookmarkLast,以最後一筆紀錄為起始點 注意移動過程可能會有超過BOF或EOF的錯誤狀況產生
範例
範例 ‘要指定給datagrid一定要設定成adOpenStatic Private Sub Form_Load() ' 連結資料庫 Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\VB6\DB\Book.mdb" cn.Open ' 取得資料集 Set rs = New ADODB.Recordset rs.Open "書籍 ", cn, adOpenStatic ‘ DataGrid控制項取得資料集以顯示記錄 ‘要指定給datagrid一定要設定成adOpenStatic Set DataGrid1.DataSource = rs End Sub
範例 ' .......Click 按鈕:前一筆 時所觸發的事件程序 Private Sub cmdPrevious_Click() rs.MovePrevious ' 若已移動到檔案的開頭 If rs.BOF = True Then rs.MoveFirst End If End Sub ' .......Click 按鈕:下一筆 時所觸發的事件程序 Private Sub cmdNext_Click() rs.MoveNext ' 若已移動到檔案的結尾 If rs.EOF = True Then rs.MoveLast End If End Sub
編輯紀錄 Supports方法 判斷目前的資料庫(Recordset物件)是否可以編輯 語法: Boolean=recordset.Supports(CursorOptions) 其中CursorOptions可以是 adUpdate:更新 adAddnew:新增 adDelete:刪除 adMovePrevious:向前移動 adBookmark:標定Bookmark
範例 If rs.supports(adUpdate) then ret=msgbox(“可以進行更新作業”,49,“更新訊息”) Else End if
資料更新 Update方法 可以對資料庫(Recordset物件)進行資料更新 語法: recordset.Update [欄位名稱],[新欄位值] 或 Recordset(“欄位名稱”)=值 Recordset.update 注意欄位名稱的寫法與資料型態
範例6-6 更改book.mdb資料庫中書籍資料表中目前紀錄的 書名欄位值 rs.Update “書名”, Text1.text 欄位值 欄位名 欄位值
新增資料 Addnew方法 可以對資料庫(Recordset物件)進行資料新增作業 語法: recordset.Addnew [欄位名稱],[新欄位值] 或 Recordset.addnew recordset(“欄位名稱”)=值 Recordset.update 注意欄位名稱的寫法與資料型態
範例 在book.mdb資料庫中的書籍資料表中新增一筆紀錄 (只新增一個欄位) rs.Addnew “書名”, Text1.text
範例 在book.mdb資料庫中的書籍資料表中新增一筆紀錄 (新增多個欄位) rs.Addnew rs!書碼=Text1.text ….. rs.Update
刪除資料 Delete方法 可以對資料庫(Recordset物件)進行資料刪除作業 刪除目前紀錄 語法: Recordset.Delete
範例 rs.Delete rs.Movenext If rs.eof then rs.movelast End if 目前紀錄會消失 目前紀錄再度出現 Do Until rs.eof rs.Delete rs.Movenext Loop 刪除所有紀錄
搜尋作業 從資料庫中找到符合條件的資料 Find方法 找出資料庫(Recordset物件)中符合條件的第一筆記錄 語法: Recordset.Find 條件,[Skiprows],[SearchDirection],[start] 找不到資料時會變成EOF或BOF狀態,所以可以藉此 判定是否有找到資料