|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
Je viens de créer un formulaire avec le tuto très bien expliqué de Jean BALLAT "Création d'un formulaire de recherche multicritères" que l'on peut trouver ici Le souci, c'est que j'obtiens le message d'erreur suivant : MsgErreur1.JPG Quelqu'un aurait-il une idée d'où le problème pourrai venir parce que je sèche. Merci Seb |
|
|
00
|
|
|
#2 | ||||||||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour rafalemirage
Pour qu'une requête UNION fonctionne, il faut que les 2 requêtes (ou +) composant la requête UNION répondre à 2 conditions :
voici un exemple : requête 1 : Requête2 : Les requêtes UNION suivantes ne fonctionneront pas dans les cas suivants : Ex1 Code :
Ex2 Code :
Ex3 Code :
Seule la requête suivante sera correcte : Code :
|
||||||||
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Merci dumas.blr
J'ai effectivement corrigé le code SQL qui n'était effectivement pas correct mais maintenant j'ai un autre problème qui s'affiche ou pas justement, je n'ai rien qui s'affiche dans 3 demes listes déroulantes et j'ai un message d'erreur qui s'affiche "Fichier 'C:\Documents and Settings\monnom\Mes documents\tbAffectation.mdb' introuvable". Ma première liste déroulante affiche "---Tous---" mais dès que j'appuie sur les autres listes déroulantes, j'obtiens le message d'erreur avec sois tbAffection.mdb, tbEmplacement.mbd ou tbLieux.mdb en fonction de la liste. J'ai pourtant bien ces tables dans mon projet Access. Je met mon code SQL pour ma première et ma deuxième liste déroulante : Première liste déroulante qui marche Code :
Code :
SELECT tbAffectation.Affectation FROM tbTypeCrible RIGHT JOIN (tbLieux RIGHT JOIN (tbGrilles RIGHT JOIN (tbEmplacement RIGHT JOIN (tbAffectation RIGHT JOIN tbMouvementGrille ON tbAffectation.Affectation = tbMouvementGrille.Affectation) ON tbEmplacement.TypeEtat = tbMouvementGrille.TypeEtat) ON tbGrilles.MarquageGrille = tbMouvementGrille.MarquageGrille) ON tbLieux.Lieux = tbAffectation.Lieux) ON tbTypeCrible.idTypeCrible = tbGrilles.idTypeCrible WHERE (((tbTypeCrible.TypeCrible)=IIf([Formulaires]![Formulaire1]![cboTypeCrible]=0,[tbTypeCrible]![TypeCrible],[Formulaires]![Formulaire1]![cboTypeCrible])) AND ((tbMouvementGrille.TypeEtat)=IIf([Formulaires]![Formulaire1]![cboTypeEmplacement]=" ---Tous---",[tbMouvementGrille]![TypeEtat],[Formulaires]![Formulaire1]![cboTypeEmplacement])) AND ((tbLieux.Lieux)=IIf([Formulaires]![Formulaire1]![cboLieux]=" ---Tous---",[tbLieux]![Lieux],[Formulaires]![Formulaire1]![cboLieux])) AND ((tbMouvementGrille.DateDebutEtat)>[Formulaires]![Formulaire1]![DateDebut]) AND ((tbMouvementGrille.DateFinEtat)<[Formulaires]![Formulaire1]![DateFin])) ORDER BY tbAffectation.Affectation; UNION SELECT " ---Tous---" FROM tbAffectation.Affectation; Seb |
||
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Ca, ça sent la table liée.
Avez-vous mis à jour la laison entre la base frontale et la base tbAffectation.mdb ? En effet, si la table n'existait pas, il y aurait une erreur SQL se type "table inconnue". Là, c'est Access qui dit qu'il ne trouve pas la base de donnée. |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour dumas.blr,
Je viens d'aller dans le menu Outils, Utilitaires de base de données, Gestionnaire d'attaches. Access me dit "Il n'y a pas de tables attachées dans la base de données en cours". Faut-il que j'attache les tables à la base de données ? Seb |
|
|
00
|
|
|
#6 | ||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Comment sont stockées les tables ? Dans des bases de données différentes ?
Si c'est le cas, il faut bien les relier entre elles. Si ce n'est pas le cas, c'est que le SQL n'est pas bon. J'ai regardé plus attentivement la requête qui ne fonctionnait pas Code :
En effet, le ';' indique la fin d'une requête SQL. Le reste de la requête ne sera pas pris en compte. Peut-être que dans ce cas, Access va chercher un autre emplacement; mais en tout état de cause, le SQL ne marchera pas. Il faut enlever le ';' et tester. |
||
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
effectivement, j'avais oublié de supprimer le ";" sur le code de la liste que je t'ai donné, j'ai modifié ca mais sans succès. Je vais relire le code de l'exemple du tuto pour voir de ce qui change. Seb |
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Peux-tu me dire comment sornt ordonnées les bases de données ?
Y a t'il une seule base et est-ce que les tables sont toutes présentes dedans ? |
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
|
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
En regardant plus attentivement, je trouve que ta requête me parait bien compliquée. As tu utilisé l'assistant ou as-tu assayé de la construire tout seul (je pencherais pour le 2ème cas)
Remarque générale :Pourquoi utilise-tu des RIGHT JOIN (jointure ouverte) entre tes tables alors que toutes tes cardinalité sont de type 1-n. Des INNER JOIN sont amplement suffisantes. Remarque secondaire: Dans les combo box, tu souhaites afficher les occurences de tes tables tbTypeCrible, tbAffectation, tbLieux ... Ta requête qui est le .rowsource de tes listes ne devrait pointer que sur la table d'origine. Il ne devrait pas y avoir de jointure. Il faut donc les simplifier au maximum. Si la requête que tu présente est le résultat des sélections dans les combobox, alors il sera très compliqué de traiter cela uniquement en SQL. Il me parait beaucoup plus simple et maintenable de coder cela en VBA, et de générer dynamiquement le SQL à partir du code, en combinant lersultat avaec des AND. |
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonsoir,
pour ce qui est des requêtes, j'ai utilisé l'assistant en suivant les instructions du tuto de Jean BALLAT "Création d'un formulaire de recherche multicritères". Ces requêtes me servent à faire un formulaire de recherche multicritères. Pour ce qui est des RIGHT JOINs, c'est Access qui les générés tout seul. |
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
J'ai refait un formulaire de recherche multicritères plus simple mais j'ai un problème que je n'arrive pas à résoudre. J'ai un formulaire avec 4 listes déroulantes (TypeEtat, TypeCrible, Affectation et Lieux), 4 checkbox (chkTypeEtat, chkTypeCrible, chkAffectation et chkLieux pour dire de tout selectionner ou non) et 2 zones de texte (DateDebut et DateFin) J'ai créé un requête et voilà un exemple de ce que je met en critère dans un champ de ma requête : Code :
VraiFaux([Formulaires]![FCreationEtat]![chkTypeEtat]=1;[tbEmplacement]![TypeEtat];[Formulaires]![FCreationEtat]![TypeEtat]) J'ai essayé de remplacer [tbEmplacement]![TypeEtat] par "" mais rien de mieux. Je sais plus quoi faire Seb |
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
Bon ben j'ai réussi à faire marcher mon formulaire mais je ne sais pas trop comment, voici un exemple de ce que j'ai mis en critère de ma requête : Code :
VraiFaux([Formulaires]![FCreationEtat]![chkTypeEtat]=Vrai;[tbEmplacement]![TypeEtat];[Formulaires]![FCreationEtat]![TypeEtat]) Seb |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com