| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1157 人关注过本帖
标题:3704 对象关闭时,不充许新的操作
只看楼主 加入收藏
hsbwp1314
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:88
专家分:25
注 册:2008-12-1
结帖率:53.85%
收藏
 问题点数:0 回复次数:8 
3704 对象关闭时,不充许新的操作
1、在MSFlexGrid1列表中单右键,弹出“修改设备信息”,选择“修改设备信息”
 修改设备信息代码:
Private Sub Change_Equ_Click()
flag = 2
   If FrmResult.MSFlexGrid1.Row > 0 Then
     gSQL = " select * from EquInfo where EqID ='" & Trim(FrmResult.MSFlexGrid1.TextMatrix(FrmResult.MSFlexGrid1.Row, 6)) & "'"
     Re_Equ.Show
     Re_Equ.ZOrder 0
   Else
     MsgBox "目前没有设备信息,请先添加设备信息!", vbOKOnly + vbExclamation, "警告"
     flag = 1
     FrmStuff_info.Show
  End If
  
End Sub
2 、第二步应该弹出要修改的设备信息,结果总是提示:3704 对象关闭时,不充许新的操作。
  Private Sub Form_Load()
    Dim rs As New ADODB.Recordset
    Dim sql As String
    Dim init() As String
    Dim addNewRecord() As String
    Bankname.ListIndex = 0
    'Equ_Type.ListIndex = 0
    'Equ_Dep.ListIndex = 0
    'Equ_Name.ListIndex = 0
    Set rs = TransactSQL(gSQL)
    If rs.EOF = False Then    ***** 提示总是在这个地方*****
      With rs
         Me.Equ_Num = rs(0)
         Me.Bankname = rs(1)
         Me.Equ_Type = rs(2)
         Me.Equ_Name = rs(3)
         Me.Equ_Logo = rs(4)
         Me.Equ_Mode = rs(5)
         Me.Equ_ID = rs(6)
         Me.Equ_ByTm = rs(7)
         Me.Equ_Time = rs(8)
         Me.Equ_Dep = rs(9)
         Me.Equ_Val = rs(10)
         Me.Equ_Rem = rs(11)
         'rs.Close
      End With
   ' rs.Close
           Me.Equ_Type.Enabled = False
           Me.Equ_Num.Enabled = False
           Me.Equ_Name.Enabled = False
           Me.Equ_Logo.Enabled = False
           Me.Equ_Mode.Enabled = False
           Me.Equ_ID.Enabled = False
           Me.Equ_ByTm.Enabled = False
           Me.Equ_Dep.Enabled = False
           Me.Equ_Val.Enabled = False
        ' rs.Close
     End If
   rs.Close
End Sub


3、我的模块代码
 Public gUserName As String         '保存用户名称
Public gSQL As String              '保存SQL
Public flag As String              '添加和修改标志
Public iflag As Integer            '数据库是否打开标志

Public Function TransactSQL(ByVal sql As String) As ADODB.Recordset
  Dim con As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim srtConnection As String
  Dim strArray() As String
  Set con = New ADODB.Connection
  Set rs = New ADODB.Recordset
  On Error GoTo TransactSQL_Error
      strConnection = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\Equ.mdb"
      strArray = Split(sql)
      con.Open strConnection
      If StrComp(UCase$(strArray(0)), "select", vbTextCompare) = 0 Then
         rs.Open Trim$(sql), con, adOpenKeyset, adLockOptimistic
         Set TransactSQL = rs
         iflag = 1
     Else
       con.Execute sql
       iflag = 1
     End If
TransactSQL_Exit:
    Set rs = Nothing
    Set con = Nothing
    Exit Function
TransactSQL_Error:
  MsgBox "查询错误11:" & Err.Description
  iflag = 2
  Resume TransactSQL_Exit
  
End Function
Public Sub TabToEnter(Key As Integer)
 If Key = 13 Then
    sendkdys "{TAB}"
 End If
 
End Sub
Sub main()
  Dim fLogin As New FrmLogin
  fLogin.Show
  
End Sub

请高手指点,请问是不是我数据库联接不对,我能正常的登陆,查询等,但是要是数据库里没有东西,再查询的话也报这个错,当然位置不是在这里
全部内容.rar (73.85 KB)
我把我的代码传上来了,请大家帮个忙。

[ 本帖最后由 hsbwp1314 于 2010-10-11 09:20 编辑 ]
搜索更多相关主题的帖子: 对象 
2010-10-08 22:38
hsbwp1314
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:88
专家分:25
注 册:2008-12-1
收藏
得分:0 
难到都要给钱才能回答吗?我刚注册目前没有钱,请高手们帮忙看下
2010-10-11 09:13
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
太乱了。
2010-10-11 10:23
wei855198
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:228
专家分:944
注 册:2009-4-24
收藏
得分:0 
不要说钱和分,这样的话伤众
你上传的内容里有这么多工程,没看明白你要做什么东西。
就你指出的问题而言,是因为数据库连接没有打开。

护肤小店 http://mina2010.
靓装小店 http://liangliyizu2010.
2010-10-11 11:27
wei855198
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:228
专家分:944
注 册:2009-4-24
收藏
得分:0 
再具体点说,你用的打开数据库连接的函数TransactSQL()放在了一个模块里,但是这个模块和其它的窗体不在一个工程里,
跨工程调用其它模块,我还真不会,愿有高手教我

[ 本帖最后由 wei855198 于 2010-10-11 11:31 编辑 ]

护肤小店 http://mina2010.
靓装小店 http://liangliyizu2010.
2010-10-11 11:30
wei855198
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:228
专家分:944
注 册:2009-4-24
收藏
得分:0 
为我上一条言论表示歉意,因为我终于找到你用的那个工程了。
错误原因如下:
因为你是在右键单击过程中给gSQL赋值的时候,字符串前多了一个空格,这个空格造成再次有Split函数分离字符串的时候得到的第一个字符串即strArray(0)=""
,所以数据库连接就无法打开,当然造成无法操作的错误。
就也是本页面你粘贴的代码里第四行
gSQL = " select * from EquInfo where EqID ='" & Trim(FrmResult.MSFlexGrid1.TextMatrix(FrmResult.MSFlexGrid1.Row, 6)) & "'"
这一句,把引号内第一个空格去掉即可。
收到的鲜花
  • Artless2010-10-12 00:01 送鲜花  10朵   附言:诚!

护肤小店 http://mina2010.
靓装小店 http://liangliyizu2010.
2010-10-11 12:10
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
以下是引用wei855198在2010-10-11 12:10:58的发言:

为我上一条言论表示歉意,因为我终于找到你用的那个工程了。
错误原因如下:
因为你是在右键单击过程中给gSQL赋值的时候,字符串前多了一个空格,这个空格造成再次有Split函数分离字符串的时候得到的第一个字符串即strArray(0)=""
,所以数据库连接就无法打开,当然造成无法操作的错误。
就也是本页面你粘贴的代码里第四行
gSQL = " select * from EquInfo where EqID ='" & Trim(FrmResult.MSFlexGrid1.TextMatrix(FrmResult.MSFlexGrid1.Row, 6)) & "'"
这一句,把引号内第一个空格去掉即可。

诚!

无知
2010-10-12 00:01
hsbwp1314
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:88
专家分:25
注 册:2008-12-1
收藏
得分:0 
谢谢!请问下,我加载Re_Equ这个窗体时,怎么老提示:下标越界,接下去又会提示:对象关闭,不充许操作。


我想把我查询出来的内容进行打印。要怎么操作,有人有相关的系统参考吗?
2010-10-12 22:09
wei855198
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:228
专家分:944
注 册:2009-4-24
收藏
得分:0 
关于下标越界的问题,一般是引用数组值的时候出现问题,对象关闭,不允许操作,因引用你打开数据的代码中用到了那个数组,数组引用都出错了,数据库连接也打不开了,当然不允许操作,一般这种问题最好设置断点和监视,逐步调试。

护肤小店 http://mina2010.
靓装小店 http://liangliyizu2010.
2010-10-14 12:36
快速回复:3704 对象关闭时,不充许新的操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031795 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved