VB考試教程:使用Recordset對象

字號:

三、使用Recordset對象
    Recordset(記錄集)對象代表你在程序中使用的數(shù)據(jù)。
    在上面的程序中,曾使用一個名為RecordsetType(記錄集類型)的數(shù)據(jù)屬性指明數(shù)據(jù)庫信息為一個表。在Visual Basic中,Recordset(記錄集)是一個代表你正在程序中使用的數(shù)據(jù)庫部分的對象。當把數(shù)據(jù)控件的RecordSource屬性設(shè)置為表或查詢的名稱時,就定義了一個新的名為Recordset的對象。Recordset對象有它自己的一套特殊屬性和方法,使你能查找、排序、添加和刪除記錄。
    在下面的練習(xí)中,將使用Recordset對象在zgda.mdb數(shù)據(jù)庫中按編號查找項目,并將它們顯示出來。
    1、在zgda.mdb中查找數(shù)據(jù)
    在修改程序之前,為保護原始程序,請先以新文件名將它存盤。
    1) 在文件菜單中,單擊另存為窗體、另存為工程菜單項。以MyFindRec.frm、MyFindRec.vbp為文件名分別保存窗體和工程。
    2)在窗體的左下方創(chuàng)建兩個命令按鈕對象,Caption屬性分別設(shè)置為“查找”、“結(jié)束”。
    3)添加代碼。
    Option Explicit
     Dim prompt As String, searchSearchStr As String
     Private Sub Command1_Click()
     prompt$ = "輸入要查找的編號:"
     searchSearchStr$ = InputBox(prompt$, "搜索記錄")
     Data1.Recordset.Index = "Primarykey" '使用類名
     Data1.Recordset.Seek "=", searchSearchStr '進行搜索。Seek方法可以查找匹配的記錄。
     If Data1.Recordset.NoMatch Then '如果不匹配
     Data1.Recordset.MoveFirst '則取第1課記錄
     End If
    End Sub
    程序說明:
    該事件過程顯示一個查找對話框,以便用戶能輸入編號(SearchStr$)。接下來它使用Seek方法從頭至尾對數(shù)據(jù)庫“編號”字段進行搜索,直至找到匹配項或者搜索到表的結(jié)尾。如果未找到匹配項,Visual Basic將顯示一條信息“No current record”,并且在第一個文本框中顯示Recordset(記錄集)的第一條記錄。該事件過程所使用的Recordset屬性和方法如下表所示:
    Recordset屬性或方法
     說明
    Index 用于定義查找和排序過程中所使用的數(shù)據(jù)庫字段的屬性
    Seek 用于查找記錄的方法。除=以外,關(guān)系運算符>=、>、<=和<也可用來將所查找的字符串與數(shù)據(jù)庫中的文本進行比較
    NoMatch 該屬性的值為True時表示未查找到匹配項
    MoveFirst 使Recordset的第一條記錄成為當前記錄的一個方法
    2、向zgda.mdb數(shù)據(jù)庫添加記錄
    在向數(shù)據(jù)庫添加新記錄時,應(yīng)在設(shè)計模式下將數(shù)據(jù)對象的ReadOnly(只讀)屬性設(shè)定為False(假),然后使用事件過程中的AddNew(添加新記錄)方法在數(shù)據(jù)庫中添加新記錄。當窗體中出現(xiàn)空白記錄時,用戶就可以在需要的字段中填寫內(nèi)容了,添加完畢后,將當前記錄移動到數(shù)據(jù)庫中的其它記錄即可。用戶移動到不同記錄的較簡單的方法是單擊數(shù)據(jù)對象的一個按鈕。當用戶移動到其它記錄時,新的記錄就按字母順序被插入數(shù)據(jù)庫中了。下面的練習(xí)演示了如何使用ReadOnly屬性和AddNew方法在數(shù)據(jù)庫中插入新記錄。在該過程中,InputBox函數(shù)為用戶提供了一些可視化反饋信息。
    注:AddNew方法用來向數(shù)據(jù)庫添加一條新記錄。
    讓用戶向數(shù)據(jù)庫中添加記錄在修改程序之前,為保護原始程序,請先以新文件名保存原始程序。
    1) 在File(文件)菜單中,單擊Save MyFindRec.frm As(MyFindRec.frm另存為)菜單項。將MyFindRec窗體另存為MyAddRec.frm。使用Save Project As(工程另存為)菜單項將該工程另存為MyAddRec.vbp。
    2)將Data1對象的ReadOnly屬性設(shè)定為False。
    3)在窗體的Find按鈕右邊再創(chuàng)建一個命令按鈕對象Command3,并設(shè)置“Caption”屬性為“添加”。
    4)雙擊“添加”按紐,編寫代碼。
    Private Sub Command3_Click()
     Dim reply
     prompt$ = "Enter the new record, and then click the left arrow button."
     reply = MsgBox(prompt$, vbOKCancel, "Add Record")
     If reply = vbOK Then 'if the user clicks OK
     Text3.SetFocus 'move cursor to Title box
     Data1.Recordset.AddNew 'and get new record
     End If
    End Sub
    該過程首先向用戶顯示一個包含數(shù)據(jù)輸入提示的對話框。MsgBox函數(shù)使用vbOKCancel參數(shù)(由Visual Basic定義的數(shù)字型常量)顯示一個含有OK(是)和Cancel(取消)按鈕的對話框。如果用戶單擊OK,AddNew方法將創(chuàng)建一條新記錄。如果用戶單擊Cancel,則操作被取消。該事件過程還使用SetFocus方法使Text3文本框中得到輸入焦點。SetFocus方法可用來激活任何一個可以得到輸入焦點的對象。
    現(xiàn)在你就可以使用“添加”按鈕向數(shù)據(jù)庫添加新記錄了。
    運行:單擊“添加”按鈕,程序顯示Add Record對話框,單擊OK按鈕,窗體中出現(xiàn)新的空記錄。按順序輸入新記錄信息(按Tab鍵在字段間切換)。你可以使用“添加”銨鈕向zgda.mdb數(shù)據(jù)庫中添加任意條記錄。