【问题一,实时错误“3021”】:
2. 是在删除最后一条记录时便会发生错误;
问题出现原因:
我们查找的数据库记录为空,也就是数据库中没有相应的数据;删除最后一条记录时候报这样的错误,也是这个原理,数据库中没有信息;
问题解决方法:
一、进行错误处理
错误处理的本质就是当遇到错误时,可以跳过该错误,直接进行下一步,以便于程序顺利进行!那么我们就可以根据这个原理在代码中添加错误处理,问题便可迎刃而解!以下是我修改过后的代码:
Private Sub Form_Load() Dim txtsql As String Dim MsgText As String 'sql语句 txtsql = "select * from student_Info " '执行查询语句 Set mrc = Executesql(txtsql,MsgText) If mrc.EOF = False Then '移动到第一条记录 mrc.MoveFirst '显示数据 Call viewData '记下当前记录的位置(做标记) myBookmark = mrc.Bookmark '给标志赋初值 mcclean = True Else MsgBox "没有纪录!",vbOKOnly + vbInformation,"提示" Frame1.Enabled = False Frame2.Enabled = False Exit Sub End If End Sub二、当表中只有一条记录时,删除此条记录会报错,添加判断,判断是否为最后一条记录,代码如下:
'定义全局变量'定义数据库记录集对象 Dim rstObj As ADODB.Recordset '定义标记数据表当前状态的书签 Dim myBookmark As Variant '当点击删除按钮时,判断此时表中是否只有一条记录 '如果只有一条记录,则删除此记录,关闭窗体 '如果含义多条记录,则删除此记录,显示下一条记录 Private Sub cmdDel_Click() Dim intMsg As Integer '定义记录MsgBox返回值的对象 myBookmark = rstObj.Bookmark '标记当前数据表的状态 intMsg = MsgBox("是否删除当前记录?",vbOKCancel,"删除当前记录") If intMsg = vbOK Then '如果选择“是” rstObj.MoveNext '游标指向下一条记录 If rstObj.EOF Then '如果表中只有一条记录 rstObj.MovePrevIoUs rstObj.Delete '删除最后一条记录后,窗体关闭 MsgBox "没有记录" Unload Me Else '如果表中有多条记录 myBookmark = rstObj.Bookmark '标记当前数据表的状态 rstObj.MovePrevIoUs rstObj.Delete rstObj.Bookmark = myBookmark Call viewData '显示数据表中的内容 End If Else rstObj.Bookmark = myBookmark '还原数据表状态 Call viewData '显示数据表中的内容 End If End Sub
【问题二,无可用MDI窗体】:
问题解决方法:
1. 添加一MDI窗体:我们在新建工程窗体的时候,就直接添加MDI窗体;新建一个VB6工程,在“工程资源管理器”中点鼠标右键调出菜单,添加-->添加MDI窗体
2. 把窗体比如Form1的MDIChild属性设置为False,即可解决
【问题三,实时错误“91”】:
问题出现原因:
1. 数据库连接问题;
2. 代码问题
问题解决方法:
一、数据库没连接上,重新连接数据库
【数据库连接及ODBC配置】
1、首先查看服务管理器,这里大家也都知道,把所有项启动运行就可以了。
2、看ODBC数据源的配置是否正确,确定无误后,查看代码。
二、代码调试
有关这样的问题,代码中你少敲或者多敲了一个逗号,或是单引号,双引号,或者多敲了一个空格都可能导致报错,总之大家细心一点好了,另外对于单双引号的问题具体可以去看李光的博客,总结的挺全,在这里小编就不加以说明啦,学生总结(二)-学生中单引号到底是干嘛的 问题出现的很多,总结了几个经典的错误,其实错误的出现也有一部分的原因是自己在弄得过程中,不够认真,有的只是代码书写错误,结果捣鼓好久找不出错误,找来小伙伴一看代码出问题啦,前后自己弄得都不对应,所以说过程中还是要认真一些的,这样也省出不少力气和时间呢! PS:荣幸与您分享,对于这些错误的解决方法,如有更好的方式一起交流!