添加图书时出现错误:对象打开时,不允许操作
代码如下:
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As New ADODB.Command
Public connstring As StringPrivate Sub cmdadd_Click()
rs.Open strsql, Conn, 3, 3
rs.Open "select * from 图书 ", Cn, adOpenKeyset, adLockOptimistic, adCmdText
If txt书号.Text = "" Or txt书名.Text = "" Or Txt作者.Text = "" Or _
txt出版社.Text = "" Or txt单价.Text = "" Or txt借出否.Text = "" Then
MsgBox "图书的信息填写不完整,请重新填写!", vbOKOnly + _
vbExclamation, "警告"
Else
rs.AddNew
rst!图书_bookid = txt书号.Text
rst!图书_书名 = txt书名.Text
rst!图书_作者 = Txt作者.Text
rst!图书_出版社 = txt出版社.Text
rst!图书_定价 = txt单价.Text
rst!图书_借出否 = txt借出否.Text
rs.Update
MsgBox "添加图书成功!", vbOKOnly
txt书号.Text = "": txt书名.Text = "": Txt作者.Text = "": _
txt出版社.Text = "": txt单价.Text = "": txt借出否.Text = ""
End If
rs.Close
End Sub
Private Sub cmdsave_Click()
Dim strsql$, str书号$, str书名$, str作者$, str出版社$, str类别$, str借出否$, str单价$
Dim bookmk
str书号 = Replace(Trim(txt书号.Text), "'", "")
str书名 = Replace(Trim(txt书名.Text), "'", "")
str作者 = Replace(Trim(Txt作者.Text), "'", "")
str出版社 = Replace(Trim(txt出版社.Text), "'", "")
str类别 = Replace(Trim(Txt类别.Text), "'", "")
str借出否 = Replace(Trim(txt借出否.Text), "'", "")
str单价 = Replace(Trim(txt单价.Text), "'", "")
If str书号 = "" Then
MsgBox "书号不能为空", , "输入错误"
txt书号.SetFocus
Exit Sub
ElseIf str书名 = "" Then
MsgBox "书名不能为空", , "输入错误"
txt书名.SetFocus
Exit SubEnd IfIf str书号 <> rs("bookid") Then
Set rsvalid = New ADODB.Recordset
strsql = "select * from 图书 where bookid='" & str书号 & "'"
rsvalid.Open strsql, Conn, 1, 1
' If Not rsvalid.EOF Then
' MsgBox "该图书已存在,重新输入"
'txtreaderid.SetFocus
' rsvalid.Close
'Set rsvalid = Nothing
' Exit Sub
' End If
rsvalid.Close
Set rsvalid = Nothing
' Set cmdupdate = New ADODB.Command
' Set cmdupdate.ActiveConnection = Conn
' strsql = "update sc set sno='" & strstudentID
' strsql = strsql & "' where sno='" & rs("sno") & "';"
' cmdupdate.CommandText = strsql
' cmdupdate.Execute
' Set cmdupdate = Nothing
End If
rs("bookid").Value = str书号
rs("书名").Value = str书名
rs("作者").Value = str作者
rs("出版社").Value = str出版社
rs("类别").Value = str类别
rs("定价").Value = str单价
rs("借出否").Value = str借出否
rs.UpdateBatch
'rs.Book = bookmk
txt书号.Text = ""
txt书名.Text = ""
txt出版社.Text = ""
Txt类别.Text = ""
Txt作者.Text = ""
txt借出否.Text = ""
txt单价.Text = ""
End Sub
Private Sub Form_Load()
Set Conn = New ADODB.Connection
Set rs = New ADODB.Recordset
connstring = "driver={SQL Server};SERVER=.;DATABASE=图书管理系统;uid=;pwd="
Conn.Open connstring
strsql = "select bookid,书名,作者,出版社,类别,定价,借出否 from 图书"
rs.Open strsql, Conn, 3, 3
Set dgbook.DataSource = rs
With dgbook
.Columns(0).Width = 1500
.Columns(0).Caption = "书号 "
.Columns(1).Width = 1500
.Columns(1).Caption = "书名"
.Columns(2).Width = 1500
.Columns(2).Caption = "作者"
.Columns(3).Width = 800
.Columns(3).Caption = "出版社"
.Columns(4).Width = 1500
.Columns(4).Caption = "类别"
.Columns(4).Width = 1500
.Columns(4).Caption = "单价"
.Columns(4).Width = 1500
.Columns(4).Caption = "借出否"
End With
cmdsave.Enabled = False
'fullclass
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set dgbook.DataSource = Nothing
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
End Sub
代码如下:
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As New ADODB.Command
Public connstring As StringPrivate Sub cmdadd_Click()
rs.Open strsql, Conn, 3, 3
rs.Open "select * from 图书 ", Cn, adOpenKeyset, adLockOptimistic, adCmdText
If txt书号.Text = "" Or txt书名.Text = "" Or Txt作者.Text = "" Or _
txt出版社.Text = "" Or txt单价.Text = "" Or txt借出否.Text = "" Then
MsgBox "图书的信息填写不完整,请重新填写!", vbOKOnly + _
vbExclamation, "警告"
Else
rs.AddNew
rst!图书_bookid = txt书号.Text
rst!图书_书名 = txt书名.Text
rst!图书_作者 = Txt作者.Text
rst!图书_出版社 = txt出版社.Text
rst!图书_定价 = txt单价.Text
rst!图书_借出否 = txt借出否.Text
rs.Update
MsgBox "添加图书成功!", vbOKOnly
txt书号.Text = "": txt书名.Text = "": Txt作者.Text = "": _
txt出版社.Text = "": txt单价.Text = "": txt借出否.Text = ""
End If
rs.Close
End Sub
Private Sub cmdsave_Click()
Dim strsql$, str书号$, str书名$, str作者$, str出版社$, str类别$, str借出否$, str单价$
Dim bookmk
str书号 = Replace(Trim(txt书号.Text), "'", "")
str书名 = Replace(Trim(txt书名.Text), "'", "")
str作者 = Replace(Trim(Txt作者.Text), "'", "")
str出版社 = Replace(Trim(txt出版社.Text), "'", "")
str类别 = Replace(Trim(Txt类别.Text), "'", "")
str借出否 = Replace(Trim(txt借出否.Text), "'", "")
str单价 = Replace(Trim(txt单价.Text), "'", "")
If str书号 = "" Then
MsgBox "书号不能为空", , "输入错误"
txt书号.SetFocus
Exit Sub
ElseIf str书名 = "" Then
MsgBox "书名不能为空", , "输入错误"
txt书名.SetFocus
Exit SubEnd IfIf str书号 <> rs("bookid") Then
Set rsvalid = New ADODB.Recordset
strsql = "select * from 图书 where bookid='" & str书号 & "'"
rsvalid.Open strsql, Conn, 1, 1
' If Not rsvalid.EOF Then
' MsgBox "该图书已存在,重新输入"
'txtreaderid.SetFocus
' rsvalid.Close
'Set rsvalid = Nothing
' Exit Sub
' End If
rsvalid.Close
Set rsvalid = Nothing
' Set cmdupdate = New ADODB.Command
' Set cmdupdate.ActiveConnection = Conn
' strsql = "update sc set sno='" & strstudentID
' strsql = strsql & "' where sno='" & rs("sno") & "';"
' cmdupdate.CommandText = strsql
' cmdupdate.Execute
' Set cmdupdate = Nothing
End If
rs("bookid").Value = str书号
rs("书名").Value = str书名
rs("作者").Value = str作者
rs("出版社").Value = str出版社
rs("类别").Value = str类别
rs("定价").Value = str单价
rs("借出否").Value = str借出否
rs.UpdateBatch
'rs.Book = bookmk
txt书号.Text = ""
txt书名.Text = ""
txt出版社.Text = ""
Txt类别.Text = ""
Txt作者.Text = ""
txt借出否.Text = ""
txt单价.Text = ""
End Sub
Private Sub Form_Load()
Set Conn = New ADODB.Connection
Set rs = New ADODB.Recordset
connstring = "driver={SQL Server};SERVER=.;DATABASE=图书管理系统;uid=;pwd="
Conn.Open connstring
strsql = "select bookid,书名,作者,出版社,类别,定价,借出否 from 图书"
rs.Open strsql, Conn, 3, 3
Set dgbook.DataSource = rs
With dgbook
.Columns(0).Width = 1500
.Columns(0).Caption = "书号 "
.Columns(1).Width = 1500
.Columns(1).Caption = "书名"
.Columns(2).Width = 1500
.Columns(2).Caption = "作者"
.Columns(3).Width = 800
.Columns(3).Caption = "出版社"
.Columns(4).Width = 1500
.Columns(4).Caption = "类别"
.Columns(4).Width = 1500
.Columns(4).Caption = "单价"
.Columns(4).Width = 1500
.Columns(4).Caption = "借出否"
End With
cmdsave.Enabled = False
'fullclass
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set dgbook.DataSource = Nothing
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
End Sub
rs.Open "select * from 图书 ", Cn, adOpenKeyset, adLockOptimistic, adCmdText 你同一个rs连续Open了两次,当然报错。要么只Open一次,要么要先Close才能再Open。你前面Open完啥都没干,那Open它干啥?
rs.Open "select * from 图书 ", Cn, adOpenKeyset, adLockOptimistic, adCmdText
rs.Open "select * from 图书 ", Cn, adOpenKeyset, adLockOptimistic, adCmdText