窗体载入的时候连接数据库,连接成功了,可是,为什么我不能用在它的函数里面呢Private Sub Form_Load()
Set cn = New ADODB.Connection
    connectstring = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bui.mdb;Persist Security Info=False;Jet OLEDB:database Password=1234"
    cn.Open connectstring
       
End Sub'' 这里我已经连接上库了
'' 下面的事件如果我这样写,就出现错误提示,不正确。 
Private Sub Command1_Click() Set rst = New ADODB.Recordset
 varuser = username.Text
 varpass = password.Text
''sqllog = "select passwords from administra where admins='" & varuser & "'"
sqllog = "select passwords from administra where admins='" & varuser & "'"
  MsgBox sqllog
 rst.Open sqllog, cn, 1, 1 ''adOpenKeyset, adLockOptimistic
 If Not rst.EOF Then
     therspass = rst("passwords")
     MsgBox therspass
 End If
 
 MsgBox username.Text
End Sub''这样写就没有问题
Private Sub Command1_Click()
 Set cn = New ADODB.Connection
    connectstring = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bui.mdb;Persist Security Info=False;Jet OLEDB:database Password=1234"
   cn.Open connectstring
 Set rst = New ADODB.Recordset
 varuser = username.Text
 varpass = password.Text
''sqllog = "select passwords from administra where admins='" & varuser & "'"
sqllog = "select passwords from administra where admins='" & varuser & "'"
  MsgBox sqllog
 rst.Open sqllog, cn, 1, 1 ''adOpenKeyset, adLockOptimistic
 If Not rst.EOF Then
     therspass = rst("passwords")
     MsgBox therspass
 End If
 
 MsgBox username.Text
End Sub
为什么我非要在连接一次数据库呢,怎么才能在一个应用程序里面我只连接一次数据库阿

解决方案 »

  1.   

    用public将cn定义到模块中,各个窗口都可以调用cn了.
      

  2.   

    cn 应该定义为全局变量
    Public mycon As New ADODB.Connection
    Private Sub Form_Load()
           connectstring = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bui.mdb;Persist Security Info=False;Jet OLEDB:database Password=1234"
        cn.Open connectstring      
    End Sub
    Private Sub Command1_Click() Set rst = New ADODB.Recordset
     varuser = username.Text
     varpass = password.Text
    ''sqllog = "select passwords from administra where admins='" & varuser & "'"
    sqllog = "select passwords from administra where admins='" & varuser & "'"
      MsgBox sqllog
     rst.Open sqllog, cn, 1, 1 ''adOpenKeyset, adLockOptimistic
     If Not rst.EOF Then
         therspass = rst("passwords")
         MsgBox therspass
     End If
     
     MsgBox username.Text
    End Sub
      

  3.   

    我明白了各位,也就是,全局变量和局部变量的不同,是否在一个页面上定义的public 就是在那个页面上可以用,但是,在模块中定义的,就所有的都可以用了,对吗
      

  4.   

    加一个模块,写入下面的代码:public cn as adodb.connection
    public rs as adodb.recordsetprivate sub main()
       '在这里写连接数据库的代码
       set cn = new adodb.connection
       set rs = new adodb.recrodset
       .......
       ....
    end sub然后在工程属性里设置从 Sub Main 启动