所有内容都在标题中: - )
一些解释:
为了在v#(COM / Interop)中使用vb6,我遇到了数据访问的性能问题。我不知道为什么但是C#中的代码通过Interop慢了四倍。
我正在尝试找到一种解决方法,我会用ADO替换rdo以获得性能。
旧代码(使用rdo):
strSelect = _
QUERY1 & ";" & _
QUERY2 & ";" & _
QUERY3 & ";" & _
QUERY4 & ";" & _
QUERY5 & ";" & _
QUERY6
'Fp.Cn is a rdoConnection
Set Fp.rs = Fp.Cn.OpenResultset(strSelect)
'ComboBox 1
Call LoadCombo(cboOne)
Fp.rs.MoreResults
'ComboBox 2
Call LoadCombo(cboTwo)
Fp.rs.MoreResults
'ComboBox 3
Call LoadCombo(cboThree)
Fp.rs.MoreResults
'ComboBox 4
Call LoadCombo(cboFour)
Fp.rs.MoreResults
'ComboBox 5
Call LoadCombo(cboFive)
Fp.rs.MoreResults
'ComboBox 6
Call LoadCombo(cboSix)
Fp.rs.MoreResults
Fp.rs.Close
现在LoadCombo中的代码:
Public Sub LoadCombo(ByRef cboComboBox As ComboBox, ByRef rslResultSet As rdoResultset)
cboComboBox.Clear
With rslResultSet
While Not .EOF
cboComboBox.AddItem .rdoColumns(1)
cboComboBox.ItemData(cboComboBox.NewIndex) = .rdoColumns(0)
.MoveNext
Wend
End With
End Sub
如何使用ADO修改此代码?
此致
弗洛里安
答案 0 :(得分:1)
对于您的记录集,您需要使用以下代码:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
conn.Open "YourDSN", "username", "pwd" ' Or other appropriate conn string here
rs.Open strSelect, conn ' This is your OpenResultset equivalent
然后对于每个组合框,请致电
Call LoadCombo(cboOne, rs)
Set rs = rs.NextRecordset ' Instead of Fp.rs.MoreResults
...
如果您还没有,则需要将ADO引用添加到项目中(可能是Microsoft Active Data Objects 2.8)
答案 1 :(得分:0)
这是ADO中最接近的等价物:
' Fp.Cn is an active and open ADODB.Connection '
' Fp.rs is an ADODB.Recordset object '
Set Fp.rs = Fp.Cn.Execute(strSelect)