首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

深入显出理解 BOF和EOF

2012-09-07 
深入浅出理解BOF和EOF在做学生管理的过程中,多次运用BOF和EOF,使文章的逻辑更加的鲜明,刚开始理解不是很到

深入浅出理解 BOF和EOF

             在做学生管理的过程中,多次运用BOF和EOF,使文章的逻辑更加的鲜明,刚开始理解不是很到位、有点小偏差,随着大家的交流与学习,逐渐加强了对其的认识,接下来大家共同学习!

 深入显出理解  BOF和EOF

 

解释说明:

       ADO Recordset 对象用于容纳一个来自数据库表的记录集。一个 Recordset 对象由记录和列(字段)组成。

      在 ADO 中,此对象是最重要且最常用于对数据库的数据进行操作的对象。

 

 

      BOF (Before of File)指示当前记录位置位于 Recordset 对象的第一个记录之前。

Private Sub previousCommand_Click()On Error GoTo P_Err'错误语句  mrc.MovePrevious  If mrc.BOF Then            '如果当前记录位于第一个记录,则移向最后一个记录    mrc.MoveLast  End If   Call viewDataP_EXIT:    Exit SubP_Err:    MsgBox "无任何记录!", vbOKOnly + vbCritical, "警告"    '验证无法正常完成    GoTo P_EXITEnd Sub




      EOF(End of File) 指示当前记录位置位于 Recordset 对象的最后一个记录之后。


 

Private Sub deleteCommand_Click()    On Error GoTo P_Err    myBookmark = mrc.Bookmark '标记    Str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")    If Str2$ = vbOK Then                                    '首先是先测试是否要删除的记录为最后一条记录        mrc.MoveNext                                     '如果为最后,则先把当前记录移动到第一个        If mrc.EOF Then            mrc.MoveFirst                                    '书签移动到第一个            mybookmarl = mrc.Bookmark            mrc.MoveLast                                      '然后在移动到最后            mrc.Delete                                        '删除            mrc.Bookmark = myBookmark                         '找到刚才的书签            Call viewData        Else            myBookmark = mrc.Bookmark                         '标记如果不是最后一个            mrc.MovePrevious                                  '标记下一个,因为删除以后就要移动到下一个            mrc.Delete                                        '删除            mrc.Bookmark = myBookmark                         ' 找回刚才标记的书签            Call viewData        End If                                                '显示记录    Else        mrc.Bookmark = myBookmark                                '取消标记        Call viewData    End IfP_EXIT:    Exit SubP_Err:    txtName.Text = ""    txtBorndate.Text = ""    txtSID.Text = ""    txtRudate.Text = ""    txtTel.Text = ""    txtAddress.Text = ""    txtComment.Text = ""    MsgBox "无任何记录!", vbOKOnly + vbCritical, "警告"    '验证无法正常完成    GoTo P_EXITEnd Sub




 

返回值:BOF 和 EOF 属性返回布尔型值。

使用 BOF 和 EOF 属性可确定 Recordset对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。

下面分几种情况来讨论学习:

 

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

2:如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回 True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False。

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

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

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

 

 

以下表格说明不同 BOF 和 EOF 属性组合所允许的 Move 方法。

MoveFirst,
MoveLastMovePrevious,
Move < 0
Move 0MoveNext,
Move > 0BOF=True,
EOF=False允许错误错误允许BOF=False,
EOF=True允许允许错误错误同时为 True错误错误错误错误同时为 False允许允许允许允许

允许使用 Move 方法并不能保证该方法成功定位记录,只是意味着调用指定的 Move 方法不会产生错误。

下表说明当调用各种 Move 方法但未成功定位记录时 BOF 和 EOF 属性设置所发生的情况。

BOFEOFMoveFirst, MoveLast设置为 True设置为 True Move 0没有变化没有变化MovePrevious, Move < 0设置为 True没有变化MoveNext, Move > 0没有变化设置为 True

 

20楼cjr152336611432小时前
真受不了你
Re: lishehe2小时前
回复cjr15233661143n那就再胖点,嘿嘿
19楼wangxuhebeibd2小时前
[e01]
Re: lishehe2小时前
回复wangxuhebeibdn谢谢,呵呵加油
18楼kanglix1an2小时前
学习了~~~
Re: lishehe2小时前
回复kanglix1ann加油,六
17楼huo_yun3小时前
大牛。。。
Re: lishehe2小时前
回复huo_yunn[e04]
16楼han_yankun2009昨天 17:55
加油
Re: lishehe昨天 20:08
回复han_yankun2009n坤哥加油
Re: sunliduan昨天 21:03
很棒啊,社和!回复han_yankun2009
Re: lishehe昨天 23:33
回复sunliduann加油
15楼liutengteng130昨天 17:07
再好好理解一下,呵呵。加油。
Re: lishehe昨天 17:37
回复liutengteng130n噢噢噢噢,[e03]
14楼mazhaojuan昨天 14:36
总结出来,很清晰!
Re: lishehe昨天 16:02
回复mazhaojuann继续努力ing
13楼hejingyuan6昨天 14:36
呵呵
Re: lishehe昨天 14:36
回复hejingyuan6n[e04]
12楼song_mou_xia昨天 14:35
学习了。。
Re: lishehe昨天 14:35
回复song_mou_xian互相努力
11楼cimayang昨天 14:34
不错,写的好详细。
Re: lishehe昨天 14:34
回复cimayangn[e04]
10楼dandanzmc昨天 14:33
学习
Re: lishehe昨天 14:34
回复dandanzmcn学习,加油
9楼a1314517love昨天 14:32
深入理解,长收
Re: lishehe昨天 14:32
回复a1314517loven嗯[e04]
8楼zhang_xinxiu昨天 14:31
嗯……很重要啊
Re: lishehe昨天 14:32
回复zhang_xinxiu是,理解这方面得想你学习,结合生活
7楼www_qnyxrjz_com昨天 11:49
有用。也学习
Re: lishehe昨天 14:10
回复www_qnyxrjz_comn相互学习
6楼xjc1278003262昨天 09:09
不错,加油!
Re: lishehe昨天 10:14
回复xjc1278003262n加油
5楼leimengyuanlian昨天 08:17
有感触
Re: lishehe昨天 08:33
回复leimengyuanliann共鸣学习
4楼JohnnyDengy昨天 08:00
项一下,,可惜看不懂。。。。
Re: lishehe昨天 08:07
回复JohnnyDengyn没事,加油,很快就会看懂的
3楼wlccomeon昨天 07:58
好啊,学习啦![e03]
2楼yinjingjing198808昨天 07:46
很清晰!
Re: lishehe昨天 07:56
回复yinjingjing198808n向师姐学习
1楼yudandan10昨天 07:43
写的真好
Re: lishehe昨天 07:45
回复yudandan10n互相学习

热点排行