没在前面加new字,提示变量或with块变量没设置。这是因为你没有初始化Tbl

解决方案 »

  1.   

    New 字 用于 实体化 ADO Object 
      

  2.   

    你什么都讲字面的东西!为什么要实体化对象,书上的例程可没讲过,各位上面的源码不是这个问题的,请在帮我看一下:
     
    奇怪奇怪,我怎么连不上ACCESS2000,DataGrid控件数据不能出现,也没报错!我也有引用ADO2.5。我把mdb转换为access97,数据却能显现。
    呈上源码。后来我又生成另外一个程序,用ADODC控件连接却能连上access2000,控件生成的字符串也和下面的相同。请问这是什么原因
    Private Sub Form_Load()
    Dim Cnn As New ADODB.Connection
    Dim Tbl As New ADODB.Recordset
    Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path & "\db2.mdb;Persist Security Info=False"
    With Tbl
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .Open "user", Cnn, , , adCmdTable
    End With
    Set DataGrid1.DataSource = Tbl
    End Sub
    还有我有另外一个问题是当
    我声明ADO的connection,recordset时。没在前面加new字,提示变量或with块变量没设置。请问这是什么回事!
      

  3.   

    请问为什么要实体化!好像FSO对象要不要实体化
      

  4.   

    .Open "user", Cnn, , , adCmdTable 这一句写对了吗?
    其中“USER”应该是SQL语句。
      

  5.   

    同志,别急,总会有人回答的!
    NO.2
    如不加NEW 就要在来一句:SET TBL=NEW ADODB.RECORDSET ---》实例化
    具体是这样的:
    打开一个数据库要做如下工作(调用打开数据库需要的对象)
    Dim Cnn As New ADODB.Connection
    等价于 Dim Cnn As ADODB.Connection
           SET CNN =NEW ADODB.CONNECTION ---》实例化CONNECTION 
    举个例子,把Cnn 比做是水管,Dim Cnn As ADODB.Connection 就好比是有买水管的打算,而
    SET CNN =NEW ADODB.CONNECTION 才是把水管买回来,才有以后的
    接水管:Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path & "\db2.mdb;Persist Security Info=False"
    打开水龙头:With Tbl
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .Open "user", Cnn, , , adCmdTable
    End With
    明白吗?
      

  6.   

    当 dim cn as Adodb.Connection 时 , cn只是一个Adodb.Connection类型的变量,还不是一个对像,你必须用 set cn=New ADODB.Connection来创建对象的实例.