Je viens de rencontrer un problème absolument inexplicable, en effet j'ouvre un recordset via procédure publique sur un module, procédure qui ouvre la base de données si elle n'a pas encore été ouverte :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Global bdd As Database
Global connect As Boolean
Global rcsniveau As Recordset
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    SQL = "Select Niveau_Poste.NumNiveau,Niveau_Poste.NomNiveau From Niveau_Poste;"
    connexion_BDD SQL, rcsniveau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub connexion_BDD(ByVal SQL As String, ByRef rcs As Recordset)
 
If connect = False Then
    Set bdd = OpenDatabase("TAPPPO2006-access97.mdb", False)
End If
connect = True
Set rcs = bdd.OpenRecordset(SQL$)
If rcs.EditMode = adEditInProgress Or rcs.EditMode = adEditAdd Then
    MsgBox "Impossible d'ouvrir la connexion pour l'instant. La base de données est occupées, veuillez réitérer votre demande plus tard", vbCritical
End If
 
End Sub
Ce code fonctionna tout à fait correctement sur mon premier projet, lors de la réalisation du second j'ai importé le module, et la vb me genère une erreur : "incompatibilité de type" pour :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set rcs = bdd.OpenRecordset(SQL$)
J'ai bien vérifié mes références... tout est identique, je me suis même "amusé" à retaper mon module completement mais rien ne change...
Ce qui me rend fou c'est que si j'effectue l'ouverture du recordset et de la bdd sur la procédure privée qui appele la publique du module, ben ça marche !


Que se passe-t-il ? j'ai un grand besoin d'aide la car je viens d'y passer deux heures sans arriver à régler le probleme :/