VBA et PARAMETERS

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
C. ERNST
Le #20765311
(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"
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.







jero
Le #20766261
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" %
(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"
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.











C. ERNST
Le #20767091
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"
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" 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"
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.















jero
Le #20772111
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" %
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"
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" 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"
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.



















C. ERNST
Le #20772301
Rien ne vous empêche d'écrire :

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



"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" 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"
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" 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"
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.























jero
Le #20775631
Oui, merci.
jpg
"C. ERNST"
Rien ne vous empêche d'écrire :

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



"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" 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"
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" 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"
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.



























Publicité
Poster une réponse
Anonyme