3021
实时错误’3021’,BOF或EOF中有一个是"真",或者当前的记录以被删除
出现此错误是因为:
1.查找的数据库记录为空…可以用 rs.RecordCount 来判断数据是否等于0
2.查找到数据后,用 Del 命令删除记录后,再引用 Fields 后会出现错误.
3.已经用MoveFirst 或用 MovePrevious 命令 移动至数据库开始后再用 MovePrevious 命令.
4.已经用MoveLast 或用 MoveNext 命令 移动至数据库开始后再用 MoveNext 命令.因为你的数据表未知,你使用相关报错输出命令看下,以上四点你属于哪一点,就知道如何排错了。
if check.value
默认check.value为布尔值.
如果check.value等于-1. 这个条件也会成立. 因为VB中.0为假,非0为真.
if check.value = 1
请注意. 这样看 if (check.value = 1)
(check.value = 1) 这个比较运算.只会返回两个值. 一个是True 一个是False
如果 check.value等于 -1 这个条件不会成立…
VB中Unload、END、Hide的区别
1、Unload 语句
从内存中卸载窗体或控件。
在卸载窗体前,会发生 Query_Unload 事件过程,然后是 Form_Unload 事件过程。在其中任一过程中设置 cancel 参数为 True 可防止窗体被卸载。若为 MDIForm 对象,先发生 MDIForm 对象的 Query_Unload 事件过程,接着是各 MDI 子窗体 的 Query_Unload 事件过程和 Form_Unload 事件过程,最后是 MDIForm 对象的 Form_Unload 事件过程。
例如,在窗体中关闭自己:unload Me。
2、End 语句
结束一个过程或块。
End 语句不调用 Unload、QueryUnload、或 Terminate 事件或任何其它 Visual Basic 代码,只是生硬地终止代码执行。窗体和类模块中的 Unload、QueryUnload、和 Terminate 事件代码未被执行。类模块创建的对象被破坏,由 Open 语句打开的文件被关闭,并且释放程序所占用的内存。其它程序的对象引用无效。
End 语句提供了一种强迫中止程序的方法。Visual Basic 程序正常结束应该卸载所有的窗体。只要没有其它程序引用该程序公共类模块创建的对象并无代码执行,程序将立即关闭。
3、Hide
隐藏窗体或空间而已,并不从内存中卸载。
4、Exit sub
Exit sub 的作用是结束当前的过程,不再执行后续程序。
VB中end、unload、exit sub、 end sub、close、hide的比较
End :是结束、终止的意思, End 语句不调用 Unload、QueryUnload、或 Terminate 事件或任何其它 Visual Basic 代码,end语句终止本程序的运行,包括:关闭所有的窗体,关闭所有被打开的文件,发送在内存里还没有到打印机的事件等等,是从内部关闭进程,这样是非正常关闭,很多窗体将在未经通知的状况下结束,只是生硬地终止代码执行,强制关闭整个程序,就比如说,在程序运行过程中,执行end 语句会退出整个程序,程序终止运行,它是强制性的终止运行。
Unload:是卸载的意思,卸载当前窗体或控件,是将窗体及窗体中其它控件占用的内存释放,还给操作系统, 窗体即将从屏幕上消失(被关闭);装载窗体是将窗体及其上的控件加载到内存中,并初始化所有的控件,然后执行Form_load函数内的所有内容,所以卸载就是从内存中将当前窗体或控件删除,就相当于机房收费系统中的退卡功能,当退卡之后,此卡就相当于注销,此卡已经不再使用,同时也从学生表里删除与该卡相关的记录,不能进行上下机和充值等操作,可以再次被注册和使用。
Exit sub :Exit Sub 是在过程内代码执行时,可选择性的退出过程执行,用在过程中,往往是代码执行过程中,当满足一个条件时,执行exit sub退出过程,就不会继续执行exit sub后面的语句,相当于在一场长跑比赛中,由于不同的原因,有的选手就会坚持跑到终点,而有的选手往往坚持不下来而选择走在赛道上或是离开赛场,这个选手就属于中途放弃,可以给它贴一个标签——exit sub。
End sub:对于每个过程, End Sub 必须有且必须只有一个 ,而 Exit Sub 可以有也可以没有,可以有一个,也可以有很多个;End Sub 表示过程代码的结束, 这个必须有;Exit Sub 表示退出过程,若被执行,则其下的属于该过程的代码不会被执行,通常用于中间判断例如满足某些条件时,直接退出过程而不执行其下代码,end sub相比exit sub来说,属于善始善终类型。
Close:是关闭的意思,比如说form1.close,就是指关闭form1这个窗体,如果from1恰好是一个程序的主窗体的时候,那么整个窗体会随程序一起关闭,Close只是关闭而已,窗体还在,只是不显示了。只有在Dispose之后,才会彻底结束释放掉。
Hide:是隐藏的意思,把窗体隐藏,窗体不可见,是将其窗体的Visible属性设置为Flase,系统并不释放其资源.用户不能与其交互,但从代码中依然能访问其中的控件.因此,需要经常显示的窗体应采用Hide方法,而非Close方法.下次用Show方法显示时,它将保存上次的状态,这个是我们要注意的,在编程时是否有这样的需求。