1 / 36

資料庫程式設計

資料庫程式設計. VB 資料庫設計簡介 週次: 5 建國科技大學 資管系 饒瑞佶. 資料控制項與資料存取物件. 資料庫控制項 ( Adodc 或 DATA ) 提供的功能有限 方便,使用者不需要額外撰寫程式 資料存取物件 ( ADO ) 功能較完整 需要撰寫程式碼. 半自動. 完全手動. 二者可以交互使用. 資料控制項與資料存取物件. 資料庫控制項 ( Adodc ) 直接設 定 ConnectionString 與 RecordSource 屬性 設定 ADO 物件後將 Recordset 物件指定給資料庫控制項( Adodc ). 範例 5-4.

Download Presentation

資料庫程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 資料庫程式設計 VB資料庫設計簡介 週次:5 建國科技大學 資管系 饒瑞佶

  2. 資料控制項與資料存取物件 • 資料庫控制項 ( Adodc或DATA ) • 提供的功能有限 • 方便,使用者不需要額外撰寫程式 • 資料存取物件 (ADO) • 功能較完整 • 需要撰寫程式碼 半自動 完全手動 二者可以交互使用

  3. 資料控制項與資料存取物件 • 資料庫控制項 ( Adodc) • 直接設定ConnectionString與RecordSource屬性 • 設定ADO物件後將Recordset物件指定給資料庫控制項(Adodc)

  4. 範例5-4 設定DataSource與 DataField屬性 Command1_click

  5. 範例5-4 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 ' 設定ADO物件取得資料集 Set adoBook.Recordset = rs End Sub

  6. 資料控制項與資料存取物件 範例5-4 顯示元件 如TEXT ADO物件 設定產生Connection與 Recordset物件 範例5-6

  7. 範例5-6 設定Datasource與 DataField屬性 Command1_click

  8. 範例5-6 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

  9. 範例5-4 顯示元件 如TEXT ADO物件 設定產生Connection與 Recordset物件 範例5-6 顯示元件 如TEXT ADO物件 範例5-7 設定產生ConnectionString與 RecordSource屬性 資料控制項與資料存取物件

  10. 範例5-7 Private rs As ADODB.Recordset Private Sub Command1_Click() ' 取得 RecordSet 物件 Set rs = adoBook.Recordset ' 顯示RecordSet 物件的內容 For i = 0 To 4 Picture1.Print rs!書名 rs.MoveNext Next i End Sub

  11. ADO物件對資料庫的操作 • 操作項目: • 資料錄的移動 • 資料錄的編輯 • 新增資料錄 • 刪除資料錄 • 搜尋資料錄 • 篩選資料錄 • 資料排序 對象都是目前紀錄(Current Record)

  12. 資料的移動 目前紀錄在資料庫中的移動範圍:BOF~EOF 資料庫最上方 BOF 第一筆 第二筆 .. .. 最後一筆 資料庫最下方 EOF

  13. 資料的移動 使用Move方法 語法:Recordset.Move skipRecords, Start skipRecords:移動時要跳過幾筆記錄 +表示向最後一筆資料方向移動 -表示向第一筆資料方向移動 Start:移動的起始位置,預設為目前紀錄 adBookmarkFirst,以第一筆紀錄為起始點 adBookmarkLast,以最後一筆紀錄為起始點 注意移動過程可能會有超過BOF或EOF的錯誤狀況產生

  14. 克服超過BOF或EOF的錯誤 如果超過BOF則將目前紀錄指向最後一筆 如果超過EOF則將目前紀錄指向第一筆 如何指向?

  15. 克服超過BOF或EOF的錯誤 移動紀錄了使用Move方法外,還可以使用: MoveFirst:移動指向到第一筆紀錄 MovePrevious:移動指向到前一筆紀錄 MoveNext:移動指向到下一筆紀錄 MoveLast:移動指向到最後一筆紀錄 所以當BOF發生時就使用MoveLast 當EOF發生時就使用MoveFirst 注意CursorType的設定

  16. 範例6-2

  17. 範例6-2 Private Sub Form_Load() ' 連結資料庫 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 ' DataGrid控制項取得資料集以顯示記錄 Set DataGrid1.DataSource = rs End Sub

  18. 範例6-2 ' .......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

  19. 資料的移動 Bookmark屬性 Do Until rs.EOF 印出目前紀錄的內容 rs.Movenext Loop 可以列出所有資料的內容

  20. 編輯紀錄 Supports方法 判斷目前的資料庫(Recordset物件)是否可以編輯 語法: Boolean=recordset.Supports(CursorOptions) 其中CursorOptions可以是 adUpdate:更新 adAddnew:新增 adDelete:刪除 adMovePrevious:向前移動 adBookmark:標定Bookmark

  21. 範例6-5 If rs.supports(adUpdate) then ret=msgbox(“可以進行更新作業”,49,“更新訊息”) Else ret=msgbox(“不可以進行更新作業”,49,“更新訊息”) End if

  22. 資料更新 Update方法 可以對資料庫(Recordset物件)進行資料更新 語法: recordset.Update [欄位名稱],[新欄位值] 注意欄位名稱的寫法與資料型態p.6-20

  23. 範例6-6 更改book.mdb資料庫中書籍資料表中目前紀錄的 書名欄位值 rs.Update “書名”, Text1.text 欄位值 欄位名

  24. 新增資料 Addnew方法 可以對資料庫(Recordset物件)進行資料新增作業 語法: recordset.Addnew [欄位名稱],[新欄位值] 注意欄位名稱的寫法與資料型態p.6-20

  25. 範例6-7 在book.mdb資料庫中的書籍資料表中新增一筆紀錄 (只新增一個欄位) rs.Addnew “書名”, Text1.text 新增空紀錄(沒有任何欄位資料的紀錄) rs.Addnew rs.Update

  26. 範例6-8 在book.mdb資料庫中的書籍資料表中新增一筆紀錄 (新增多個欄位) rs.Addnew rs!書碼=Text1.text rs!書名=Text2.text ….. rs.Update

  27. 刪除資料 Delete方法 可以對資料庫(Recordset物件)進行資料刪除作業 刪除目前紀錄 語法: Recordset.Delete

  28. Do Until rs.eof rs.Delete rs.Movenext Loop 刪除所有紀錄 範例6-9 目前紀錄會消失 rs.Delete rs.Movenext If rs.eof then rs.movelast End if 目前紀錄再度出現

  29. 搜尋作業 從資料庫中找到符合條件的資料 Find方法 找出資料庫(Recordset物件)中符合條件的第一筆記錄 語法: Recordset.Find 條件,[Skiprows],[SearchDirection],[start] 找不到資料時會變成EOF或BOF狀態,所以可以藉此 判定是否有找到資料

  30. 搜尋作業 語法: Recordset.Find 條件,[Skiprows],[SearchDirection],[start] 其中條件是由欄位,比較運算子與條件值所組成 例如:書名=‘資料庫程式設計’ 文字型態 書碼=1 數字型態 日期=#2003/10/17# 日期時間型態

  31. 比較運算子 搜尋相似的而不是完全正確的 使用Like運算子,配合?,*等萬用字元 rs.Find “書名 Like ‘?Basic*’” 範例6-11

  32. 搜尋作業 找到符合條件的第一筆記錄後如何找尋其他也符合的 資料? 方法: 設定Skiprows=1 省略start 範例6-12

  33. 搜尋後取代 將搜尋(Find方法)與更新(Update方法)結合 範例6-14

  34. 篩選作業 從資料庫中找到符合條件的資料 Filter屬性 找出資料庫(Recordset物件)中符合條件的所有記錄 語法: Recordset.Filter 條件 找不到資料時Recordcount會變成0,所以可以藉此 判定是否有找到資料

  35. 篩選作業 可以使用複合條件式 And, Or, Not 書名=‘資料庫程式設計’ and日期=#2003/10/17# Rs.Filter=adFilterNone 解除Filter屬性 範例6-16

  36. 排序作業 cursorLocation屬性 =3 可以排序 =2 不可以排序 語法: Recordset.Sort [sortorder] Sortorder由欄位名及關鍵字組成 Rs.Sort “書名ASC” Rs.Sort “書名DESC” 範例6-19

More Related