一.删除全部记录后提示错误“3021”
这个错误产生的原因主要是因为数据库中无记录,所以我们首先在删除的时候判断是否到最后一条记录,提示用户,若用户仍然要删除,提示数据为空,添加数据,添加窗体显示,解决代码如下:
If mrc.RecordCount = 1 Then
str2$ = MsgBox("这是最后一条记录,是否删除?", vbOKCancel + vbExclamation, "警告")
If str2$ = vbOK Then
mrc.Delete
str2$ = MsgBox("数据为空,是否添加?", vbOKCancel + vbInformation, "提示")
If str2$ = vbYes Then
Me.Hide
frmAddresult.Show
Else
Unload Me
Exit Sub
End If
Else
Exit Sub
End If
End If
并且在frmmain窗体的单击事件中加入一段代码判断数据是否为空,若为空,则显示添加窗体,代码如下:
txtSQL = "select * from class_info "
Set mrc = ExecuteSQL(txtSQL, MsgText)
'修改班级信息的时候没有信息首先判断要添加班级信息
If mrc.RecordCount = 0 Then
MsgBox "没有班级信息,请先添加班级信息!", vbOKOnly + vbExclamation, "提示"
mrc.Close
Set mrc = Nothing
frmAddclassinfo.Show
Exit Sub
Else
frmModifyclassinfo.Show
二.删除全部信息后添加信息提示"3021“
这个错误产生的原因和上个错误一样,我们只需要在判断重复的语句之前判断一下数据集对象中的记录是否为0就好了,解决代码如下:
If txtClassno.Text = "" Then
MsgBox "请输入班号!", vbOKOnly + vbExclamation, "警告"
txtClassno.SetFocus
Exit Sub
Else
'返回当前数据库中所有记录
txtSQL = "select * from class_Info"
'执行查询语句
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.RecordCount <> 0 Then
'移动到第一条记录
mrc.MoveFirst
'判断是否到数据集最后
While (mrc.EOF = False)
'判断班号是否重复
If (Trim(mrc.Fields(0)) = Trim(txtClassno.Text)) Then
MsgBox "班号已经存在,请重新输入班号!", vbOKOnly + vbExclamation, "警告"
txtClassno.SetFocus
txtClassno.Text = ""
Else
'移动到下一条记录
mrc.MoveNext
End If
Wend
End If
End If
三.多步 OLEDB 操作产生错误
这个错误产生的原因一般是数据类型不对,或者字符个数超出了数据库的字段的最大限制个数。打开数据库的表右击选择设计修改合适的类型即可。这个错误产生的原因还可能是在窗体运行时文本框的输入字符长度大于了数据库中的字段的最大限制个数,修改控件的maxlength属性即可。