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

VBA et PARAMETERS

6 réponses
Avatar
jero
Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] & ' ' &
[Prénom] AS Membre, False AS Sélectionné, Count(tblMembres.IdMembre) AS
NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] & ' '
& [Prénom], False, fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING (((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True) AND
((tblAyantsDroits.Statut)="Enfant") AND ((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une condition
d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?", " ",
0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1
SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " & SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le message
"Trop peu de paramètres, 2 attendu" (comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.

6 réponses

Avatar
C. ERNST
(comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)

Effectivement !

Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle vous
avez fourni les paramètres......
Vous exécutez "SqlInsert" comprenant "SqlSelect"
Donc Sqlselect réclamera les paramètres...





"jero" <~ a écrit dans le message de news:

Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] & ' '
& [Prénom] AS Membre, False AS Sélectionné, Count(tblMembres.IdMembre) AS
NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] & '
' & [Prénom], False,
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING (((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True)
AND ((tblAyantsDroits.Statut)="Enfant") AND
((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une
condition d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?", " ",
0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1



SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " & SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le message
"Trop peu de paramètres, 2 attendu" (comme si les 2 lignes
Qry.Parameters... "ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.







Avatar
jero
Bonjour et merci de la réponse,
Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......


Non, mais comment "exécuter" une requête sélection ?
Quelle est alors la solution ?

"C. ERNST" a écrit dans le message de news:
%
(comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)

Effectivement !

Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......
Vous exécutez "SqlInsert" comprenant "SqlSelect"
Donc Sqlselect réclamera les paramètres...





"jero" <~ a écrit dans le message de news:

Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] & '
' & [Prénom] AS Membre, False AS Sélectionné, Count(tblMembres.IdMembre)
AS NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] &
' ' & [Prénom], False,
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING (((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True)
AND ((tblAyantsDroits.Statut)="Enfant") AND
((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une
condition d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?", " ",
0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1



SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " & SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le message
"Trop peu de paramètres, 2 attendu" (comme si les 2 lignes
Qry.Parameters... "ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.











Avatar
C. ERNST
Ne vous compliquez pas la vie :
Je ne connais pas exactement la structure de vos tables mais :
DIM SQL
SQL= "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) "
SQL=SQL & "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
tblMembres ...
.....
SQL=SQL & "WHERE [AgeMini] =" & AgeMinimum & " AND [Choix]=" & 1
Currentdb.execute SQL





"jero" <~ a écrit dans le message de news:

Bonjour et merci de la réponse,
Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......


Non, mais comment "exécuter" une requête sélection ?
Quelle est alors la solution ?

"C. ERNST" a écrit dans le message de
news: %
(comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)

Effectivement !

Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......
Vous exécutez "SqlInsert" comprenant "SqlSelect"
Donc Sqlselect réclamera les paramètres...





"jero" <~ a écrit dans le message de news:

Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] & '
' & [Prénom] AS Membre, False AS Sélectionné, Count(tblMembres.IdMembre)
AS NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] &
' ' & [Prénom], False,
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING (((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True)
AND ((tblAyantsDroits.Statut)="Enfant") AND
((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une
condition d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?", "
", 0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1



SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " & SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le message
"Trop peu de paramètres, 2 attendu" (comme si les 2 lignes
Qry.Parameters... "ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.















Avatar
jero
Re-bonjour C. ERNST,
Oui, je suis d'accord, c'est ce que fais d'habitude mais là, ça va être un
peu plus compliqué - et moins "joli" - à cause de la fonction
fctAgeRequisEnfant() :
Public Function fctAgeRequisEnfant(DateNaissance As Date, AgeMinimum As
Single, Choix As Byte) As Boolean
Dim DateRéférenceAgeEnfant As Date, AgeRequisEnfant As Single,
tmpAgeRequisEnfant As Boolean
DateRéférenceAgeEnfant = Nz(DLookup("[DateRéférenceAgeEnfant]",
"[tblParamètresApplication]"), 0)
Select Case Choix
Case 1
AgeRequisEnfant = Nz(DLookup("[CritèreAgeEnfantCadeau]",
"[tblParamètresApplication]"), 0)
Case 2
AgeRequisEnfant = Nz(DLookup("[CritèreAgeEnfantSportLoisirs]",
"[tblParamètresApplication]"), 0)
End Select
tmpAgeRequisEnfant = DateDiff("yyyy", DateNaissance, DateRéférenceAgeEnfant)
>= AgeMinimum
tmpAgeRequisEnfant = tmpAgeRequisEnfant And DateDiff("yyyy", DateNaissance,
DateRéférenceAgeEnfant) < AgeRequisEnfant + 1
fctAgeRequisEnfant = tmpAgeRequisEnfant
End Function
car, en fait, c'est à elle que je passe les paramètres [AgeMini] et [Choix]
(HAVING fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix])=True)
Bon, je vais faire autrement...
Merci
"C. ERNST" a écrit dans le message de news:
%
Ne vous compliquez pas la vie :
Je ne connais pas exactement la structure de vos tables mais :
DIM SQL
SQL= "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) "
SQL=SQL & "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
tblMembres ...
.....
SQL=SQL & "WHERE [AgeMini] =" & AgeMinimum & " AND [Choix]=" & 1
Currentdb.execute SQL





"jero" <~ a écrit dans le message de news:

Bonjour et merci de la réponse,
Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......


Non, mais comment "exécuter" une requête sélection ?
Quelle est alors la solution ?

"C. ERNST" a écrit dans le message de
news: %
(comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)

Effectivement !

Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......
Vous exécutez "SqlInsert" comprenant "SqlSelect"
Donc Sqlselect réclamera les paramètres...





"jero" <~ a écrit dans le message de news:

Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] &
' ' & [Prénom] AS Membre, False AS Sélectionné,
Count(tblMembres.IdMembre) AS NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom]
& ' ' & [Prénom], False,
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING
(((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True) AND
((tblAyantsDroits.Statut)="Enfant") AND ((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une
condition d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?", "
", 0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1



SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " & SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le message
"Trop peu de paramètres, 2 attendu" (comme si les 2 lignes
Qry.Parameters... "ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.



















Avatar
C. ERNST
Rien ne vous empêche d'écrire :

"(HAVING fctAgeRequisEnfant([DateDeNaissance]," & AgeMinimum &"," & 1 &
")=True)"



"jero" <~ a écrit dans le message de news:

Re-bonjour C. ERNST,
Oui, je suis d'accord, c'est ce que fais d'habitude mais là, ça va être un
peu plus compliqué - et moins "joli" - à cause de la fonction
fctAgeRequisEnfant() :
Public Function fctAgeRequisEnfant(DateNaissance As Date, AgeMinimum As
Single, Choix As Byte) As Boolean
Dim DateRéférenceAgeEnfant As Date, AgeRequisEnfant As Single,
tmpAgeRequisEnfant As Boolean
DateRéférenceAgeEnfant = Nz(DLookup("[DateRéférenceAgeEnfant]",
"[tblParamètresApplication]"), 0)
Select Case Choix
Case 1
AgeRequisEnfant = Nz(DLookup("[CritèreAgeEnfantCadeau]",
"[tblParamètresApplication]"), 0)
Case 2
AgeRequisEnfant = Nz(DLookup("[CritèreAgeEnfantSportLoisirs]",
"[tblParamètresApplication]"), 0)
End Select
tmpAgeRequisEnfant = DateDiff("yyyy", DateNaissance,
DateRéférenceAgeEnfant)
>= AgeMinimum
tmpAgeRequisEnfant = tmpAgeRequisEnfant And DateDiff("yyyy",
DateNaissance, DateRéférenceAgeEnfant) < AgeRequisEnfant + 1
fctAgeRequisEnfant = tmpAgeRequisEnfant
End Function
car, en fait, c'est à elle que je passe les paramètres [AgeMini] et
[Choix] (HAVING
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix])=True)
Bon, je vais faire autrement...
Merci
"C. ERNST" a écrit dans le message de
news: %
Ne vous compliquez pas la vie :
Je ne connais pas exactement la structure de vos tables mais :
DIM SQL
SQL= "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) "
SQL=SQL & "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
tblMembres ...
.....
SQL=SQL & "WHERE [AgeMini] =" & AgeMinimum & " AND [Choix]=" & 1
Currentdb.execute SQL





"jero" <~ a écrit dans le message de news:

Bonjour et merci de la réponse,
Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......


Non, mais comment "exécuter" une requête sélection ?
Quelle est alors la solution ?

"C. ERNST" a écrit dans le message de
news: %
(comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)

Effectivement !

Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......
Vous exécutez "SqlInsert" comprenant "SqlSelect"
Donc Sqlselect réclamera les paramètres...





"jero" <~ a écrit dans le message de news:

Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom] &
' ' & [Prénom] AS Membre, False AS Sélectionné,
Count(tblMembres.IdMembre) AS NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom]
& ' ' & [Prénom], False,
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING
(((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True) AND
((tblAyantsDroits.Statut)="Enfant") AND
((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une
condition d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?", "
", 0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1



SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits
FROM RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " &
SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le
message "Trop peu de paramètres, 2 attendu" (comme si les 2 lignes
Qry.Parameters... "ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.























Avatar
jero
Oui, merci.
jpg
"C. ERNST" a écrit dans le message de news:

Rien ne vous empêche d'écrire :

"(HAVING fctAgeRequisEnfant([DateDeNaissance]," & AgeMinimum &"," & 1 &
")=True)"



"jero" <~ a écrit dans le message de news:

Re-bonjour C. ERNST,
Oui, je suis d'accord, c'est ce que fais d'habitude mais là, ça va être
un peu plus compliqué - et moins "joli" - à cause de la fonction
fctAgeRequisEnfant() :
Public Function fctAgeRequisEnfant(DateNaissance As Date, AgeMinimum As
Single, Choix As Byte) As Boolean
Dim DateRéférenceAgeEnfant As Date, AgeRequisEnfant As Single,
tmpAgeRequisEnfant As Boolean
DateRéférenceAgeEnfant = Nz(DLookup("[DateRéférenceAgeEnfant]",
"[tblParamètresApplication]"), 0)
Select Case Choix
Case 1
AgeRequisEnfant = Nz(DLookup("[CritèreAgeEnfantCadeau]",
"[tblParamètresApplication]"), 0)
Case 2
AgeRequisEnfant = Nz(DLookup("[CritèreAgeEnfantSportLoisirs]",
"[tblParamètresApplication]"), 0)
End Select
tmpAgeRequisEnfant = DateDiff("yyyy", DateNaissance,
DateRéférenceAgeEnfant)
>= AgeMinimum
tmpAgeRequisEnfant = tmpAgeRequisEnfant And DateDiff("yyyy",
DateNaissance, DateRéférenceAgeEnfant) < AgeRequisEnfant + 1
fctAgeRequisEnfant = tmpAgeRequisEnfant
End Function
car, en fait, c'est à elle que je passe les paramètres [AgeMini] et
[Choix] (HAVING
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix])=True)
Bon, je vais faire autrement...
Merci
"C. ERNST" a écrit dans le message de
news: %
Ne vous compliquez pas la vie :
Je ne connais pas exactement la structure de vos tables mais :
DIM SQL
SQL= "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) "
SQL=SQL & "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits FROM
tblMembres ...
.....
SQL=SQL & "WHERE [AgeMini] =" & AgeMinimum & " AND [Choix]=" & 1
Currentdb.execute SQL





"jero" <~ a écrit dans le message de news:

Bonjour et merci de la réponse,
Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......


Non, mais comment "exécuter" une requête sélection ?
Quelle est alors la solution ?

"C. ERNST" a écrit dans le message de
news: %
(comme si les 2 lignes Qry.Parameters...
"ne servaient" à rien)

Effectivement !

Le problème est que vous n'exécutez pas la requête (Qry) pour laquelle
vous avez fourni les paramètres......
Vous exécutez "SqlInsert" comprenant "SqlSelect"
Donc Sqlselect réclamera les paramètres...





"jero" <~ a écrit dans le message de news:

Bonjour à tous,
J'ai une requête (RqListeMembres) avec 2 paramètres AgeMini et Choix
Code SQL :
PARAMETERS [AgeMini] Single, [Choix] Byte;
SELECT tblMembres.IdMembre, tblMembres.NumCompte, [tblMembres]![Nom]
& ' ' & [Prénom] AS Membre, False AS Sélectionné,
Count(tblMembres.IdMembre) AS NbAyantsDroits
FROM tblMembres INNER JOIN tblAyantsDroits ON tblMembres.IdMembre =
tblAyantsDroits.IdMembre
GROUP BY tblMembres.IdMembre, tblMembres.NumCompte,
[tblMembres]![Nom] & ' ' & [Prénom], False,
fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]),
tblAyantsDroits.Statut, tblAyantsDroits.Droit
HAVING
(((fctAgeRequisEnfant([DateDeNaissance],[AgeMini],[Choix]))=True) AND
((tblAyantsDroits.Statut)="Enfant") AND
((tblAyantsDroits.Droit)=True))
ORDER BY tblMembres.IdMembre;
Note : la fonction fctAgeRequisEnfant() permet de vérifier si une
condition d'âge est satisfaite ou non.
Pas de pb. en mode "Access"
J'utilise cette requête dans le code suivant :
....
NomRequête = "RqListeMembres"
Set Qry = CurrentDb.QueryDefs(NomRequête)
AgeMinimum = Nz(Val(InputBox("Quel est l'âge minimum de l'enfant ?",
" ", 0)), 0)
Qry.Parameters("AgeMini") = AgeMinimum
Qry.Parameters("Choix") = 1



SqlSelect = "SELECT IdMembre,NumCompte,Membre,False,NbAyantsDroits
FROM RqListeMembres"
SqlInsert = "INSERT INTO _tblMembresSélectionnés
(IdMembre,CompteMembre,Membre,Sélectionné,NbAyantsDroits) " &
SqlSelect
'et à l'exécution de la ligne ci-dessous, j'ai à chaque fois le
message "Trop peu de paramètres, 2 attendu" (comme si les 2 lignes
Qry.Parameters... "ne servaient" à rien)
CurrentDb.Execute SqlStr

Par contre, la requête RqListeMembresAgeRequisEnfant renvoie bien les
enregistrements, je l'ai testée avec :
Set Rst = Qry.OpenRecordset(dbOpenSnapshot)
? Rst.RecordCount

Si vous avez une idée...
Merci d'avance.