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一窍不通。。。
展开
 我来答
网海1书生
科技发烧友

2016-04-01 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12310 获赞数:26224

向TA提问 私信TA
展开全部
On Error GoTo exitsub 当错误发生时自动跳转到exitsub行继续执行,即 cn.Close,但这时候由于cn并未打开(因为发生错误了),所以执行关闭操作时就出错了,换句话说就是不能对一个已经关闭的对象再次执行关闭操作!

最简单的处理办法就是把
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语句恢复。
TableDI
2024-07-18 广告
`VLOOKUP` 匹配出错误的数据通常是由于以下几个原因:1. **查找值错误**:输入的查找值与数据源中的值不匹配,可能是因为拼写错误、大小写不一致或存在不可见的字符。2. **查找区域设置错误**:查找区域的首列必须包含要查找的值,且... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式