2010-09-29 59 views
1

均在標題:-)ADO中是否存在與RDO.OpenResultset等效的內容?

一些解釋:

爲了使用與C#(COM /互操作),我有一個數據訪問性能問題VB6的。我不知道爲什麼,但通過Interop在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?

問候,

弗洛裏安

回答

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 Ac略去數據對象2.8)

+0

好吧,我測試一下吧! – Florian 2010-09-29 13:57:25

+0

它工作正常,但性能非常緩慢:( – Florian 2010-09-29 14:40:42

+0

我很抱歉聽到!在極少數情況下,我已經看到DAO對象(與ADO相對)在VB6中工作得更快,但與C#交互時,我不確定 – LittleBobbyTables 2010-09-29 14:45:10

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) 
相關問題