Bonjour,
Je n'arrive pas à ouvrir une table d'une base de donnée depuis une sub dédiée.
L'ouverture de la base ("ouverture_BDD") ne pose aucun souci.
Cependant, l'appel à la sub "ouverture_table" entraine une erreur de type "ByRef incompatible" sur le champs ArticleRecordset.
Par ailleurs je suis obligé d'utiliser le "late binding".
Je vous sollicite donc pour savoir comment passer en paramètre un objet qui sera instancié comme un recordset et que je pourrai utiliser ultérieurement dans ma procédure "main()".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Global ArticleRecordset As Object Global ObjetBaseNationale As Object Sub main() ... Call ouverture_BDD("lecture_seule", ObjetBaseNationale, "J:\XXX.QDB") Call ouverture_table(ObjetBaseNationale, "Articles", ArticleRecordset) ... End Sub
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 Sub ouverture_BDD(option_ouverture As String, ByRef base As Object, chemin As String) If option_ouverture = "lecture_seule" Then Const adModeRead = 1 End If Set base = CreateObject("ADODB.Connection") With base .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionTimeout = 30 .mode = adModeRead .ConnectionString = "Data Source=" & chemin & ";" .Open End With End SubPar avance,
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 Sub ouverture_table(ByRef base As Object, nom_table As String, table As Object) Dim command_sql As Object Const adCmdText = 1 Set command_sql = CreateObject("ADODB.Command") With command_sql .ActiveConnection = base .CommandType = adCmdText .CommandText = "SELECT * FROM " & nom_table End With Set table = command_sql.Execute End Sub
Merci
Partager