OVH Cloud OVH Cloud

ajout de champs dans une requête via un formulaire

13 réponses
Avatar
chev92
Bonjour à tous,
Sur une table contenant les champs nommés A,B,C,D,E ,etc ... je voudrais
créer automatiquement une requête à partir de choix multiples faits dans un
formulaire avec des cases à cocher.
Par exemple : si je coche A,B et D dans le formulaire, la requête me
retourne les infos contenues dans les champs A,D et D de la table.
Ce sont donc les choix faits dans le formulaire qui vont définirles colonnes
des items de la requête.
Comment cela peut-il se construire ou se programmer ?
Merci d'avance de votre aide.

3 réponses

1 2
Avatar
chev92
La sagesse m'a appris qu'il ne sert à rien de s'obstiner face aux gens qui
ont toujours agressivement raison :
J'ai donc remplacé les "[Formulaires!]" par tes Forms!, ... et cela ne
fonctionne toujours pas;
So what ?


"chev92"
| Ce n'est donc pas cela qui est à l'origine des messages d'erreur observés
| avec le CreateQueryDef ...


et moi je te répête que tu dois utiliser des expressions anglaises dans le VBA ;-)

Le VBA n'ayant que faire de "Formulaires" !

--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/




Avatar
Eric
Bonjour,

Je n'ai pas lu toute la requête avec une attention soutenue mais :

Set sQDF = Me.CreateQuerydef("req Multichoix", sSQL) jamais vu.
Je ferai :
Dim QDF as DAO.QueryDef
Set QDF= CurrentDb.CreateQuerydef(...)
et à la fin de la procédure
Set QDF = Nothing

En plus, j'ai l'impression qu'il y a des problèmes au niveau du sql. A
vérifier.
sSQL = "SELECT Échant.Or_Ethnic, Échant.TypeCheveu, Échant.NbTrait,"
If Option_S = True Then
sSQL = sSQL & " CStr(Fix(Avg([AnMinEl]![S]))) & "" ± "" &
CStr(Fix(StDev([AnMinEl]![S]))),"
End If

devrait être:
If Option_S = True Then
sSQL = sSQL & " CStr(Fix(Avg([AnMinEl].[S])))" & " ± " &
"CStr(Fix(StDev([AnMinEl].[S]))),"
End If
Idem pour les autres If ... End If

PS: sans oublier la remarque de Pierre relative à la sortie de
[Forms]![form Multichoix]![Choix Origine_Ethnique], et de l'autre, de la
chaine.

Merci de ce complément d'information.
Je me heurte maintenant à un problème de définition de cette fonction
CerateQueryDef. C'est sûrement tout bête, mais je rame parce que je suis
complètement néophyte dans en matière de programmation dans Access.
Pour être plus efficace, voici le texte de la procédure événementielle de
sortie de mon formulaire "form Multichoix" (par action sur un bouton
"Éxécuter"), pour créer une requête qui devrait s'appeler "req Multichoix"
[AnMInEl et Echant sont des tables de ma DB] :
=============================== > Private Sub Exécuter_Click()
On Error GoTo Err_Exécuter_Click

Dim sSQL As String
sSQL = "SELECT Échant.Or_Ethnic, Échant.TypeCheveu, Échant.NbTrait,"
If Option_S = True Then
sSQL = sSQL & " CStr(Fix(Avg([AnMinEl]![S]))) & "" ± "" &
CStr(Fix(StDev([AnMinEl]![S]))),"
End If
If Option_Cu = True Then
sSQL = sSQL & " CStr(Fix(Avg([AnMinEl]![Cu]))) & "" ± "" &
CStr(Fix(StDev([AnMinEl]![Cu]))),"
End If
If Option_Fe = True Then
sSQL = sSQL & " CStr(Fix(Avg([AnMinEl]![Fe]))) & "" ± "" &
CStr(Fix(StDev([AnMinEl]![Fe]))),"
End If
sSQL = Left(sSQL, Len(sSQL) - 1)
sSQL = sSQL & " FROM Échant INNER JOIN AnMinEl ON Échant.Échant_Numéro =
AnMinEl.Échant_Numéro" & _
" GROUP BY Échant.Or_Ethnic, Échant.TypeCheveu, Échant.NbTrait" & _
" HAVING (((Échant.Or_Ethnic)=[Formulaires]![form Multichoix]![Choix
Origine_Ethnique]) AND" & _
" ((Échant.TypeCheveu)=[Formulaires]![form Multichoix]![Choix
Type_Cheveux])" & _
" AND ((Échant.NbTrait)=0));"
MsgBox (sSQL)
Set sQDF = Me.CreateQueryDef("req Multichoix", sSQL)
MsgBox ("REQ CREEE")
DoCmd.OpenQuery ("req Multichoix")

Exit_Exécuter_Click:
Exit Sub

Err_Exécuter_Click:
MsgBox Err.Description
Resume Exit_Exécuter_Click

End Sub
=============================== >
Je ne vois pas ce qui cloche, mais peut-être aurez-vous un regard plus
expérimenté que le mien.
Par avance, merci.
Cordialement.



Salut,

"chev92"
| Maintenant, l'étape suivante :
| 1- puis-je sauvegarder cette chaîne SQL en tant que requête ?


évidement... regarde :

CreateQueryDef (NomDeLaRequete, strSQL)



| 2- comment puis programmer l'éxécution de cette chaîne pour extraire les
| infos de ma table ?


Pour juste afficher la requête ?

DoCmd.OpenQuery "NomDeLaRequête"


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/






--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
3stone
"chev92"
| La sagesse m'a appris qu'il ne sert à rien de s'obstiner face aux gens qui
| ont toujours agressivement raison :


Je te retourne le compliment ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
1 2