Dim specialcodecn As ADODB.Connection
Dim spcrec As ADODB.Recordset
Dim rec As Recordset
Private Sub Form_Load()
Dim SpecialCodeConnectString As String
SpecialCodeConnectString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=dbname;Mode=Read"
Set specialcodecn = New ADODB.Connection
specialcodecn.CursorLocation = adUseClient specialcodecn.Open specialCodeConnectString
Set spcrec = New ADODB.Recordset
spcrec.Open tblname, specialcodecn, , adLockReadOnly, adCmdTable
ADCControl.ConnectionString = SpecialCodeConnectStringADCControl.RecordSource = tblname
Set rec= ADCControl.Recordset
rec.movefirst
Dim i As Integer
For i = 1 To rec.RecordCount
    CBO_Qjdh.AddItem rec.Fields("代号").Value
    rec.MoveNext
Next iEnd Sub
当运行时在rec.MoveFirst 这行
显示 object variable or with block variable not set
是否是ADCControl.recordsource=tblname设置不正确
如果在运行中动态调用ADODC控件,对其connectstring及recordsource进行改变,应如何设置,以使用不同的数据库及其中的表

解决方案 »

  1.   

    Set rec= ADCControl.Recordset
    前加
    Set rec= NEW ADODB.Recordset
      

  2.   

    Dim specialcodecn As ADODB.Connection
    Dim spcrec As ADODB.Recordset
    'Dim rec As Recordset
    Private Sub Form_Load()Dim SpecialCodeConnectString As String
    Dim Sql As StringSpecialCodeConnectString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=dbname;Mode=Read"Set specialcodecn = New ADODB.Connection
    specialcodecn.CursorLocation = adUseClient
    specialcodecn.Open SpecialCodeConnectStringSet spcrec = New ADODB.Recordset
    Sql = "select * from tblname"
    Set spcrec = specialcodecn.Execute(Sql)spcrec.MoveFirstDim i As Integer
    For i = 1 To rec.RecordCount
        CBO_Qjdh.AddItem rec.Fields("代号").Value
        rec.MoveNext
    Next iEnd Sub这样没有问题了,更清晰易读,你再试试
      

  3.   

    要做到:“如果在运行中动态调用ADODC控件,对其connectstring及recordsource进行改变,应如何设置,以使用不同的数据库及其中的表“
    就需要写一个函数,我给你一个参考:Public Sub executesql(RS As ADODB.Recordset, sql As String)
       Dim m_cnnDB As ADODB.Connection
       Set m_cnnDB = New ADODB.Connection
       Dim strcnn As String
        strcnn = "driver={SQL Server};" & _
        "server=xiao;uid=sa;pwd=xiaoling;database=metadata"
        m_cnnDB.Open strcnn   Set RS = New ADODB.Recordset
       RS.CursorType = adOpenKeyset
       RS.LockType = adLockOptimistic
       RS.Open sql, m_cnnDB, adOpenKeyset, adLockPessimistic
    End Sub这个函数的功能根据不同的sql语句打开不同的表
    如果sql="select * from jobs"
    就说明是打开jobs表了sql = "select * from " & tablename & ""
    executesql RS, sql    '打开相应的表
      

  4.   

    不知我说的你清不清楚,我的意思是,
    当我给一ADODC控件在程序运行时设置它的connectstring和recordsource时,下面引用这个数据库中的数据表时能否用adodc.recordset
      

  5.   

    如果在设计时,当设置了connectstring和recordsource就能用adodc.recordsetf直接引用其设置的表
      

  6.   

    上例中用了Set rec= ADCControl.Recordset
    但这句rec.movefirst它说对象变量没附值
      

  7.   

    Adodc.ConnectionString = SpecialCodeConnectString
    Adodc.RecordSource = tblname
    Adodc.refresh
      

  8.   

    If Adodc1.Recordset.State <> adsdstateclose Then
       Adodc1.Recordset.Close
    End If
    Adodc1.ConnectionString = SpecialCodeConnectString
    Adodc1.RecordSource = tblname
    Adodc1.refresh
    ======================QQYY_sj==========================