我在编写一程序时,在一数据库菜单,单击数据库菜单下的业务员数据表,总出现以下错误:
“连接无法执行此操作,在此上下文中它可能被关闭或无效。”光标停留在rst.open"businessman",db,,,adcmdtable上该申明的都在模块中已作申明。
程序代码如下:
单击业务员数据表时的代码:
Private Sub mnubusinessman_Click()
currenttable = "businessman"
businessmantableopened = True
tablemenuenable
frmbusinessman.Show
End Sub
frmbusinessman窗体的载入程序如下:
showstatus ("数据管理-- " & "务员数据表")
tablename = currenttable
Set rst = New ADODB.Recordset
rst.CursorType = adOpenStatic
rst.LockType = adLockPessimistic
rst.Open "businessman", db, , , adCmdTable
If rst.EOF Then
MsgBox "请添加业务员", , "业务员数据表"
txtid.Text = "b000000001"
cmdprevious.Enabled = False
cmdadd.Enabled = False
cmdsearch.Enabled = False
cmdsave.Enabled = False
cmdnext.Enabled = False
neworchange = True
Else
rst.MoveFirst
bshowfield rst
End If
End Sub
tablemenuenabler代码如下:
Public Sub tablemenuenable()
With frmmain
If businessmantableopened Then
!mnubusinessman.Enabled = False
Else
!mnubusinessman.Enabled = True
End If

解决方案 »

  1.   

    你在代码的后面加上关闭语句看一下。
    Set rst = nothing
    rst.close
      

  2.   

    去掉"rst.Open "businessman", db, , , adCmdTable" 中的"adCmdTable"
      

  3.   

    你试着在每个rst.open"",,前加上set rst=nothing(根据情况)
      

  4.   

    不知道db是否已被打开?db是不是全局的?至少在窗体模块是.....
      

  5.   

    如果你的 Connection 对象 db 已经打开,问题就在于它是某个窗体私有的。改在公共模块中将其声明为
    Public db As ADODB.Connection如果没有打开,在新窗口中应当声明并打开。
      

  6.   

    那如果你的模块中包含sub main 启动的时候应该从Sub Main 启动...