Top Banner
資資資資資資資 VB 資資資資資資資 週週5 週週週週週週 週週週 週週週
36

資料庫程式設計

Jan 03, 2016

Download

Documents

mallory-spencer

資料庫程式設計. VB 資料庫設計簡介 週次: 5 建國科技大學 資管系 饒瑞佶. 資料控制項與資料存取物件. 資料庫控制項 ( Adodc 或 DATA ) 提供的功能有限 方便,使用者不需要額外撰寫程式 資料存取物件 ( ADO ) 功能較完整 需要撰寫程式碼. 半自動. 完全手動. 二者可以交互使用. 資料控制項與資料存取物件. 資料庫控制項 ( Adodc ) 直接設 定 ConnectionString 與 RecordSource 屬性 設定 ADO 物件後將 Recordset 物件指定給資料庫控制項( Adodc ). 範例 5-4. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 資料庫程式設計

資料庫程式設計

VB資料庫設計簡介週次: 5

建國科技大學 資管系 饒瑞佶

Page 2: 資料庫程式設計

資料控制項與資料存取物件資料庫控制項 ( Adodc或 DATA )

•提供的功能有限•方便 , 使用者不需要額外撰寫程式

資料存取物件 (ADO)•功能較完整•需要撰寫程式碼

二者可以交互使用

半自動

完全手動

Page 3: 資料庫程式設計

資料控制項與資料存取物件資料庫控制項 ( Adodc)

•直接設定 ConnectionString與 RecordSource屬性

•設定 ADO 物件後將 Recordset 物件指定給資料庫控制項( Adodc )

Page 4: 資料庫程式設計

範例 5-4

Command1_click

設定 DataSource 與DataField 屬性

Page 5: 資料庫程式設計

範例 5-4Private 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 = rsEnd Sub

Page 6: 資料庫程式設計

資料控制項與資料存取物件

ADO 物件 顯示元件如 TEXT

設定產生 Connection 與Recordset 物件

範例 5-4

範例 5-6

Page 7: 資料庫程式設計

範例 5-6

Command1_click

設定 Datasource 與DataField 屬性

Page 8: 資料庫程式設計

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

Page 9: 資料庫程式設計

資料控制項與資料存取物件

ADO 物件 顯示元件如 TEXT

設定產生 Connection 與Recordset 物件

範例 5-4

範例 5-6

ADO 物件 顯示元件如 TEXT

設定產生 ConnectionString 與RecordSource 屬性

範例 5-7

Page 10: 資料庫程式設計

範例 5-7Private 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

Page 11: 資料庫程式設計

ADO 物件對資料庫的操作操作項目:• 資料錄的移動• 資料錄的編輯• 新增資料錄• 刪除資料錄• 搜尋資料錄• 篩選資料錄• 資料排序

對象都是目前紀錄( Current Record )

Page 12: 資料庫程式設計

資料的移動目前紀錄在資料庫中的移動範圍: BOF~EOF

BOF

第一筆第二筆

最後一筆EOF

..

..

資料庫最上方

資料庫最下方

Page 13: 資料庫程式設計

資料的移動使用 Move 方法語法: Recordset.Move skipRecords, StartskipRecords :移動時要跳過幾筆記錄

+ 表示向最後一筆資料方向移動-表示向第一筆資料方向移動

Start :移動的起始位置,預設為目前紀錄adBookmarkFirst ,以第一筆紀錄為起始點adBookmarkLast ,以最後一筆紀錄為起始點

注意移動過程可能會有超過 BOF或 EOF 的錯誤狀況產生

Page 14: 資料庫程式設計

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

如果超過 EOF 則將目前紀錄指向第一筆

如何指向?

Page 15: 資料庫程式設計

克服超過 BOF或 EOF的錯誤移動紀錄了使用 Move 方法外,還可以使用:MoveFirst :移動指向到第一筆紀錄MovePrevious :移動指向到前一筆紀錄MoveNext :移動指向到下一筆紀錄MoveLast :移動指向到最後一筆紀錄

所以當 BOF 發生時就使用 MoveLast 當 EOF 發生時就使用 MoveFirst

注意 CursorType 的設定

Page 16: 資料庫程式設計

範例 6-2

Page 17: 資料庫程式設計

範例 6-2Private 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 = rsEnd Sub

Page 18: 資料庫程式設計

範例 6-2' .......Click 按鈕 : 前一筆 時所觸發的事件程序Private Sub cmdPrevious_Click() rs.MovePrevious ' 若已移動到檔案的開頭 If rs.BOF = True Then rs.MoveFirst End IfEnd Sub

' .......Click 按鈕 : 下一筆 時所觸發的事件程序Private Sub cmdNext_Click() rs.MoveNext ' 若已移動到檔案的結尾 If rs.EOF = True Then rs.MoveLast End IfEnd Sub

Page 19: 資料庫程式設計

資料的移動Bookmark 屬性

Do Until rs.EOF 印出目前紀錄的內容

rs.MovenextLoop

可以列出所有資料的內容

Page 20: 資料庫程式設計

編輯紀錄Supports 方法判斷目前的資料庫( Recordset 物件)是否可以編輯

語法:Boolean= recordset.Supports(CursorOptions)其中 CursorOptions 可以是adUpdate :更新adAddnew :新增adDelete :刪除adMovePrevious :向前移動adBookmark :標定 Bookmark

Page 21: 資料庫程式設計

範例 6-5

If rs.supports(adUpdate) then ret=msgbox(“ 可以進行更新作業” ,49,“ 更新訊息” )Else

ret=msgbox(“ 不可以進行更新作業” ,49,“ 更新訊息” )End if

Page 22: 資料庫程式設計

資料更新Update 方法可以對資料庫( Recordset 物件)進行資料更新

語法:recordset.Update [ 欄位名稱 ] , [ 新欄位值 ]

注意欄位名稱的寫法與資料型態 p.6-20

Page 23: 資料庫程式設計

範例 6-6

更改 book.mdb 資料庫中書籍資料表中目前紀錄的書名欄位值

rs.Update “ 書名” , Text1.text欄位名 欄位值

Page 24: 資料庫程式設計

新增資料Addnew 方法可以對資料庫( Recordset 物件)進行資料新增作業

語法:recordset.Addnew [ 欄位名稱 ] , [ 新欄位值 ]

注意欄位名稱的寫法與資料型態 p.6-20

Page 25: 資料庫程式設計

範例 6-7

在 book.mdb 資料庫中的書籍資料表中新增一筆紀錄(只新增一個欄位)

rs.Addnew “ 書名” , Text1.text新增空紀錄(沒有任何欄位資料的紀錄)rs.Addnewrs.Update

Page 26: 資料庫程式設計

範例 6-8

在 book.mdb 資料庫中的書籍資料表中新增一筆紀錄(新增多個欄位)

rs.Addnew rs! 書碼 =Text1.text rs! 書名 =Text2.text …..rs.Update

Page 27: 資料庫程式設計

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

語法:Recordset.Delete

Page 28: 資料庫程式設計

範例 6-9

rs.Deleters.MovenextIf rs.eof then rs.movelastEnd if

目前紀錄會消失

目前紀錄再度出現

Do Until rs.eof rs.Delete rs.MovenextLoop

刪除所有紀錄

Page 29: 資料庫程式設計

搜尋作業

從資料庫中找到符合條件的資料Find 方法找出資料庫( Recordset 物件)中符合條件的第一筆記錄

語法:Recordset.Find 條件 ,[Skiprows],[SearchDirection],[start]

找不到資料時會變成 EOF或 BOF 狀態,所以可以藉此判定是否有找到資料

Page 30: 資料庫程式設計

搜尋作業

語法:Recordset.Find 條件 ,[Skiprows],[SearchDirection],[start]

其中條件是由欄位,比較運算子與條件值所組成例如:書名=‘資料庫程式設計’ 文字型態 書碼= 1 數字型態 日期= #2003/10/17# 日期時間型態

Page 31: 資料庫程式設計

比較運算子

搜尋相似的而不是完全正確的

使用 Like 運算子,配合?, * 等萬用字元

rs.Find “ 書名 Like ‘?Basic*’”

範例 6-11

Page 32: 資料庫程式設計

搜尋作業

找到符合條件的第一筆記錄後如何找尋其他也符合的資料?

方法:設定 Skiprows= 1省略 start

範例 6-12

Page 33: 資料庫程式設計

搜尋後取代

將搜尋( Find 方法)與更新( Update 方法)結合

範例 6-14

Page 34: 資料庫程式設計

篩選作業

從資料庫中找到符合條件的資料Filter 屬性找出資料庫( Recordset 物件)中符合條件的所有記錄

語法:Recordset.Filter 條件

找不到資料時 Recordcount 會變成 0 ,所以可以藉此判定是否有找到資料

Page 35: 資料庫程式設計

篩選作業

可以使用複合條件式And, Or, Not

書名=‘資料庫程式設計’ and 日期= #2003/10/17#

Rs.Filter=adFilterNone 解除 Filter 屬性

範例 6-16

Page 36: 資料庫程式設計

排序作業cursorLocation 屬性=3 可以排序=2 不可以排序

語法:Recordset.Sort [sortorder]Sortorder 由欄位名及關鍵字組成Rs.Sort “ 書名 ASC”Rs.Sort “ 書名 DESC”

範例 6-19