:M
t5@cf$P-_&r0m0 在这些天敲写和调试学生信息管理系统的时候,经常会用到EOF(Endof File)和BOF(Before of File),稍加不注意查询我们的数据库就会出错,那么这俩到底是何方神圣,是怎么用的,之间又有什么区别呢?51Testing软件测试网Q#N2Tn+Uz
&H'i5i7G'La&XYB/L0 一、认识51Testing软件测试网6h!?)Z*tC-`c
51Testing软件测试网M3K5T1\4h{!gw BOF:指当前记录位置位于Recordset对象的第一个记录之前
+|?8MSZ051Testing软件测试网Xo4eU*t*GzW EOF:指当前记录位置位于Recordset对象的最后一个记录之后
3m)P#n-v,g { `"R5?-B051Testing软件测试网EKY.r0lL~"Shc 这两个的属性值均返回布尔型:True和False,使用BOF 和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。 下表即是各自的使用说明及查询结果:
_1A9V/z aDo"YsCU0 G"U
l%_o8^0 | EOF51Testing软件测试网0_$[`gc0e] | BOF51Testing软件测试网'D?,P NI.^E$R1V |
True51Testing软件测试网
YR/g\%y0T | 当前行的位置是在最后一行的后面,无记录51Testing软件测试网yX9wu"Ei?I | 当前行的位置是在第一行之前,无记录 t`;_"M6jE0 |
False (Aj!k~$\&?b0 | 当前行的位置是在最后一行或其前面,有记录51Testing软件测试网t7N*^J }` | 当前位置是在第一行或其后,有记录 (N
vI5BP(K0 |
说明:51Testing软件测试网j0O'q)S j#`WK&P$i
(1)如果当前记录位于第一个记录之前,BOF 属性将返回 True(-1),如果当前记录为第一个记录或位于其后则将返回 False (0)。
vve&r1k7Yi f0 (2)如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False。
&}*BLW2p%j hO0 (3)如果 BOF 或 EOF 属性为 True,则没有当前记录。51Testing软件测试网d1n$c%YP r0K"Y8w9b/i
(4)如果打开没有记录的 Recordset 对象,BOF 和 EOF 属性将设置为True,而 Recordset 对象的
RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时,第一条记录为当前记录,而BOF 和 EOF 属性为
False。51Testing软件测试网gC^'x(vW'y
(5)如果删除 Recordset 对象中保留的最后记录,BOF 和 EOF属性将保持 False,直到重新安排当前记录。51Testing软件测试网2r2kW'dU
而在我们的学生信息管理系统中,会涉及到对指针进行的MoveFirst、MoveLast、MovePrevious与MoveNext四种方法。一
般来说,当需要对记录集Recordset中的所有行进行操作时,代码可以使用MoveNext,循环遍历各行,直到EOF属性被置为True51Testing软件测试网'z~2HV!l,D z |
如果当 EOF 被置为 True 时再使用 MoveNext ,或当 BOF被置为 True 时再使用 MovePrevious ,都将产生一个提示代号为‘3021’的错误。
:{&cN,gu1h0 需要注意的是:允许一个Move 方法并非意味着,该方法能成功地定位某行。它仅表示执行这个指定的 Move 方法是允许的,并且不产生一个错误。 BOF 和 EOF属性的状态可以随着该移动的结果而改变。
qM cE|4b B
w,d"g"O*s.Y0 二、用法51Testing软件测试网 d7Gyi!B4TE$i
If objRs.BOF Then51Testing软件测试网fp9Rb%LF8x
表示:当前指针的位置是在第一行记录之前,则...
2i2IAgJy4cZ*~0 If objRs.EOF Then
&U"t
Pq9`0np\tF0 表示:当前指针的位置是在最后一行记录之后,则...51Testing软件测试网7a2]-QJ1Z lgE/d
If Not objRs.EOF Then
i}5fz%pD5L0},C*OJQ0 表示:当前指针的位置没有到达最后一条记录51Testing软件测试网8OF,M%Y"?ZKi
DZ(a
If Not objRs.BOF then
9Y:Ei&ohO0 表示:当前指针的位置没有到达第一条记录
r)t2T;v#F1cZ*Wi0 推荐使用下面两条51Testing软件测试网6w3r/?5Mv`{%S)E
If Not (objRs.BOF AND objRs.EOF) Then51Testing软件测试网-U+a |HOn$Gl
表示:指针位于RecordSet 的当中(并非是最后一条和第一条) ,说明一定有记录。
3|:q%_Wg.~0 If objRs.BOF AND objRs.EOF Then
i%u.m-i#M0 表示:没有任何记录51Testing软件测试网)Y.K Txi;d b|