Requête paramétrée liste déroulante formulaire

Fermé
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015 - Modifié par SILBA31 le 22/05/2015 à 12:05
 Tessel75 - 27 mai 2015 à 14:30
Bonjour,

J'utilise un certain nombre de requêtes paramétrés. Pour éviter à l'utilisateur d'entrer le paramètre en entier dans la boîte de dialogue j'ai créé des formulaires avec liste déroulante contenant l'ensemble des choix possibles pour un paramètre.

Ma requête de base est:

PARAMETERS [Architecture] Text ( 255 );
SELECT [Architectures-besoins].Architecture, [Architectures-besoins].Besoin, Besoins.Module, Besoins.Description
FROM [Architectures-besoins] INNER JOIN Besoins ON [Architectures-besoins].Besoin = Besoins.Besoin
WHERE ((([Architectures-besoins].Architecture)=[Architecture]))
ORDER BY [Architectures-besoins].Besoin;


Elle fonctionne parfaitement.

J'ai créé ce formulaire:



Le formulaire s'appelle FrmArchitecture et la liste déroulante s'appelle TxtArchitecture.

J'ai donc modifié la requête ci-dessus de cette façon:

PARAMETERS [forms]![FrmArchitecture]![TxtArchitecture] Long;
SELECT [Architectures-besoins].Architecture, [Architectures-besoins].Besoin, Besoins.Module, Besoins.Description
FROM [Architectures-besoins] INNER JOIN Besoins ON [Architectures-besoins].Besoin = Besoins.Besoin
WHERE ((([Architectures-besoins].Architecture)=[Architecture]))
ORDER BY [Architectures-besoins].Besoin;


Malheureusement la requête ne semble pas prendre en compte le paramètre sélectionné dans la liste déroulante.
La requête s'exécute mais sans critère sur le champ "Architecture".

Savez-vous d'où peut venir ce problème?

Merci d'avance :)

8 réponses

Re-Bonjour,
Pour entrer des paramètres dans une requête il faut avoir une syntaxe du type :
"[Champ] = Forms!NomFormulaire!NomDuControle"
Où [Champ] = nom du champ dans la requête
NomFormulaire = Nom du formulaire courant
NomDuControle = Nom du contrôle où est entré le paramètre en liste déroulante ou non.
Bonne suite
0
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015
22 mai 2015 à 13:31
Rebonjour Tessel75,

le nom du champ est Architecture.

J'ai appliqué la syntaxe que du me donne:

PARAMETERS [Architecture] = [forms]![FrmArchitecture]![TxtArchitecture] Long;
SELECT [Architectures-besoins].Architecture, [Architectures-besoins].Besoin, Besoins.Module, Besoins.Description
FROM [Architectures-besoins] INNER JOIN Besoins ON [Architectures-besoins].Besoin = Besoins.Besoin
WHERE ((([Architectures-besoins].Architecture)=[Architecture]))
ORDER BY [Architectures-besoins].Besoin;


Malheureusement j'ai le message d'erreur suivant:

Erreur de syntaxe dans la clause Parameter

J'ai essayé plusieurs combinaisons avec des crochets, sans crochets, sans le paramètre "Long", etc mais j'ai toujours le même message d'erreur.
0
Tu ne m'as pas du tout compris. La syntaxe que je t'indiquais ne concernait pas la ligne :"Parameters" , dont tu n'as besoin que dans des cas assez rares; tu t'en rends compte quand tu es sûr de toi, et que ça ne marche pas. La syntaxe concernait l'expression paramétrée :
"Where [Champ] = Forms!NomFormulaire!NomDuControle "
Mais si tes noms de table et de champ étaient moins compliqués, tu t'y retrouverais bien plus facilement.
0
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015
Modifié par SILBA31 le 26/05/2015 à 15:56
Parfait merci j'ai fini par y arriver grâce à tes explications.

Sais-tu si il est possible de faire à peu près la même chose mais pour sélectionner un champ à partir d'un formulaire?

Par exemple replacer ceci:
SELECT Applications.Module, Applications.Description
FROM Applications
WHERE (((Applications.[Effective delivery Date (W version)])<[forms]![FrmEDD]![DTPicker]));

par cela:
SELECT Applications.Module, Applications.Description
FROM Applications
WHERE (((Applications.[forms]![FrmEDD]![Date])<[forms]![FrmEDD]![DTPicker]));


Tel que je l'ai fait cela ne fonctionne pas mais bon ça serait trop simple si la technique était directement transposable ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Non, ce n'est pas possible, parce que ce n'est pas la valeur d'un contrôle dans un formulaire que tu sélectionnes mais une valeur dans un champ à l'aide de la valeur d'un contrôle.
Bonne suite
0
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015
27 mai 2015 à 10:10
Sais tu si il est possible de faire cette opération quitte à utiliser une autre technique?
0
Explique un peu mieux ce que tu veux faire parce que là, je ne comprends pas.
0
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015
27 mai 2015 à 10:53
En fait je possède une table nommée application ayant en gros les champ suivants:

ID Date1 Date2 Date3


Grâce à cette requête, je suis capable de sélectionner l'ensemble des lignes pour laquelle la date est antérieur à une date cible entrée par l'utilisateur dans un formulaire:

SELECT Applications.Module, Applications.Description
FROM Applications
WHERE (((Applications.[Effective delivery Date (W version)])<[forms]![FrmEDD]![DTPicker]));


Dans cet exemple Date1=Effective delivery Date (W version)

J'aimerais pouvoir effectuer mon tri sur Date2 ou Date3 par exemple en laissant ce choix à l'utilisateur. Je voudrais donc inclure une nouvelle liste déroulante dans mon formulaire avec les éléments Date1,Date2,Date3,... et que la requête soit modifiée en conséquence pour qu'elle s'applique au champ (Date2 par exemple) sélectionné par l'utilisateur.

Merci d'avance
0
Re-...
il suffit que tu sélectionnes les réponses aux questions sur les requêtes en "cascade".
La question a été posée à de multiples occasions. Ici des réponses qui ont déjà été données mais tu peux en trouver beaucoup d'autres.
http://www.commentcamarche.net/forum/affich-27398079-liste-deroulante
ou
http://www.commentcamarche.net/forum/affich-27255265-requete-parametree
Je pense que tu trouveras là ce que tu cherches.
Bonne suite
0