在ADO中有与RDO.OpenResultset等效的东西吗? [英] Is there an equivalent to RDO.OpenResultset in ADO?

查看:107
本文介绍了在ADO中有与RDO.OpenResultset等效的东西吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所有都在标题中:-)

一些解释:

为了使用vb6使用C#(COM / Interop)时,数据访问存在性能问题。我不知道为什么,但是通过Interop在C#中代码慢了四倍。

In order to use a vb6 with C# (COM / Interop) I have a performance issue with Data Access. I don't know why but the code is four times slower in C# via Interop.

我正在尝试找到一种解决方法,我想用ADO代替rdo以获得性能。

I'm trying to find a workaround and I would to replace the rdo by ADO to gain performance.

旧代码(带有rdo):

old code (with 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中添加代码:

Now the code in 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修改此代码?

How to modify this code with ADO ?

问候,

Florian

推荐答案

对于您的记录集,您想使用以下代码:

For your recordset, you would want to use the following code:

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)

If you haven't already, you'll need to add the ADO reference to your project (probably Microsoft Active Data Objects 2.8)

这篇关于在ADO中有与RDO.OpenResultset等效的东西吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆