Comment retourner un jeu d'enregistrements à partir d'une fonction

Je suis en train de construire une couche d'accès aux données dans Excel VBA et avoir du mal à revenir à un jeu d'enregistrements. Le Execute() de la fonction de ma classe est certainement la récupération d'une ligne à partir de la base de données, mais ne semble pas être de retourner quoi que ce soit.

La fonction suivante est contenue dans une classe appelée DataAccessLayer. La classe contient les fonctions de Connecter et de Déconnecter la poignée d'ouverture et de fermeture de la connexion.


Public Function Execute(ByVal sqlQuery As String) As ADODB.recordset
    Dim rs As ADODB.recordset
    Set rs = New ADODB.recordset
    Dim recordsAffected As Long

    ' Make sure we're connected to the database.
    If Connect Then
        Set command = New ADODB.command

        With command
            .ActiveConnection = connection
            .CommandText = sqlQuery
            .CommandType = adCmdText
        End With

        'Set rs = command.Execute(recordsAffected)
        'Set Execute = command.Execute(recordsAffected)
        rs.Open command.Execute(recordsAffected)
        rs.ActiveConnection = Nothing
        Set Execute = rs
        Set command = Nothing
        Call Disconnect
    End If
End Function

Voici une fonction publique que je suis en utilisant dans la cellule A1 de ma feuille de calcul pour les tests.


Public Function Scott_Test()
    Dim Database As New DataAccessLayer
    'Dim rs As ADODB.recordset
    'Set rs = CreateObject("ADODB.Recordset")
    Set rs = New ADODB.recordset

    Set rs = Database.Execute("SELECT item_desc_1 FROM imitmidx_sql WHERE item_no = '11001'")
    'rs.Open Database.Execute("SELECT item_desc_1 FROM imitmidx_sql WHERE item_no = '11001'")
    'rs.Open

    ' This never displays.
    MsgBox rs.EOF

    If Not rs.EOF Then
        ' This is displaying #VALUE! in cell A1.
        Scott_Test = rs!item_desc_1
        rs.Close
    End If

    rs.ActiveConnection = Nothing
    Set rs = Nothing
End Function

Ce que je fais mal?

OriginalL'auteur Scott | 2010-03-17