请高手指教,帮小弟一把。VB的ADO引用总是报错
我用VB为开发工具,Access为数据库后台,ADO对象引用方法连接数据库,总是报告错误。说是:如果对象已经打开,则不允许执行应用程序所要求的操作;错误的地方就是我字定义的一个过程(ShowData,为的是显示窗体上各个字段的数值,即从数据库中提取数据)。这个窗体的代码如下:
Option Explicit
Dim mrc As ADODB.Recordset
Public txtSQL As String
Dim adoCn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim N As Integer
Dim DaiHao As String
Private Sub CboClass_Change()
Dim sSql As String
Dim MsgText As String
End Sub
Private Sub CboClass_KeyDown(KeyCode As Integer, Shift As Integer)
EnterToTab KeyCode
End Sub
Private Sub CmdCancel_Click()
Unload Me
End Sub
Private Sub CmdSave_Click()
Dim Msg As Integer
Msg = MsgBox("你确认输入的数据保存吗?", vbYesNo + vbQuestion, "数据输入提示询问")
If Msg = vbYes Then
Else
Call Form_Load
End If
End Sub
Private Sub Command1_Click()
Unload Me
FrmPublishHouse.Show 1, Me
End Sub
Private Sub Form_Load()
adoCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\library.mdb" & ";Persist Security Info=False"
adoCn.Open adoCn
Dim MsgText As String
' Rs.Bookmark = Rs.MoveLast
txtSQL = "select * from 家庭藏书书库"
Set rs = ExecuteSQL(txtSQL, MsgText)
Call ShowData(rs)
DaiHao = rs.Fields(0)
LblID.Caption = DaiHao + 1
CboClass.Text = "管理类"
TxtBook.Text = ""
TxtWriter.Text = ""
TxtTranst.Text = ""
TxtMoney.Text = "" & "元"
TxtBooks.Text = ""
' Txtpublish.Text = ""
DTPicker2.Value = ""
TxtNo.Text = ""
DTPicker1.Value = Day(Date)
TxtKaiben.Text = "16" & "开本"
Txtpages.Text = "" & "页"
TxtInfo.Text = ""
TxtBook.SetFocus
CmdLooking.Enabled = False
CboClass.AddItem "所有", 0
End Sub
Public Sub ShowData(rs As ADODB.Recordset)
adoCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\library.mdb" & ";Persist Security Info=False"
adoCn.Open adoCn
Call InitFields(rs)
LblID.Caption = rs.Fields(0)
CboClass.Text = rs.Fields(1)
TxtBook.Text = rs.Fields(2)
TxtWriter.Text = rs.Fields(3)
TxtTranst.Text = rs.Fields(4)
TxtMoney.Text = rs.Fields(5)
TxtBooks.Text = rs.Fields(6)
DBCombo1.Text = rs.Fields(7)
'Txtpublish.Text = Rs.Fields(7)
' DTPicker2.Value = rs.Fields(8)
TxtNo.Text = rs.Fields(9)
DTPicker1.Value = rs.Fields(10)
TxtKaiben.Text = rs.Fields(11)
Txtpages.Text = rs.Fields(12)
TxtInfo.Text = rs.Fields(13)
End Sub
Private Sub TxtInfo_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
CmdSave.SetFocus
End If
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If CmdLooking.Enabled = True Then
If KeyCode = vbKeyPageUp And Not rs.BOF Then
rs.MovePrevious
If rs.BOF Then rs.MoveFirst
End If
If KeyCode = vbKeyPageDown And Not datPrimaryRS.Recordset.EOF Then
rs.MoveNext
If rs.EOF Then rs.MoveLast
End If
End If
End Sub
Private Sub InitFields(mrc As ADODB.Recordset)
'Dim intCount As Integer
Dim MsgText As String
'Dim mrc As ADODB.Recordset
txtSQL = "select * from 图书类别表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
While (mrc.EOF = False)
CboClass.AddItem Trim(mrc.Fields(1))
mrc.MoveNext
Wend
' CboClass.ListIndex = 0
txtSQL = "select * from 出版社信息表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
' Do While Not mrc.EOF
While (mrc.EOF = False)
DBCombo1.Text = Trim(mrc.Fields(1))
mrc.MoveNext
Wend
mrc.Close
End Sub
如果我把这个过程前两句话删掉,则报告错误:如果对象已经关闭,则不允许执行应用程序所要求的操作;