| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 851 人关注过本帖
标题:【求助】写在模块中的程序,窗口里调用出问题(登录框)
只看楼主 加入收藏
frank_tao78
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:69
专家分:143
注 册:2010-1-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
【求助】写在模块中的程序,窗口里调用出问题(登录框)
各位老师:
    我在模块中添加一个exesql功能,但是在登陆窗运行的时候,总是出现:对象关闭时,不允许操作的提示,具体程序如下:
【模块中】
Public Function exesql(ByVal sql As String) As ADODB.Recordset    '执行查询语句
sql = Trim(sql)                                                   '查询语句
Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset
'打开数据库
conn.Open "provider=microsoft.jet.oledb.4.0;" & "data source=" & App.Path & "\stud.mdb"
'执行查询语句
Set rst = conn.Execute(sql)
'返回
Set exesql = rst

rst.Close
conn.Close
End Function

【登陆界面】
Private Sub Command1_Click()
Dim sqltxt As String
Dim rs As New ADODB.Recordset

If Text1.Text = "" Or Text2.Text = "" Then
    MsgBox "用户名或密码不能为空,请重新输入", vbOKOnly + vbExclamation, "系统提示"
End If
If Text1.Text <> "" And Text2.Text <> "" Then
    sqltxt = "select * from oper where 用户名='" & Trim(Text1.Text) & "'"
    set rs=exesql(sqltxt)
    If n < 3 Then
        If rs.RecordCount <> 0 Then      '到这里就错误了,提示对象关闭。。。
            If rs.Fields("口令") = Trim(Text2.Text) Then
                main.Show
                Unload Me
                ulevel = rs.Fields("级别")
            Else
                MsgBox "密码错误,请重新输入", vbOKOnly + vbExclamation, "系统提示"
                n = n + 1
                Text2.SetFocus
            End If
        Else
            MsgBox "无此用户!", vbOKOnly + vbExclamation, "系统提示"
            Text1.SetFocus
            n = n + 1
        End If
    Else
        MsgBox "超过登陆次数,自动退出", vbOKOnly, "系统提示"
        End
    End If
End If
End Sub

如果把打开数据库和查询放在登陆窗体中做,一切正常,为什么?我是根据教材上做的,怎么会这样,请老师们指教,不胜感激!
搜索更多相关主题的帖子: 登录 模块 窗口 
2010-01-27 13:24
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:20 
回复 楼主 frank_tao78
Function中去掉
rst.Close
conn.Close
试试看
2010-01-27 13:45
frank_tao78
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:69
专家分:143
注 册:2010-1-11
收藏
得分:0 
回复 2楼 yuk_yu
如果模块中,去掉两个close,则运行成功。

我本来想,执行完之后,就把数据库关闭,就不会占用很多资源。。。。。可是书上,好像也是关闭的。为什么呢

另外,谢谢您的建议!
2010-01-27 13:48
frank_tao78
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:69
专家分:143
注 册:2010-1-11
收藏
得分:0 
另外,我试了一下,把模块中,把
rst.Close
conn.Close
改成
Set rst = Nothing
Set conn = Nothing
也行!嘿嘿,节约资源,从我做起!
2010-01-27 13:49
匡唐瑞
Rank: 2
等 级:论坛游民
帖 子:34
专家分:17
注 册:2010-1-29
收藏
得分:0 
雷人一个
2010-02-01 11:51
frank_tao78
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:69
专家分:143
注 册:2010-1-11
收藏
得分:0 
现在搞明白了,原来模块中大错了,呵呵:


conn.Open "provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\stud.mdb;" & _
        "Persist Security Info=False"
rs.Open Trim(sql), conn, adOpenKeyset, adLockOptimistic
Set exesql = rs
rs.close
conn.close
就没问题了,糗大了
2010-02-01 21:30
快速回复:【求助】写在模块中的程序,窗口里调用出问题(登录框)
数据加载中...
 
   



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

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