ouverture de requêtes en VBA avec passage de paramètres
1 réponse
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <pas.de.pub.jpberchtold@hotmail.com> a écrit dans le message de news: OsYCruvVGHA.1564@TK2MSFTNGP11.phx.gbl...
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
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