Bonjour à tous,

Mon tout premier post après avoir chercher des heures sans une "vraie" réponse, j'éspère que la communauté pourra m'aider. Je précise je débute en VBA je n'emploi peut etre pas toutes les bonnes pratiques.

Donc voilà mon problème, je suis en train de me créer une classe pour communiquer avec ma bdd SQL Server.
J'utilise ADODB.Connection et ADODB.Recordset pour cela. Je les initialise via un CreateObject et non en activant la référence pour plus de portabilité sur mon projet.

Seulement voilà, lorsque je fais un Recordset.RecordCount, j'obtiens toujours -1, peut importe le nombre de résultats réel de ma requete...

J'ai vu qu'en activant la référence MS Active X Data Objects Recordset 2.8 manuellement, mon résultat est bon et tout fonctionne bien...

Pouvez vous m'aiguiller svp ?

Voici ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
Private Connection, Recordset As Object
 
Private Sub Class_Initialize()
 
    Set Connection = CreateObject("ADODB.Connection")
    Set Recordset = CreateObject("ADODB.Recordset")
 
    Connection.Open "Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=BDD;User ID=root;Password=root"
 
End Sub
 
Private Sub Class_Terminate()
 
    Set Recordset = Nothing
    Connection.Close
    Set Connection = Nothing
 
End Sub
 
Public Function Execute(ByVal strStatement As String)
 
    Recordset.Open strStatement, Connection, adOpenStatic
    MsgBox Recordset.RecordCount
    Recordset.Close
 
End Function
Et mon code de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Public Sub Test()
 
    Dim Db As New clsDatabase
 
    Db.Execute ("SELECT * FROM utilisateurs")
 
End Sub