Access
Résolu/Fermé
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
-
14 mai 2011 à 21:27
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 - 16 mai 2011 à 00:02
Turbus Messages postés 72 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 4 décembre 2015 - 16 mai 2011 à 00:02
5 réponses
croumble
Messages postés
640
Date d'inscription
samedi 24 avril 2010
Statut
Membre
Dernière intervention
21 novembre 2011
37
14 mai 2011 à 22:05
14 mai 2011 à 22:05
Il me semble qu'il faut que sélectionne tes plages de données avec or argent bronze et tu fais clique droit créer une liste déroulante
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
Modifié par Syzygy le 14/05/2011 à 22:44
Modifié par Syzygy le 14/05/2011 à 22:44
Bonjour,
Suite au commentaire ci-dessus, si la formule est Ok, je vous suggère d'utiliser l'opérateur "Or" à la place de "And". En effet la signification de l'opérateur et (and) sous Access est différence de celle en français courant.
Dans ce cas de figure, Access cherche les médailles qui sont simultanément en or, en argent et en bronze, d'où l'absence de résultat.
L'opérateur "Or"(ou) effectuera lui la recherche en prenant les médailles qui sont ou en or, ou en argent ou en bronze.
Bonne soirée,
Suite au commentaire ci-dessus, si la formule est Ok, je vous suggère d'utiliser l'opérateur "Or" à la place de "And". En effet la signification de l'opérateur et (and) sous Access est différence de celle en français courant.
Dans ce cas de figure, Access cherche les médailles qui sont simultanément en or, en argent et en bronze, d'où l'absence de résultat.
L'opérateur "Or"(ou) effectuera lui la recherche en prenant les médailles qui sont ou en or, ou en argent ou en bronze.
Bonne soirée,
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
14 mai 2011 à 22:48
14 mai 2011 à 22:48
Bonjour,
Merci de vous être penché sur le sujet mais j'ai essayé avec "OR" et j'ai toujours le même problème.. Rien ne s'affiche.
Merci de vous être penché sur le sujet mais j'ai essayé avec "OR" et j'ai toujours le même problème.. Rien ne s'affiche.
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
14 mai 2011 à 22:59
14 mai 2011 à 22:59
Repartons depuis le début dans ce cas. Si j'ai bien compris vous travaillez sur un formulaire contenant la-dite liste et vous souhaitez voir s'afficher les résultats de quel manière ? Dans un sous-formulaire inclue dans le formulaire parent, dans un autre formulaire/état ou simplement effectuer une requête et l'afficher en "brut" ?
Si vous aviez possibilité de zipper votre base de données et de la mettre sur http://www.cijoint.fr/ cela faciliterait mes recherches.
Si vous aviez possibilité de zipper votre base de données et de la mettre sur http://www.cijoint.fr/ cela faciliterait mes recherches.
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
14 mai 2011 à 23:12
14 mai 2011 à 23:12
J'ai plusieurs liste déroulante qui me permettent de trier les résultats et les afficher dans une zone de liste.
Les fichiers avec l'extension .accdb ne peuvent pas être déposés sur http://www.cijoint.fr/
Voici un autre lien ; [url=https://www.luanagames.com/index.fr.html]Projet.accdb[/url]
Il s'agit du formulaire "Consultation par JO" (pour faire apparaitre des résultats il faut sélectionner l'année 2010)
Merci de votre aide.
Les fichiers avec l'extension .accdb ne peuvent pas être déposés sur http://www.cijoint.fr/
Voici un autre lien ; [url=https://www.luanagames.com/index.fr.html]Projet.accdb[/url]
Il s'agit du formulaire "Consultation par JO" (pour faire apparaitre des résultats il faut sélectionner l'année 2010)
Merci de votre aide.
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
15 mai 2011 à 00:40
15 mai 2011 à 00:40
Bonsoir,
Je suis parvenu a trouvé une solution (peu élégante je l'avoue) à votre problème.
Dans le formulaire "Consultation par JO" en mode création, ouvrez le contenu de votre contrôle "Liste10" puis basculez en affichage SQL.
Copiez-collez l'instruction suivante :
SELECT Résultats.Jeux, Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Résultats.Athlète, Résultats.Sport
FROM Médaille INNER JOIN ((Athlètes INNER JOIN Résultats ON Athlètes.IdAthlète = Résultats.Athlète) INNER JOIN Sports ON Résultats.Sport = Sports.IdSport) ON Médaille.IdMédaille = Résultats.Médaille
GROUP BY Résultats.Jeux, Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Résultats.Athlète, Résultats.Sport, Résultats.Médaille
HAVING (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,1,[Formulaires]![Consultation par JO]![Modifiable12]))) OR (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,2,[Formulaires]![Consultation par JO]![Modifiable12]))) OR (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,3,[Formulaires]![Consultation par JO]![Modifiable12])));
Enregistrez le tout et cn'hésitez pas à repasser en affichage "création de requete" pour visualiser le fonctionnement de la requête.
Cette solution n'est pas optimale mais fonctionne. N'hésitez pas à me suggérer une meilleure solution.
Bonne soirée,
Je suis parvenu a trouvé une solution (peu élégante je l'avoue) à votre problème.
Dans le formulaire "Consultation par JO" en mode création, ouvrez le contenu de votre contrôle "Liste10" puis basculez en affichage SQL.
Copiez-collez l'instruction suivante :
SELECT Résultats.Jeux, Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Résultats.Athlète, Résultats.Sport
FROM Médaille INNER JOIN ((Athlètes INNER JOIN Résultats ON Athlètes.IdAthlète = Résultats.Athlète) INNER JOIN Sports ON Résultats.Sport = Sports.IdSport) ON Médaille.IdMédaille = Résultats.Médaille
GROUP BY Résultats.Jeux, Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Résultats.Athlète, Résultats.Sport, Résultats.Médaille
HAVING (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,1,[Formulaires]![Consultation par JO]![Modifiable12]))) OR (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,2,[Formulaires]![Consultation par JO]![Modifiable12]))) OR (((Résultats.Jeux)=[Formulaires]![Consultation par JO]![Modifiable2]) AND ((Résultats.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]=8,3,[Formulaires]![Consultation par JO]![Modifiable12])));
Enregistrez le tout et cn'hésitez pas à repasser en affichage "création de requete" pour visualiser le fonctionnement de la requête.
Cette solution n'est pas optimale mais fonctionne. N'hésitez pas à me suggérer une meilleure solution.
Bonne soirée,
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
15 mai 2011 à 10:18
15 mai 2011 à 10:18
Bonjour,
Merci pour votre solution celle-ci fonctionne !
Mais, je ne peux pas, par exemple, créer une liste déroulante avec comme information "Tous les pays" ? Ce serait beaucoup trop de travail à écrire un critère pour chaque pays.. Et si je souhaiterai créer un pays, via le formulaire "Ajouter un nouveau pays", celui-ci ne serai pas mis à jour dans la requête..
Je vais essayer de chercher une autre solution. Si vous avez une autre idée, je suis preneur.
Merci.
Bonne journée.
Merci pour votre solution celle-ci fonctionne !
Mais, je ne peux pas, par exemple, créer une liste déroulante avec comme information "Tous les pays" ? Ce serait beaucoup trop de travail à écrire un critère pour chaque pays.. Et si je souhaiterai créer un pays, via le formulaire "Ajouter un nouveau pays", celui-ci ne serai pas mis à jour dans la requête..
Je vais essayer de chercher une autre solution. Si vous avez une autre idée, je suis preneur.
Merci.
Bonne journée.
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
15 mai 2011 à 17:26
15 mai 2011 à 17:26
J'ai trouvé ceci :
https://www.developpez.net/forums/d1014562/logiciels/microsoft-office/access/requetes-sql/filtre-zone-liste/
SI j'ai bien compris, il faut crée une requête union qui va faire apparaitre "Tous" en haut de la liste déroulante. (Chose que j'ai faite)
Ensuite il faut en quelques sorte lui dire en VBA que lorsque l'on sélectionne 'Tous' il affiche tous les résultats ?
https://www.developpez.net/forums/d1014562/logiciels/microsoft-office/access/requetes-sql/filtre-zone-liste/
SI j'ai bien compris, il faut crée une requête union qui va faire apparaitre "Tous" en haut de la liste déroulante. (Chose que j'ai faite)
Ensuite il faut en quelques sorte lui dire en VBA que lorsque l'on sélectionne 'Tous' il affiche tous les résultats ?
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
15 mai 2011 à 17:44
15 mai 2011 à 17:44
Bonjour,
Oui l'une des solutions serait d'introduire la requête SQL directement en VBA. Toutefois, (après avoir survolée le post je l'avoue) la requête Union ne me semble pas adaptée car, comme dans l'instruction que je vous ai transmis cette nuit, vous devriez gérer toutes les possibilités manuellement... Ce qui fait que nous nous retrouvons au point de départ.
Si vous n'avez pas trouver de solution d'ici là, je me pencherai à nouveau sur votre base ce soir.
Bonne recherche,
Oui l'une des solutions serait d'introduire la requête SQL directement en VBA. Toutefois, (après avoir survolée le post je l'avoue) la requête Union ne me semble pas adaptée car, comme dans l'instruction que je vous ai transmis cette nuit, vous devriez gérer toutes les possibilités manuellement... Ce qui fait que nous nous retrouvons au point de départ.
Si vous n'avez pas trouver de solution d'ici là, je me pencherai à nouveau sur votre base ce soir.
Bonne recherche,
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
15 mai 2011 à 17:48
15 mai 2011 à 17:48
Oui c'est ce que je me disais, c'est une autre façon de faire mais du même style que votre solution où il faut faire tous les champs de la table manuellement.
Pour le moment je n'ai pas trouvé d'autre solution.
Merci.
Pour le moment je n'ai pas trouvé d'autre solution.
Merci.
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
217
15 mai 2011 à 19:57
15 mai 2011 à 19:57
Bonjour
Si j'ai bien compris sous access tu veux faire un tri sur les différentes médailles a partir d'une liste déroulante.
J'ai fait un petit exemple sous access 2003 que tu trouveras sur ce lien.
Cela te convient-il?
http://www.cijoint.fr/cjlink.php?file=cj201105/cij002hXft.zip
Si j'ai bien compris sous access tu veux faire un tri sur les différentes médailles a partir d'une liste déroulante.
J'ai fait un petit exemple sous access 2003 que tu trouveras sur ce lien.
Cela te convient-il?
http://www.cijoint.fr/cjlink.php?file=cj201105/cij002hXft.zip
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
Modifié par Turbus le 15/05/2011 à 16:04
Modifié par Turbus le 15/05/2011 à 16:04
Personne d'autre n'a une solution ?
Merci.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
15 mai 2011 à 21:55
15 mai 2011 à 21:55
J'ai trouvé !
J'ai remodifié la structure de votre formulaire pour le rendre plus parlant (à mes yeux) en basant toutes vos listes sur les désignations plutôt que sur la valeur de la clé primaire (c'est ainsi plus lisible dans les formules que j'ai utilisé).
J'ai ensuite ajouté un sport à la liste des sports que j'ai intitulé "(Tous les sports)" Pour le trouver en haut de la liste.
Enfin, j'ai utilisé la formule suivante, par exemple pour les médailles, pour la zone de critère :
VraiFaux([Formulaires]![Consultation par JO]![Modifiable12]="Toutes médailles";[Médaille].[Médaille];[Formulaires]![Consultation par JO]![Modifiable12])
Je vous donne également l'instruction SQL de la requête car j'ai apporté quelques modifications à la structure de votre requête :
SELECT Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Jeux.[Année JO]
FROM (Athlètes INNER JOIN (Jeux INNER JOIN (Médaille INNER JOIN Résultats ON Médaille.IdMédaille = Résultats.Médaille) ON Jeux.IdJO = Résultats.Jeux) ON Athlètes.IdAthlète = Résultats.Athlète) INNER JOIN Sports ON Résultats.Sport = Sports.IdSport
WHERE (((Sports.Sport)=IIf([Formulaires]![Consultation par JO]![Modifiable28]="(Tous les sports)",[Sports].[Sport],[Formulaires]![Consultation par JO]![Modifiable28])) AND ((Médaille.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]="Toutes médailles",[Médaille].[Médaille],[Formulaires]![Consultation par JO]![Modifiable12])) AND ((Jeux.[Année JO])=[Formulaires]![Consultation par JO]![Modifiable2]))
GROUP BY Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Jeux.[Année JO];
Un dernier conseil d'ordre général, utilisez des noms de champs représentatifs lorsque vous concevez vos formulaires car j'ai eu un peu de mal à m'y retrouvé entre le champ "Modifiable2" et "Modifiable 28". De plus la maintenance est plus aisée lorsque les noms sont significatifs.
Si cela ne fonctionne pas je peux vous mettre le fichier à jour sur cijoint.
Bonne soirée,
J'ai remodifié la structure de votre formulaire pour le rendre plus parlant (à mes yeux) en basant toutes vos listes sur les désignations plutôt que sur la valeur de la clé primaire (c'est ainsi plus lisible dans les formules que j'ai utilisé).
J'ai ensuite ajouté un sport à la liste des sports que j'ai intitulé "(Tous les sports)" Pour le trouver en haut de la liste.
Enfin, j'ai utilisé la formule suivante, par exemple pour les médailles, pour la zone de critère :
VraiFaux([Formulaires]![Consultation par JO]![Modifiable12]="Toutes médailles";[Médaille].[Médaille];[Formulaires]![Consultation par JO]![Modifiable12])
Je vous donne également l'instruction SQL de la requête car j'ai apporté quelques modifications à la structure de votre requête :
SELECT Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Jeux.[Année JO]
FROM (Athlètes INNER JOIN (Jeux INNER JOIN (Médaille INNER JOIN Résultats ON Médaille.IdMédaille = Résultats.Médaille) ON Jeux.IdJO = Résultats.Jeux) ON Athlètes.IdAthlète = Résultats.Athlète) INNER JOIN Sports ON Résultats.Sport = Sports.IdSport
WHERE (((Sports.Sport)=IIf([Formulaires]![Consultation par JO]![Modifiable28]="(Tous les sports)",[Sports].[Sport],[Formulaires]![Consultation par JO]![Modifiable28])) AND ((Médaille.Médaille)=IIf([Formulaires]![Consultation par JO]![Modifiable12]="Toutes médailles",[Médaille].[Médaille],[Formulaires]![Consultation par JO]![Modifiable12])) AND ((Jeux.[Année JO])=[Formulaires]![Consultation par JO]![Modifiable2]))
GROUP BY Athlètes.[Nom Athlète ], Sports.Sport, Médaille.Médaille, Jeux.[Année JO];
Un dernier conseil d'ordre général, utilisez des noms de champs représentatifs lorsque vous concevez vos formulaires car j'ai eu un peu de mal à m'y retrouvé entre le champ "Modifiable2" et "Modifiable 28". De plus la maintenance est plus aisée lorsque les noms sont significatifs.
Si cela ne fonctionne pas je peux vous mettre le fichier à jour sur cijoint.
Bonne soirée,
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
Modifié par Turbus le 15/05/2011 à 22:19
Modifié par Turbus le 15/05/2011 à 22:19
Bonjour
Je viens d'essayer mais ça ne fonctionne pas, rien ne s'affiche. Il doit y avoir une incohérence de nom quelques part.
Oui si c'est possible, j'aimerai bien la base de donnée sur laquelle vous avez apportez des modifications comme ça je peux voir les modifications que vous avez faites pour rendre le formulaire "plus parlant". Et aussi voir pourquoi ça ne fonctionne pas chez moi.
Merci et bonne soirée.
Je viens d'essayer mais ça ne fonctionne pas, rien ne s'affiche. Il doit y avoir une incohérence de nom quelques part.
Oui si c'est possible, j'aimerai bien la base de donnée sur laquelle vous avez apportez des modifications comme ça je peux voir les modifications que vous avez faites pour rendre le formulaire "plus parlant". Et aussi voir pourquoi ça ne fonctionne pas chez moi.
Merci et bonne soirée.
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
15 mai 2011 à 22:37
15 mai 2011 à 22:37
Voici le lien pour le fichier :
http://www.cijoint.fr/cjlink.php?file=cj201105/cijAjDAKMX.zip
Bonne réception,
http://www.cijoint.fr/cjlink.php?file=cj201105/cijAjDAKMX.zip
Bonne réception,
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
15 mai 2011 à 22:50
15 mai 2011 à 22:50
Merci,
Les " tables" R_Croisement_médaille que vous avez crée correspondent à quoi ?
Cela sert pour faire ce que je cherche à faire ou c'est simplement pour rendre la base de données plus parlante ?
Les " tables" R_Croisement_médaille que vous avez crée correspondent à quoi ?
Cela sert pour faire ce que je cherche à faire ou c'est simplement pour rendre la base de données plus parlante ?
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
15 mai 2011 à 23:00
15 mai 2011 à 23:00
R_croisement_médaille est la requête qui contient les résulatsqui sont affichés dans votre zone de résultat, c'est donc ce que vous cherchez à faire.
J'ai comme habitude de mettre ce type de requête directement accessible afin de pouvoir les modifier plus rapidement. Ce n'est pas une obligation, vous auriez pu créer la reqûete directement dans le formulaire.
Si vous voulez la faire disparaitre, faites d'abord un copier de l'instruction SQL, supprimez là puis retourner dans votre formulaire en mode création et modifiez la source de donnée de votre contrôle affichant la liste de résultat. Basculez en affichage SQL et coller l'instruction. Enregistrez et çà devrait marcher.
J'ai comme habitude de mettre ce type de requête directement accessible afin de pouvoir les modifier plus rapidement. Ce n'est pas une obligation, vous auriez pu créer la reqûete directement dans le formulaire.
Si vous voulez la faire disparaitre, faites d'abord un copier de l'instruction SQL, supprimez là puis retourner dans votre formulaire en mode création et modifiez la source de donnée de votre contrôle affichant la liste de résultat. Basculez en affichage SQL et coller l'instruction. Enregistrez et çà devrait marcher.
Turbus
Messages postés
72
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
4 décembre 2015
6
15 mai 2011 à 23:19
15 mai 2011 à 23:19
D'accord, j'ai compris. C'est juste que je ne faisais jamais "enregistrer sous" pour les requêtes. J'ai pour habitude de créer directement la requête et de la "laisser" dans le formulaire. (si on peut appelé ça une habitude puisque c'est la première base de données que je fait)
Par contre, j'ai coller l'instruction SQL et ça ne fonctionne toujours pas. J'ai vérifié les noms des différents champs et cela semble correct..
Par contre, j'ai coller l'instruction SQL et ça ne fonctionne toujours pas. J'ai vérifié les noms des différents champs et cela semble correct..
14 mai 2011 à 22:10
J'ai déjà fait ma liste déroulante (avec comme données "Toutes les médailles", "Or", "Argent", "Bronze"), et lorsque que sélectionne "Or" ça m'affiche les bons résultats (pareil pour Argent et Bronze).
Mon problème c'est lorsque je clique sur "Toutes les médailles", j'aimerai que ça m'affiche les résultats des médailles d'or ET d'argent ET de bronze.
14 mai 2011 à 22:12
14 mai 2011 à 22:15
14 mai 2011 à 22:18
14 mai 2011 à 22:23
If (Zone de liste déroulante) = "<<Toutes médailles>>" Then
(liste de résultats) ="Or" And "Argent" And "Bronze"
End Ifit
mais sans résultats..