学习数据库的记录集的属性与方法中,由RecordSource确定的具体可访问的数据构成的记录集Recordset也是一个对象,因而,它和其他对象一样具有属性和方法。下面列出记录集常用的属性和方法。

1.AbsolutePosition属性

AbsolutePosition返回当前指针值,如果是第1条记录,其值为0,该属性为只读属性。

2.Bof和Eof的属性

Bof判定记录指针是否在首记录之前,若Bof为True,则当前位置位于记录集的第1条记录之前。与此类似,Eof判定记录指针是否在末记录之后。

3.Bookmark属性

Bookmark属性的值采用字符串类型,用于设置或返回当前指针的标签。在程序中可以使用Bookmark属性重定位记录集的指针,但不能使用AbsolutePostion属性。

4.Nomatch属性

在记录集中进行查找时,如果找到相匹配的记录,则Recordset的NoMatch属性为False,否则为True。该属性常与Bookmark属性一起使用。

5.RecordCount属性

RecordCount属性对Recordset对象中的记录计数,该属性为只读属性。在多用户环境下,RecordCount属性值可能不准确,为了获得准确值,在读取RecordCount属性值之前,可使用MoveLast方法将记录指针移至最后一条记录上。

6.Move方法

使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Move方法是:

(1)MoveFirst方法:移至第1条记录。

(2)MoveLast方法:移至最后一条记录。

(3)MoveNext方法:移至下一条记录。

(4)MovePrevious方法:移至上一条记录。

(5)Move [n] 方法:向前或向后移n条记录,n为指定的数值。

在窗体上用4个命令按钮代替例9.2数据控件对象的4个箭头按钮的操作。窗体上增加4个命令按钮,将数据控件的Visible属性设置为False,通过对4个命令按钮的编程代替对数据控件对象的4个箭头按钮的操作。

命令按钮Command1­_Click事件移至第1条记录,代码如下:

Private Sub Command1_Click()

Data1.Recordset.MoveFirst

End Sub

命令按钮Command4_Click事件移至最后一条记录,代码如下:

Private Sub Command4_Click()

Data1.Recordset.MoveLast

End Sub

另外两个按钮的代码需要考虑Recordset对象的边界的首尾,如果越界,则用MoveFirst方法定位到第1条记录或用MoveLast方法定位到最后一条记录。程序代码如下:

Private Sub Command2_Click()

Data1.Recordset.MovePrevious

If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst

End Sub

Private Sub Command3_Click()

Data1.Recordset.MoveNext

If Data1.Recordset.EOF Then Data1.Recordset.MoveLast

End Sub

7.Find方法

使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录。4种Find方法是:

(1)FindFirst方法:从记录集的开始查找满足条件的第1条记录。

(2)FindLast方法:从记录集的尾部向前查找满足条件的第l条记录。

(3)FindNext方法:从当前记录开始查找满足条件的下一条记录。

(4)FindPrevious方法:从当前记录开始查找满足条件的上一条记录。

4种Find方法的语法格式相同:

数据集合.Find方法条件

搜索条件是一个指定字段与常量关系的字符串表达式。在构造表达式时,除了用普通的关系运算外,还可以用Like运算符。

例如:语句 “Data1.Recordset.FindFirst专业=’物理’”表示在由Data1数据控件所连接的数据库Student.mdb的记录集内查找专业为“物理”的第l条记录。这里,“专业”为数据库Student记录集中的字段名,在该字段中存放专业名称信息。要想查找下一条符合条件的记录,可继续使用语句:”Data1.Recordset.FindNext专业=’物理’”。

又例如:与c#数据库编程相似的要在记录集内查找专业名称中带有“建”字的专业:

Data1.Recordset.FindFirst 专业 Like ”*建*”

字符串“*建*”匹配字段专业中带有“建”字字样的所有专业名称字符串。

需要指出的是Find方法在找不到相匹配的记录时,当前记录保持在查找的始发处,NoMatch属性为True。如果Find方法找到相匹配的记录,则记录定位到该记录,Recordset的NoMatch属性为False。

8.Seek方法

使用Seek方法必须打开表的索引,它在Table表中查找与指定索引规则相符的第1条记录,并使之成为当前记录。其语法格式为:

数据表对象.seek comparison,keyl,key2…

Seek允许接受多个参数,第1个是比较运算符comparison,Seek方法中可用的比较运算符有=、>=、>、<>、<、<=等。

在使用Seek方法定位记录时,必须通过Index属性设置索引。若在记录集中多次使用同样的Seek方法(参数相同),那么找到的总是同一条记录。

例如:假设数据库Student内基本情况表的索引字段为学号,满足学号字段值大于等于110001的第1条记录可使用以下程序代码:

Data1.RecordsetType = 0’设置记录集类型为Table

Data1.RecordSource = "基本情况"’打开基本情况表单

Data1.Refresh

Data1.Recordset.Index = "jbqk_no"’打开名称为jbqk_no的索引