Probleme de requete ACCESS
emmadu31
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
willou-78 Messages postés 68 Statut Membre -
willou-78 Messages postés 68 Statut Membre -
Bonjour,
Je souhaiterais apartir d'une requete sous access, dans un formulaire effectuer un tri multiple, je m'explique
le resultat de ma requete me donne une liste de machine, avec categorie, marque, model, accessoire,
je souhaiterer de cette liste pouvoir afficher certaine information en cascade,
par exemple, apres avoir choisit une categorie, n'avoir que les machine de cette categorie a l'ecran, ensuite choir une marque a partir du resultat precedant, et n'avoir que celle ci, etc...
merci de me guider un peux dans cette demarche
Je souhaiterais apartir d'une requete sous access, dans un formulaire effectuer un tri multiple, je m'explique
le resultat de ma requete me donne une liste de machine, avec categorie, marque, model, accessoire,
je souhaiterer de cette liste pouvoir afficher certaine information en cascade,
par exemple, apres avoir choisit une categorie, n'avoir que les machine de cette categorie a l'ecran, ensuite choir une marque a partir du resultat precedant, et n'avoir que celle ci, etc...
merci de me guider un peux dans cette demarche
A voir également:
- Probleme de requete ACCESS
- Access appdata - Guide
- Acer quick access - Forum logiciel systeme
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Requête sql pix - Forum Python
14 réponses
Bonsoir,
J'ai en tête une piste qui consiste à enchaîner des filtres filtres successifs pour parvenir au résultat recherché.
Évènement sur click dans le champ du formulaire à filtrer
Rem filtre sur valeur
Me.Filter = ("[Valeur]= " & Me!Valeur)
Me.FilterOn = True 'Applique le filtre
Rem filtre sur statut + Opération
Me.Filter = "Statut ='En cours' and Opération ='Achat'"
Me.FilterOn = True 'Applique le filtre
Je ne suis pas sûr de moi, mais il me semble que c'est jouable.
Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
J'ai en tête une piste qui consiste à enchaîner des filtres filtres successifs pour parvenir au résultat recherché.
Évènement sur click dans le champ du formulaire à filtrer
Rem filtre sur valeur
Me.Filter = ("[Valeur]= " & Me!Valeur)
Me.FilterOn = True 'Applique le filtre
Rem filtre sur statut + Opération
Me.Filter = "Statut ='En cours' and Opération ='Achat'"
Me.FilterOn = True 'Applique le filtre
Je ne suis pas sûr de moi, mais il me semble que c'est jouable.
Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Est ce que ça a répondu à ta question? J'ai une autre chose à te proposer, mais si la première te convient je ne veux pas t'embrouiller les idées...
Bonjour Lately GEEK,
Ne sois pas timide, je suis preneur et impatient de connaître ton grand secret ...
Par défau, j'ai documenté la solution des filtres en cascade, mais je n'hésiterais pas
à changer de monture si la tienne est meilleure
Merci d'avance
A+
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Ne sois pas timide, je suis preneur et impatient de connaître ton grand secret ...
Par défau, j'ai documenté la solution des filtres en cascade, mais je n'hésiterais pas
à changer de monture si la tienne est meilleure
Merci d'avance
A+
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Bonsoir,
en fait je cherche plutot a avoir une forme sur menu deroulant, c'est a dire :
5 menus deroulant en en tete de formulaire qui se nomme ainsi :
categorie
sous categorie
marque
modele
position designation
(ceux ci etant des champs d'une meme tables corespondante au formulaire crée)
et donc filtrer avec de evenements apres mise a jour, soit apres avoir choisit une categire, puis une sous catégorie, une marque et un model n'avoir que les element corespondant au reste donc, dans la liste restante de mon formulaire, le model et les "position designation" et je doit dire que je suis réelement perdu, j'acorde que le projet est un peux ambicieux pour un novice comme moi, mais l'ensembles des outils restant que j'ai effectué coresponde bien a moi besoin, il ne me manque que ca ...
Merci pour votre aide
en fait je cherche plutot a avoir une forme sur menu deroulant, c'est a dire :
5 menus deroulant en en tete de formulaire qui se nomme ainsi :
categorie
sous categorie
marque
modele
position designation
(ceux ci etant des champs d'une meme tables corespondante au formulaire crée)
et donc filtrer avec de evenements apres mise a jour, soit apres avoir choisit une categire, puis une sous catégorie, une marque et un model n'avoir que les element corespondant au reste donc, dans la liste restante de mon formulaire, le model et les "position designation" et je doit dire que je suis réelement perdu, j'acorde que le projet est un peux ambicieux pour un novice comme moi, mais l'ensembles des outils restant que j'ai effectué coresponde bien a moi besoin, il ne me manque que ca ...
Merci pour votre aide
Bonjour, j'ai surement la réponde mais j'ai d'abord des question.
Est ce que lorsque tu asir séctionné les 5 listes déroulants, ça doit te retourner un ou plusieurs résultats?
Le résultat s'afffiche dans une requête, un état ou un formulaire?
Est ce que lorsque tu asir séctionné les 5 listes déroulants, ça doit te retourner un ou plusieurs résultats?
Le résultat s'afffiche dans une requête, un état ou un formulaire?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon, j'interviens juste pour dire ce que je crois avoir compris.
On dit qu'on est dans un formulaire que j'appelle FParamètres.
Première liste déroulante:
Elle extrait la liste des catégories, donc elle est basée sur une requête qui contient juste le champ catégorie, avec un regroupement.
Je l'appelle ChoixCatégorie
La deuxième liste déroulante doit contenir les sous-catégories correspondant à la catégorie choisie dans ChoixCatégorie, right?
Elle est basée sur une requête qui contient deux champs, Catégorie et SousCatégorie, le champ Catégorie étant masqué et ayant un critère libellé comme suit:
Forms!FParamètres!ChoixCatégorie.
Je l'appelle ChoixSousCatégorie
La troisième liste déroulante doit contenir les marques correspondant à la sous-catégorie choisie dans ChoixSousCatégorie.
Elle est basée sur une requête qui contient deux champs, SousCatégorie et Marque, le champ SousCatégorie étant masqué et ayant un critère libellé comme suit:
Forms!FParamètres!ChoixSousCatégorie.
Etc etc etc...
Il ne reste qu'une chose à faire: Faire en sorte que chaque liste déroulante soit mise à jour à chaque changement dans celle qui la précède.
Sur le propriété AprèsMAJ de ChoixCatégorie, on écrira dans une procédure évenementielle:
DoCmd.Requery ("ChoixSousCatégorie")
Etc etc etc...
On dit qu'on est dans un formulaire que j'appelle FParamètres.
Première liste déroulante:
Elle extrait la liste des catégories, donc elle est basée sur une requête qui contient juste le champ catégorie, avec un regroupement.
Je l'appelle ChoixCatégorie
La deuxième liste déroulante doit contenir les sous-catégories correspondant à la catégorie choisie dans ChoixCatégorie, right?
Elle est basée sur une requête qui contient deux champs, Catégorie et SousCatégorie, le champ Catégorie étant masqué et ayant un critère libellé comme suit:
Forms!FParamètres!ChoixCatégorie.
Je l'appelle ChoixSousCatégorie
La troisième liste déroulante doit contenir les marques correspondant à la sous-catégorie choisie dans ChoixSousCatégorie.
Elle est basée sur une requête qui contient deux champs, SousCatégorie et Marque, le champ SousCatégorie étant masqué et ayant un critère libellé comme suit:
Forms!FParamètres!ChoixSousCatégorie.
Etc etc etc...
Il ne reste qu'une chose à faire: Faire en sorte que chaque liste déroulante soit mise à jour à chaque changement dans celle qui la précède.
Sur le propriété AprèsMAJ de ChoixCatégorie, on écrira dans une procédure évenementielle:
DoCmd.Requery ("ChoixSousCatégorie")
Etc etc etc...
Merci pour toutes ces infos, effectivement votre description corespond bien a mon besoin,
par contre juste quelque petit détail
le formulaire que l'on appel donc FParametre est l'image d'une tables qui se nomme "t_tarifgeneral", contenant pour chaque enregistrement, un champ categorie, un champ souscategorie, un champs marque, un champs model ...
je sait que ce n'est pas tres academique, mais c'est ainsi pour le moment.
sur mon formulaire qui a été crée a partir de l'assistant depuis cette table, je retrouve donc tous mes enregistrements, et effectivement en en tete de formulaire j'ai fait 5 menu déroulant, ayant chacun comme source de control leurs champs respectif, avec effectivement la cléf primaire qui est caché dans la liste, sauf qu'a ce jour la seule chose que font mes menu c'est me montrer les elements du champ, et apres selection il ne se passe rien puisque je n'est pas fait de procedur evenementielle apres MAJ.
Donc dois je faire des requete ou est ce que je peux exploiter directement a partir de ma table ?
peux etre avec une procedure evenementiel sur un bouton qui lirais les choix de mes menu deroulant et afficherai le resultat, j'ai vus quelque chose de similaire dans une base mais ca me depasse aussi
Merci
par contre juste quelque petit détail
le formulaire que l'on appel donc FParametre est l'image d'une tables qui se nomme "t_tarifgeneral", contenant pour chaque enregistrement, un champ categorie, un champ souscategorie, un champs marque, un champs model ...
je sait que ce n'est pas tres academique, mais c'est ainsi pour le moment.
sur mon formulaire qui a été crée a partir de l'assistant depuis cette table, je retrouve donc tous mes enregistrements, et effectivement en en tete de formulaire j'ai fait 5 menu déroulant, ayant chacun comme source de control leurs champs respectif, avec effectivement la cléf primaire qui est caché dans la liste, sauf qu'a ce jour la seule chose que font mes menu c'est me montrer les elements du champ, et apres selection il ne se passe rien puisque je n'est pas fait de procedur evenementielle apres MAJ.
Donc dois je faire des requete ou est ce que je peux exploiter directement a partir de ma table ?
peux etre avec une procedure evenementiel sur un bouton qui lirais les choix de mes menu deroulant et afficherai le resultat, j'ai vus quelque chose de similaire dans une base mais ca me depasse aussi
Merci
Bonjour,
tu n'es pu très loin de la fin. Il suffit maintenant que sur le clic du bouton, tu mettes en place une requête dans le VBA qui sélectionne l'enregistrement de la clé primaire dont les 5 critères sont les 5 listes et qui te balance le formulaire.
C'est un exemple ;)
tu n'es pu très loin de la fin. Il suffit maintenant que sur le clic du bouton, tu mettes en place une requête dans le VBA qui sélectionne l'enregistrement de la clé primaire dont les 5 critères sont les 5 listes et qui te balance le formulaire.
Private Sub bt_Click()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Formulaire"
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT CléPrim FROM table WHERE ([Table.Champs1] = '" & Choix1 & "') AND ([Table.Champs2] = '" & Choix2 & "') AND ([Table.Champs3] = '" & Choix3 & "') AND ([Table.Champs4] = '" & Choix4 & "') AND ([Table.Champs5] = '" & Choix5 & "') ;")
stLinkCriteria = "Clé=" & res!CléPrim
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
C'est un exemple ;)
Bonjour,
j'ai essayé d'utiliser ce code sur un bouton, mais j'obtien une erreur :
poiur info, et pour simplifier mon test, les menu déroulant se nomme de "choix1 a "choix5"
et Cléprim par le nom de mon champ de clef primaire soit : "numero"
et ensuite j'ai remplacé table par le nom de ma table et champ 1 à 5 par les nom de champ respectif corespondant au bouton nommé choix 1 à 5 .
j'obtient le message suivant :
erreur 3131
erreur de syntaxe dans la clause FROM,
a l'ouverture du debogeur le code est ainsi :
Private Sub Commande25_Click()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "f_tarifgeneral"
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT Numero FROM table WHERE ([tarifgeneral.categorie] = '" & Choix1 & "') AND ([tarifgeneral.souscat] = '" & Choix2 & "') AND ([tarifgeneral.marque] = '" & Choix3 & "') AND ([tarifgeneral.model] = '" & Choix4 & "') AND ([tarifgeneral.positiondésignation] = '" & Choix5 & "') ;")
stLinkCriteria = "Clé=" & res!Numero
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
qu'ai je oublié ?
merci d'avance
j'ai essayé d'utiliser ce code sur un bouton, mais j'obtien une erreur :
poiur info, et pour simplifier mon test, les menu déroulant se nomme de "choix1 a "choix5"
et Cléprim par le nom de mon champ de clef primaire soit : "numero"
et ensuite j'ai remplacé table par le nom de ma table et champ 1 à 5 par les nom de champ respectif corespondant au bouton nommé choix 1 à 5 .
j'obtient le message suivant :
erreur 3131
erreur de syntaxe dans la clause FROM,
a l'ouverture du debogeur le code est ainsi :
Private Sub Commande25_Click()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "f_tarifgeneral"
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT Numero FROM table WHERE ([tarifgeneral.categorie] = '" & Choix1 & "') AND ([tarifgeneral.souscat] = '" & Choix2 & "') AND ([tarifgeneral.marque] = '" & Choix3 & "') AND ([tarifgeneral.model] = '" & Choix4 & "') AND ([tarifgeneral.positiondésignation] = '" & Choix5 & "') ;")
stLinkCriteria = "Clé=" & res!Numero
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
qu'ai je oublié ?
merci d'avance
Bonjour,
Affiche à chaque fois ton code pour que je puisse voir d'ou ça vient.
Affiche à chaque fois ton code pour que je puisse voir d'ou ça vient.
Bonjour,
le code est :
Private Sub Commande25_Click()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "f_tarifgeneral"
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT Numero FROM tarifgeneral WHERE ([tarifgeneral.categorie] = '" & choix1 & "') AND ([tarifgeneral.souscat] = '" & choix2 & "') AND ([tarifgeneral.marque] = '" & choix3 & "') AND ([tarifgeneral.modele] = '" & choix4 & "') AND ([tarifgeneral.positiondésignation] = '" & choix5 & "') ;")
stLinkCriteria = "clé=" & res!Numero
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
la ligne surligné a l"execution du message d'erreur est celle en gras
le code est :
Private Sub Commande25_Click()
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "f_tarifgeneral"
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT Numero FROM tarifgeneral WHERE ([tarifgeneral.categorie] = '" & choix1 & "') AND ([tarifgeneral.souscat] = '" & choix2 & "') AND ([tarifgeneral.marque] = '" & choix3 & "') AND ([tarifgeneral.modele] = '" & choix4 & "') AND ([tarifgeneral.positiondésignation] = '" & choix5 & "') ;")
stLinkCriteria = "clé=" & res!Numero
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
la ligne surligné a l"execution du message d'erreur est celle en gras
Ton champs s'appelle "Clé" ??
Celui-là aussi est a adapté !
Celui-là aussi est a adapté !
j'ai bien bien fit les modif suivantes :
le code exemple que tu m'a donné est :
stLinkCriteria = "Clé=" & res!CléPrim
mon champ clé (ma clé primaire) se nomme : Numero
j'ai donc ecrit :
stLinkCriteria = "Numero=" & res!NumeroPrim
j'ai meme fait ces variante, ne sachant pas exactement la syntaxe :
stLinkCriteria = "Numero=" & res!CléPrim
et
stLinkCriteria = "Numero=" & res!Numero
et rien n'y fait
le code exemple que tu m'a donné est :
stLinkCriteria = "Clé=" & res!CléPrim
mon champ clé (ma clé primaire) se nomme : Numero
j'ai donc ecrit :
stLinkCriteria = "Numero=" & res!NumeroPrim
j'ai meme fait ces variante, ne sachant pas exactement la syntaxe :
stLinkCriteria = "Numero=" & res!CléPrim
et
stLinkCriteria = "Numero=" & res!Numero
et rien n'y fait
Vas dans ton formualaire. Vas dans les propriétés du champs représentant la clé primaire.
Dans "Autre" donne mois son nom Exact!
Dans "Autre" donne mois son nom Exact!
dans les propriétés du champ dans mon formulaire, sur l'onglet "autre", sont nom exact est :
"Numero"
imprim ecran dispo ici
http://pierquet.kasto.free.fr/impecr.JPG
"Numero"
imprim ecran dispo ici
http://pierquet.kasto.free.fr/impecr.JPG
Ahhhh !
Fallait dire que c'était dans le même formulaire. Ca se complique du coup, je ne pense ne pas avoir la solution.
Le StlinkCriteria ne fonctionne il me semble que d'un formulaire à un autre.
Sinon la réponse aurait été ça:
stLinkCriteria = "Numero=" & res!Numero
Au pire essaie:
DoCmd.OpenClose
stLinkCriteria = "Numero=" & res!Numero
Mais c'est du gros bricolage, le mieux étant de faire deux formulaire indépendant.
Fallait dire que c'était dans le même formulaire. Ca se complique du coup, je ne pense ne pas avoir la solution.
Le StlinkCriteria ne fonctionne il me semble que d'un formulaire à un autre.
Sinon la réponse aurait été ça:
stLinkCriteria = "Numero=" & res!Numero
Au pire essaie:
DoCmd.OpenClose
stLinkCriteria = "Numero=" & res!Numero
Mais c'est du gros bricolage, le mieux étant de faire deux formulaire indépendant.
c'est a dire ?
1formulaire indepandant avec mes menu de control et la procedure sur le bouton,
et un formulaire avec les donnée, inséré comme sous formulaire dans le premier, ex :
table : tarifgeneral
form1 : f_tarifgeneral
form2 : f_selection
f_selection contient les bouons de filtrage, qui pointe le formulaire f_tarif general ?
et comment et ou est ce que j'affiche mes resultat ?
merci
1formulaire indepandant avec mes menu de control et la procedure sur le bouton,
et un formulaire avec les donnée, inséré comme sous formulaire dans le premier, ex :
table : tarifgeneral
form1 : f_tarifgeneral
form2 : f_selection
f_selection contient les bouons de filtrage, qui pointe le formulaire f_tarif general ?
et comment et ou est ce que j'affiche mes resultat ?
merci
Exactement.
Le 1er formulaire possède les 5 listes (basées sur requête et table) puis le bouton.
Le 2eme formulaire contient tous les enregistrements de la table (avec formulaire, sous-formulaire ..etc) si on l'ouvre via la base. Mais possède que certains enregistrements si on l'ouvre via le 1er formulaire.
Le 1er formulaire possède les 5 listes (basées sur requête et table) puis le bouton.
Le 2eme formulaire contient tous les enregistrements de la table (avec formulaire, sous-formulaire ..etc) si on l'ouvre via la base. Mais possède que certains enregistrements si on l'ouvre via le 1er formulaire.
ok,
je vais essayer de mettre ca en place, et je donne de mes nouvelles des que c'est organisé, et que ca marche !!!
merci
je vais essayer de mettre ca en place, et je donne de mes nouvelles des que c'est organisé, et que ca marche !!!
merci
Bonjour,
Moi aussi, je suis interessé par ce genre de requette. La seule façon dont j'y arrive, est d'ouvrir un nouveau formulaire avec les enregistrement correspondant au choix, dans une liste normal ou déroulante.
Dans le cas d'une gestion de parque informatique.
dans un formulaire de type "feuille de donnée", je voudrais attribuer une liste de matériel (lecteur DVD, carte vidéo, carte son, carte mer...), marque et référence, à un PC, sachant que les marque son dépendantes des composants et le réference, dépendantes des marque. Par exemple
(1) dans la premiere liste déroulante, je selectionne : carte vidéo
(2) dans la seconde liste, je ne veux que les marque: NVIDIA, ATI, SIS...
(3) etc.....
(1) dans la première liste déroulante, je selectionne : carte son
(2) dans la seconde liste, je ne veux que les marque: CREATIVE, REALTEK...
(3) etc...
est ce la même demande que emmadu31 ? si non, est ce possible ?
Merci
Moi aussi, je suis interessé par ce genre de requette. La seule façon dont j'y arrive, est d'ouvrir un nouveau formulaire avec les enregistrement correspondant au choix, dans une liste normal ou déroulante.
Dans le cas d'une gestion de parque informatique.
dans un formulaire de type "feuille de donnée", je voudrais attribuer une liste de matériel (lecteur DVD, carte vidéo, carte son, carte mer...), marque et référence, à un PC, sachant que les marque son dépendantes des composants et le réference, dépendantes des marque. Par exemple
(1) dans la premiere liste déroulante, je selectionne : carte vidéo
(2) dans la seconde liste, je ne veux que les marque: NVIDIA, ATI, SIS...
(3) etc.....
(1) dans la première liste déroulante, je selectionne : carte son
(2) dans la seconde liste, je ne veux que les marque: CREATIVE, REALTEK...
(3) etc...
est ce la même demande que emmadu31 ? si non, est ce possible ?
Merci