在ADO中是否有相当于RDO.OpenResultset的东西?

时间:2010-09-29 13:36:13

标签: vb6 ado

所有内容都在标题中: - )

一些解释:

为了在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修改此代码?

此致

弗洛里安

2 个答案:

答案 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)