这两个问题也是研究了一天,通过资料的搜集和更改以及所有资料的完整结合,终于实现这一功能。
(1)首先是禁止循环,这一问题,用了一个很简单的“Enable”,当移动到最后一条或第一条数据时,若继续单机,则提示信息,并且,控件不能使用,也就是“Enable”设置为“False”,基本代码如下
Private Sub cmdnext_Click()
cmdLast.Enabled = True
cmdFirst.Enabled = True
cmdPrevious.Enabled = True
mrc.MoveNext
If mrc.EOF Then
cmdNext.Enabled = False
MsgBox "已经最后一条记录", vbOKOnly + vbExclamation, "提示"
Else
Call viewData
cmdNext.Enabled = True
End If
End Sub
Private Sub cmdprevious_Click()
cmdLast.Enabled = True
cmdFirst.Enabled = True
cmdNext.Enabled = True
mrc.MovePrevious
If mrc.BOF Then
cmdPrevious.Enabled = False
MsgBox "已经最后一条记录", vbOKOnly + vbExclamation, "提示"
Else
Call viewData
cmdPrevious.Enabled = True
End If
End Sub
此代码,以Cmdnext和Cmdprevious为基础。
(2)第二个问题就是再修改信息是,如果文本框为空时,禁止添加,这样也是为了方便,很简单,就是添加一个判断语句,判断文本框是否为空即可,代码如下:
txtSQL = "select * from class_Info where class_No = '" & Trim(txtClassno.Text) & "'"
Set mrcc = ExecuteSQL(txtSQL, Msgtext)
If mrcc.EOF = False Then
MsgBox "班号重复", vbOKOnly + vbExclamation, "提示"
mrcc.Close
txtClassno.SetFocus
Else
If Trim(comboGrade.Text) = "" Then
MsgBox "请输入年级", vbOKOnly + vbExclamation, "提示"
comboGrade.SetFocus
Else
If Trim(txtDirector.Text) = "" Then
MsgBox "请输入班主任姓名", vbOKOnly + vbExclamation, "提示"
txtDirector.SetFocus
Else
If Trim(txtClassroom.Text) = "" Then
MsgBox "请输入教室", vbOKOnly + vbExclamation, "提示"
txtClassroom.SetFocus
Else
If Trim(txtClassno.Text) = "" Then
MsgBox "请输入班号", vbOKOnly + vbExclamation, "提示"
txtClassno.SetFocus
Else
mrc.Delete
mrcc.Close '???????
mrc.AddNew
mrc.Fields(0) = Trim(txtClassno.Text)
mrc.Fields(1) = Trim(comboGrade.Text)
mrc.Fields(2) = Trim(txtDirector.Text)
mrc.Fields(3) = Trim(txtClassroom.Text)
mrc.Update
MsgBox "修改班级成功", vbOKOnly + vbExclamation, "提示"
mrc.Bookmark = myBookmark
Call viewData
Frame2.Enabled = True
cmdFirst.Enabled = True
cmdPrevious.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
txtClassno.Enabled = False
comboGrade.Enabled = False
txtDirector.Enabled = False
txtClassroom.Enabled = False
mcclean = True
End If
End If
End If
End If
End If
End Sub
以上只是修改的进行判断的代码。
上面的代码要注意一个问题,那就是mrc.delete的位置,如果位置不对,那么可能也会出现错误,
(3)关于3021的错误,在”修改班级信息最后一条记录“时会出现这个错误,既然出现了那就想办法解决。出现此错误,就引用此错误
Private Sub cmddelete_Click()
On Error GoTo dateerr
myBookmark = mrc.Bookmark
str2$ = MsgBox("是否删除当前错误", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then
mrc.MoveNext
If mrc.EOF Then
mrc.MoveFirst
myBookmark = 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 If
dateerr:
If Err = 3021 Then
MsgBox "已经没有数据了,是否添加数据", vbOKOnly + vbExclamation, "提示"
If vbOK Then
frmAddclassinfo.Show
Me.Hide
Else
txtClassno.Text = "'"
comboGrade.Text = ""
txtDirector.Text = ""
txtClassroom.Text = ""
End If
End If
End Sub