Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "資料庫程式設計 VB資料庫設計簡介 週次:5 建國科技大學 資管系 饒瑞佶."— Presentation transcript:

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

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

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

10 範例5-7 Private rs As ADODB.Recordset Private Sub Command1_Click()
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
+表示向最後一筆資料方向移動 -表示向第一筆資料方向移動 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.Update

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

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

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

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

31 範例6-11 比較運算子 搜尋相似的而不是完全正確的 使用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 範例6-16 篩選作業 可以使用複合條件式 And, Or, Not 書名=‘資料庫程式設計’ and日期=#2003/10/17#
Rs.Filter=adFilterNone 解除Filter屬性 範例6-16

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


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

Similar presentations


Ads by Google