Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ouverture de requêtes en VBA avec passage de paramètres

1 réponse
Avatar
J-Pierre
Bonjour tout le monde

Nouveau post, car nouveau problème, même si c'est à la suite d'un autre post.

Dans un formulaire, sur événement current, j'ouvre une requête en DAO. Ca marche très bien, voilà le code, merci encore
Raymond:

Dim qry1 As DAO.QueryDef
Dim rst1 As DAO.Recordset

Set qry1 = Access.Application.CurrentDb.QueryDefs("MODEL01")
qry1.Parameters("MODEL01 ; maCle ?") = Me.maCle
Set rst1 = qry1.OpenRecordset

Set Me.monSousFormulaire.Form.Recordset = rst1

rst1.Close
Set qry1 = Nothing
Set rst1 = Nothing

Le problème: Si cette requête a comme source 2 autres requêtes (on appelle ça des sous-requêtes ?), et que ces requêtes ont
elles-mêmes un paramètre (le même que pour la requête principale) , pas moyen de leur passer cette valeur, et à l'exécution,
j'ai une erreur 3061, "trop peu de paramètres. 2 attendu" sur l'instruction
Set rst1 = qry1.OpenRecordset .

Dans les sous-requêtes, j'ai essayé de mettre comme critères un contrôle du formulaire, une colonne de la requête principale
([QueryDefs]![MODEL01]![MODEL01 ; maCle ?], j'ai aussi essayé de passer les paramètres par code VBA en définissant des
QueryDef supplémentaires, rien à faire.

Mais il semble que les valeurs doivent être impérativement passées par code VBA.

Comme dab, toute idée brillante sera la bienvenue :-)
Merci
J-Pierre

1 réponse

Avatar
J-Pierre
C'est bon, j'ai trouvé, les paramètres des requêtes de 2ème, 3ème niveau (et sans doute pour tous les autres) doivent être
passés à la requête principale même si celle-ci n'a pas de paramètres. Le code VBA ne connait qu'une requête, celle qu'il
ouvre.

J-Pierre

"J-Pierre" a écrit dans le message de news:
Bonjour tout le monde

Nouveau post, car nouveau problème, même si c'est à la suite d'un autre post.

Dans un formulaire, sur événement current, j'ouvre une requête en DAO. Ca marche très bien, voilà le code, merci encore
Raymond:

Dim qry1 As DAO.QueryDef
Dim rst1 As DAO.Recordset

Set qry1 = Access.Application.CurrentDb.QueryDefs("MODEL01")
qry1.Parameters("MODEL01 ; maCle ?") = Me.maCle
Set rst1 = qry1.OpenRecordset

Set Me.monSousFormulaire.Form.Recordset = rst1

rst1.Close
Set qry1 = Nothing
Set rst1 = Nothing

Le problème: Si cette requête a comme source 2 autres requêtes (on appelle ça des sous-requêtes ?), et que ces requêtes ont
elles-mêmes un paramètre (le même que pour la requête principale) , pas moyen de leur passer cette valeur, et à l'exécution,
j'ai une erreur 3061, "trop peu de paramètres. 2 attendu" sur l'instruction
Set rst1 = qry1.OpenRecordset .

Dans les sous-requêtes, j'ai essayé de mettre comme critères un contrôle du formulaire, une colonne de la requête principale
([QueryDefs]![MODEL01]![MODEL01 ; maCle ?], j'ai aussi essayé de passer les paramètres par code VBA en définissant des
QueryDef supplémentaires, rien à faire.

Mais il semble que les valeurs doivent être impérativement passées par code VBA.

Comme dab, toute idée brillante sera la bienvenue :-)
Merci
J-Pierre