菜鸟求教,我想点击选择listbox中的记录时,点删除按钮后运行反馈总是“内部错误”,请高手指导一下怎么修
问题如上,代码是这样的PrivateSubcmdDelStd_Click()DimrsStudentAsNewADODB.Recordset'定义记录集DimcnExam...
问题如上,代码是这样的
Private Sub cmdDelStd_Click()
Dim rsStudent As New ADODB.Recordset '定义记录集
Dim cnExam As New ADODB.Connection '定义数据连接
Dim IsDel As String
Dim SID As Variant
Dim SIDIndex As Variant
Set cnExam = New ADODB.Connection
cnExam.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\考试系统\Exam.MDB"
cnExam.Open
rsStudent.Open "Select * from StudentInfo where SID='" & SID & "'", cnExam, adOpenStatic, adLockOptimistic
If rsStudent.BOF And rsStudent.EOF Then
MsgBox "内部错误!", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
'判断考生是否有效
If rsStudent("SEnabled") Then
MsgBox "不能删除考生,该考生还处于考试有效状态,请先将考生的状态设置为“禁用”,然后在删除考生!", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
'判断考生是否还有考试科目
If rsStudent("SNum") > 0 Then
MsgBox "不能删除考生!该考生还有尚未完成的考试,考生必须完成全部考试才能删除,或者先删除考生的考试注册信息,才能删除考生。", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
'删除考生
IsDel = MsgBox("您确定要删除考生吗?" & vbCrLf & vbCrLf & "删除操作是不可恢复的", vbYesNo + vbQuestion + vbDefaultButton2, "删除考生")
If IsDel = vbYes Then
'删除考生的注册记录
rsStudent.Delete
rsStudent.Update
rsStudent.Close
'删除考生的考试注册信息
rsStudent.Open "select * From RegInfo where SID=" & SID & "", cnExam
While Not rsStudent.EOF
rsStudent.Delete
rsStudent.Update
Wend
rsStudent.Close
MsgBox "删除考生成功!", vbOKOnly + vbInformation, "成功"
lstStd.RemoveItem SIDIndex
Else
rsStudent.Close
End If
End Sub
请教怎么修改?因为是新人,非常抱歉没有悬赏分,以后有了一定补上
谢谢Xl_meme 的回答。首先肯定要判断记录是否为空,如果不为空才能执行删除命令哒。我的错误应该是在SID的值为空,所以判断成记录为空,执行了“内部错误”的语句。我想问如何完成将我单击的同时将选择的值赋给变量SID,语句不知道怎么写。(记录是显示在listbox控件中的) 展开
Private Sub cmdDelStd_Click()
Dim rsStudent As New ADODB.Recordset '定义记录集
Dim cnExam As New ADODB.Connection '定义数据连接
Dim IsDel As String
Dim SID As Variant
Dim SIDIndex As Variant
Set cnExam = New ADODB.Connection
cnExam.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\考试系统\Exam.MDB"
cnExam.Open
rsStudent.Open "Select * from StudentInfo where SID='" & SID & "'", cnExam, adOpenStatic, adLockOptimistic
If rsStudent.BOF And rsStudent.EOF Then
MsgBox "内部错误!", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
'判断考生是否有效
If rsStudent("SEnabled") Then
MsgBox "不能删除考生,该考生还处于考试有效状态,请先将考生的状态设置为“禁用”,然后在删除考生!", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
'判断考生是否还有考试科目
If rsStudent("SNum") > 0 Then
MsgBox "不能删除考生!该考生还有尚未完成的考试,考生必须完成全部考试才能删除,或者先删除考生的考试注册信息,才能删除考生。", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
'删除考生
IsDel = MsgBox("您确定要删除考生吗?" & vbCrLf & vbCrLf & "删除操作是不可恢复的", vbYesNo + vbQuestion + vbDefaultButton2, "删除考生")
If IsDel = vbYes Then
'删除考生的注册记录
rsStudent.Delete
rsStudent.Update
rsStudent.Close
'删除考生的考试注册信息
rsStudent.Open "select * From RegInfo where SID=" & SID & "", cnExam
While Not rsStudent.EOF
rsStudent.Delete
rsStudent.Update
Wend
rsStudent.Close
MsgBox "删除考生成功!", vbOKOnly + vbInformation, "成功"
lstStd.RemoveItem SIDIndex
Else
rsStudent.Close
End If
End Sub
请教怎么修改?因为是新人,非常抱歉没有悬赏分,以后有了一定补上
谢谢Xl_meme 的回答。首先肯定要判断记录是否为空,如果不为空才能执行删除命令哒。我的错误应该是在SID的值为空,所以判断成记录为空,执行了“内部错误”的语句。我想问如何完成将我单击的同时将选择的值赋给变量SID,语句不知道怎么写。(记录是显示在listbox控件中的) 展开
2个回答
展开全部
If rsStudent.BOF And rsStudent.EOF Then
MsgBox "内部错误!", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
不能这样把 这是判断你的第一条记录或者最后一条是否为空
你可以直接 if rsStudent not bof then
if del ‘当点击删除按钮时 then
rsStudent.Open "select * From RegInfo where SID=" & SID & "", cnExam
end if
end if
MsgBox "内部错误!", vbOKOnly + vbCritical, "错误"
rsStudent.Close
Exit Sub
End If
不能这样把 这是判断你的第一条记录或者最后一条是否为空
你可以直接 if rsStudent not bof then
if del ‘当点击删除按钮时 then
rsStudent.Open "select * From RegInfo where SID=" & SID & "", cnExam
end if
end if
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询