VB数据库中EOF和BOF的认识与用法

上一篇 / 下一篇  2012-08-16 13:14:45 / 个人分类:数据库

5~#]e;C8GNX6I%~ [*Em9D0  在这些天敲写和调试学生信息管理系统的时候,经常会用到EOF(Endof File)和BOF(Before of File),稍加不注意查询我们的数据库就会出错,那么这俩到底是何方神圣,是怎么用的,之间又有什么区别呢?51Testing软件测试网&a!Y[#Ycw

h#I#|z,i&B+G0  一、认识51Testing软件测试网!\I;VK,w9y

51Testing软件测试网2N_jM:Om1w/M

  BOF:指当前记录位置位于Recordset对象的第一个记录之前51Testing软件测试网\`.IHbxjp

51Testing软件测试网/b+s B/R\6Ccv#GE

  EOF:指当前记录位置位于Recordset对象的最后一个记录之后51Testing软件测试网f e0e HS1t)p#J

51Testing软件测试网+u)mE%Y fz"e H4t2Q

  这两个的属性值均返回布尔型:True和False,使用BOF 和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。 下表即是各自的使用说明及查询结果:

AO U-\M0

!X#G2x"r.IK:C0

EOF

Cm R*Xc9J0

BOF

5w5Bf N*h0

True51Testing软件测试网b(B6| [dN S{

当前行的位置是在最后一行的后面,无记录51Testing软件测试网7a[wmrh

当前行的位置是在第一行之前,无记录51Testing软件测试网} d:|NpW

False

D${Rs7d$`,~8f0v p0

当前行的位置是在最后一行或其前面,有记录51Testing软件测试网MR%Z)@ \1s#b+g

当前位置是在第一行或其后,有记录51Testing软件测试网3uhL`/[!f3X&A$N!}

  说明:

EP qk1z8N%f(d n8_0

  (1)如果当前记录位于第一个记录之前,BOF 属性将返回 True(-1),如果当前记录为第一个记录或位于其后则将返回 False (0)。

IRR Ys3a$YN0

  (2)如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False。51Testing软件测试网G:b@YI0R@+}E

  (3)如果 BOF 或 EOF 属性为 True,则没有当前记录。

+as)_1z;U0

   (4)如果打开没有记录的 Recordset 对象,BOF 和 EOF 属性将设置为True,而 Recordset 对象的 RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时,第一条记录为当前记录,而BOF 和 EOF 属性为 False。

w+M7|+~z0b1j%}0

  (5)如果删除 Recordset 对象中保留的最后记录,BOF 和 EOF属性将保持 False,直到重新安排当前记录。

-s:^ju Sa0

   而在我们的学生信息管理系统中,会涉及到对指针进行的MoveFirst、MoveLast、MovePrevious与MoveNext四种方法。一 般来说,当需要对记录集Recordset中的所有行进行操作时,代码可以使用MoveNext,循环遍历各行,直到EOF属性被置为True51Testing软件测试网 c%t\PU bAP']

  如果当 EOF 被置为 True 时再使用 MoveNext ,或当 BOF被置为 True 时再使用 MovePrevious ,都将产生一个提示代号为‘3021’的错误。51Testing软件测试网8vilX9Fe

  需要注意的是:允许一个Move 方法并非意味着,该方法能成功地定位某行。它仅表示执行这个指定的 Move 方法是允许的,并且不产生一个错误。 BOF 和 EOF属性的状态可以随着该移动的结果而改变。

wjl7@mq d0

  二、用法51Testing软件测试网s7j'n(Z$v2Z4F*{(k*U

  If objRs.BOF Then

#h{O1I$nb0

  表示:当前指针的位置是在第一行记录之前,则...

;IjN5e|ZV0

  If objRs.EOF Then51Testing软件测试网2\"tf;N-p``F.z

  表示:当前指针的位置是在最后一行记录之后,则...51Testing软件测试网m#U1t ^hV+vQ X:L1w\

  If Not objRs.EOF Then

Y)ZK H'pT8`%u9r4i` N0

  表示:当前指针的位置没有到达最后一条记录

2V*{|7D"?H%s1d.q0

  If Not objRs.BOF then

;r4p#LQ+o|5JB x0

  表示:当前指针的位置没有到达第一条记录51Testing软件测试网9^pE+PJ X

  推荐使用下面两条

2u5xW8la | Z Z.\ ?0

  If Not (objRs.BOF AND objRs.EOF) Then51Testing软件测试网c8v$Q8v#yv r

  表示:指针位于RecordSet 的当中(并非是最后一条和第一条) ,说明一定有记录。51Testing软件测试网-P/C2f!Si2mm/A

  If objRs.BOF AND objRs.EOF Then

~F ~MX(x9lW0

  表示:没有任何记录51Testing软件测试网,mj"wd+m1\ Pv


TAG:

 

评分:0

我来说两句

Open Toolbar