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进行改变,应如何设置,以使用不同的数据库及其中的表
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进行改变,应如何设置,以使用不同的数据库及其中的表
前加
Set rec= NEW ADODB.Recordset
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这样没有问题了,更清晰易读,你再试试
就需要写一个函数,我给你一个参考: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 '打开相应的表
当我给一ADODC控件在程序运行时设置它的connectstring和recordsource时,下面引用这个数据库中的数据表时能否用adodc.recordset
但这句rec.movefirst它说对象变量没附值
Adodc.RecordSource = tblname
Adodc.refresh
Adodc1.Recordset.Close
End If
Adodc1.ConnectionString = SpecialCodeConnectString
Adodc1.RecordSource = tblname
Adodc1.refresh
======================QQYY_sj==========================