vb cn.Close 对象关闭时不允许操作
毕设要做学生信息管理系统,但是这学期在实习完全没有听过vb的课,只学过c和数据结构,跪求帮助!功能是点击Command1后,删除数据库admin中id为Combo1.Te...
毕设要做学生信息管理系统,但是这学期在实习完全没有听过vb的课,只学过c和数据结构,跪求帮助!
功能是点击Command1后,删除数据库admin中id为 Combo1.Text那一行的内容!
Private Sub Command1_Click()
Dim myval As String
myval = MsgBox("是否删除该管理员?", vbInformation + vbYesNo, "提示")
If myval = vbYes Then
Dim cn As ADODB.Connection
sqlstr = "delete from admin where id='" & Combo1.Text & "'"
On Error GoTo exitsub
Set cn = New ADODB.Connection
cn.Open connstr '数据库连接(cn) 打开(open) 指定的连接(cnnstr)
cn.Execute sqlstr
MsgBox "成功删除数据!!"
exitsub:
cn.Close ‘错误提示在这一行, 对象关闭时不允许操作!
Set cn = Nothing '释放对象
End If
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\stu.mdb" & ";Persist Security Info=False"
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenKeyset
Adodc1.LockType = adLockOptimistic
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from admin " '要显示的数据源
Adodc1.Refresh
Adodc1.Recordset.MoveFirst '移动到第一条记录
Combo1.clear
For i = 0 To Adodc1.Recordset.RecordCount - 1 '循环添加吧
Combo1.AddItem Adodc1.Recordset.Fields(0).Value
Adodc1.Recordset.MoveNext '移动到下一条记录
Next i
Dim sqlstr As String
sqlstr = "select * from admin"
End Sub
求大神帮忙看一下qwqqq 对vb一窍不通。。。 展开
功能是点击Command1后,删除数据库admin中id为 Combo1.Text那一行的内容!
Private Sub Command1_Click()
Dim myval As String
myval = MsgBox("是否删除该管理员?", vbInformation + vbYesNo, "提示")
If myval = vbYes Then
Dim cn As ADODB.Connection
sqlstr = "delete from admin where id='" & Combo1.Text & "'"
On Error GoTo exitsub
Set cn = New ADODB.Connection
cn.Open connstr '数据库连接(cn) 打开(open) 指定的连接(cnnstr)
cn.Execute sqlstr
MsgBox "成功删除数据!!"
exitsub:
cn.Close ‘错误提示在这一行, 对象关闭时不允许操作!
Set cn = Nothing '释放对象
End If
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\stu.mdb" & ";Persist Security Info=False"
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenKeyset
Adodc1.LockType = adLockOptimistic
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from admin " '要显示的数据源
Adodc1.Refresh
Adodc1.Recordset.MoveFirst '移动到第一条记录
Combo1.clear
For i = 0 To Adodc1.Recordset.RecordCount - 1 '循环添加吧
Combo1.AddItem Adodc1.Recordset.Fields(0).Value
Adodc1.Recordset.MoveNext '移动到下一条记录
Next i
Dim sqlstr As String
sqlstr = "select * from admin"
End Sub
求大神帮忙看一下qwqqq 对vb一窍不通。。。 展开
1个回答
展开全部
On Error GoTo exitsub 当错误发生时自动跳转到exitsub行继续执行,即 cn.Close,但这时候由于cn并未打开(因为发生错误了),所以执行关闭操作时就出错了,换句话说就是不能对一个已经关闭的对象再次执行关闭操作!
最简单的处理办法就是把
On Error GoTo exitsub
改为
On Error Resume Next
即忽略错误
最简单的处理办法就是把
On Error GoTo exitsub
改为
On Error Resume Next
即忽略错误
更多追问追答
追问
谢谢!原来是这样!修改后运行成功了 ,但并没有删除数据库中那一行是怎么回事?
追答
这是因为你的sql语句可能存在错误造成的。一般而言数据库中的id字段都是数值型的,所以
sqlstr = "delete from admin where id='" & Combo1.Text & "'"
要改为
sqlstr = "delete from admin where id=" & Combo1.Text
另外,代码中没看到connstr这个变量的声明及赋值语句,这个变量如果是在其他事件过程中赋值的,则务必将其声明为全局变量。否则变量的内容将为空。
补充说说:On Error Resume Next这是把错误忽略不做任何处理,因此当程序运行不报错时并不是说程序就没有错误了,它只不过是不告诉你而已。所以在程序设计阶段应该把它删掉或注释掉,然后在程序出现错误时务必解决问题,当程序不再有错误时再把On Error语句恢复。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询