所有内容都在标题中:-)
一些解释:
为了在C# (COM / Interop)中使用vb6,我在数据访问方面遇到了性能问题。我不知道为什么,但是通过互操作,代码在C#中要慢四倍。
我正在尝试找到一种解决方法,我会用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修改这段代码?
致以敬意,
弗洛里安
发布于 2010-09-29 21:51:56
对于您的记录集,您可能希望使用以下代码:
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)
发布于 2010-10-01 21:01:23
这是ADO中最接近的等价物:
' Fp.Cn is an active and open ADODB.Connection '
' Fp.rs is an ADODB.Recordset object '
Set Fp.rs = Fp.Cn.Execute(strSelect)https://stackoverflow.com/questions/3822099
复制相似问题