我想问下。有时候在通用里定义了。虽然我现在东西做出来了。但是我想了解更深入的。书上只是说了下。但是我想具体根据自己意思理解下。希望大家帮忙解答下 下面两个问题
Dim rs As ADODB.Recordset
dim CN As ADODB.Connection这样如果在连接数据库里 按钮里 直接可以调用通用连接了么?
Private Sub commond_Click()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\qx.mdb;Persist Security Info=False"
rs.Open "select * from ab", cn, adOpenKeyset    '打开记录集
    'Text29.Text = rs.Fields("id")
End Sub有的直接定义到按钮里 这样写法就是不调用通用里的连接么?定义新的ADODB.CONNECTION ? 
Private Sub commond_Click()
Dim cn As New ADODB.Connection  
Dim rs As New ADODB.Recordset 
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\1.mdb;Persist Security Info=False"
rs.Open "select * from ab", cn, adOpenKeyset    '打开记录集
    Text29.Text = rs.Fields("id")
End Sub这样理解对么?上面问题--------------------------底下这个问题 。 看看 RS已经写了连接。 为什么 
还要写个SET RS NEW ADODB.Recordset 这样写是多余的么?
以及 Set cnn = New ADODB.Connection Dim rs As ADODB.Recordset
 Set rs = New ADODB.Recordset
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\qx.mdb;Persist Security Info=False"

解决方案 »

  1.   

    也就是你定义时不用new使用前要用set设置new,定义时用了new则使用前就不用再去用set设置new了。去看一下类是如何使用的就可以知道你是想要的了。
      

  2.   

    先说变量定义。
    在哪里定义的变量就在哪有效,离开这个区域就不存在了。
    比如:
    Private Sub commond_Click()
    '这是临时变量
    Dim cn As New ADODB.Connection   
    Dim rs As New ADODB.Recordset  
    '使用变量
    set cn = nothing
    set rs = nothing
    End Sub
    这里的变量cn和rs就只能在按钮里使用,离开了按钮,这两个变量就不存在了。
    又比如:'这是窗体级变量,窗体存在变量才会存在。
    dim cn as adodb.connection
    dim rs as adodb.recordsetprivate sub command1_click()
    set cn = new adodb.connection
    set rs = new adodb.recordset
    '调用变量的代码
    end sub
      

  3.   

    使用对象之前需要先实例化变量。
    '用new关键字定义的变量会自动实例化化
    dim cn as new adodb.connection
    dim rs as new adodb.recordset'不用new定义的对象,需要实例化对象,再使用。
    dim cn as adodb.connection
    dim rs as adodb.recordsetset cn = new adodb.connection
    set rs = new adodb.recordset对于一些对象,你可以创建或者获取它,代码类似下面的。set cn = createobject("ADODB.Connection")
    set oXlsApp = getobject(,"Excel.Application")
      

  4.   

    1.对,不过cn.Open也和定义一样写在公共模块部分,别的事件里就可以直接调用cn了
    2.不是多余,见1F. 简单点就是有一个new
      

  5.   

    再看你的问题,这样如果在连接数据库里 按钮里 直接可以调用通用连接了么?Private Sub commond_Click()
    '假如之前调用过下面这两行的代码,那你的问题就是可以。
    'set cn = new adodb.connection
    'set rs = new adodb.recordset
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\qx.mdb;Persist Security Info=False"
    rs.Open "select * from ab", cn, adOpenKeyset '打开记录集
      'Text29.Text = rs.Fields("id")
    End Sub有的直接定义到按钮里 这样写法就是不调用通用里的连接么?定义新的ADODB.CONNECTION ?是的。底下这个问题 。 看看 RS已经写了连接。 为什么  
    还要写个SET RS NEW ADODB.Recordset 这样写是多余的么?不多余,前面已经说明了这个问题的原因。