Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2010, 15h41   #1
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
Par défaut Erreur lors de 'ajout de --tous-- dans une liste deroulante

Bonjour,

je souhaite créer une requête qui m'affiche --tous-- dans ma liste déroulante
donc ça j'ai réussit à partir d'ici>>http://access.developpez.com/faq/?pa...l#AjoutTousLst

Par contre lorsque j'affiche mon formulaire et que j'utilise cette fonction j'ai cette erreur de access :

"Cette erreur se produit lorsqu'un événement ne peut pas être exécuté parce que Microsoft Office Access ne peut pas détecter l'emplacement de la logique correspondante. Par exemple, si la propriété OnOpen d'un formulaire est définie sur la valeur =[Field], cette erreur se produit car Access s'attend à ce qu'un nom de macro ou d'événement soit exécuté lors du déclenchement de l'événement."

j'ai utilisé une fonction Me.XXXX.Requery sur cette liste déroulante, je pense que le problème vient de là et le fait qu'il ne sait pas quoi faire avec ce --tous--
je pense que je devrais intégrer cette valeur --tous-- dans une function mais comment??

merci de votre aide
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 07h33   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Quelle est la source de la liste déroulante ?
Si c'est une requête, l'executer pour en connaitre le résultat.
Combien de champs sont affichés ?
Pour ajouter une valeur permanente, faire une requete UNION
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 10h32   #3
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
salut

oui c'est une requête et j'ai bien réaliser une union pour avoir --tous-- sur le résultat de cette requête, cette partie marche.

Mais lorsque j'essaye sur le formulaire cela ne marche pas. (cf message d'erreur sur mon message précédent)

en fait j'ai deux listes déroulante dont la deuxième se met à jour en fonction de la première. Lorsque je sélectionne --tous-- la deuxième reste vide mais Access ne comprend pas ce que je veut car il ne lance pas la requête sur toutes les infos. Je pense qu'il me manque quelque chose dans le code mais je ne sais pas quoi!
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 23h20   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 204
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 204
Points : 5 254
Points : 5 254
Salut,

Essaie de mettre sur la propriété contenu de la 2ème zone de liste le code sql:

Code sql :
SELECT * FROM TaTable WHERE Champ1 LIKE iif(Forms!TonFormulaire!Liste1="[Tous]","*",Forms!TonFormulaire!Liste1);


TaTable désigne la table ou requête source de ta deuxième Liste.

Champ1 désigne le champ de la table source contenant les valeurs à afficher dans la liste2.

TonFormulaire désigne ton formulaire contenant tes listes.

et Liste1 désigne la 1ère liste contenant "[Tous]" entre autre...

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 10h20   #5
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
merci de ton aide user,

j'ai essayé ta requête mais cela ne marche pas peut être que je m'y prends mal!!

ma 2ème liste est aussi basé sur une requête écrite sur contenu

j'ai 3 table en relation

Code :
1
2
3
4
SELECT table2.cd_hab, table2.lb_hab
FROM table2 INNER JOIN (table3 INNER JOIN table1 ON table3.CD_NOM = table1.CD_NOM) ON table2.CD_HAB = table3.CD_HAB
WHERE (((table1.LB_NOM)=[Forms]![Formulaire_Generale]![liste1_box])) LIKE iif(Forms!Formulaire_Generale!liste1_box="[Tous]","*",Forms!Formulaire_Generale!liste1_box);
j'ai donc collé la fin de code(à partir de iif) et il me donne une erreur "sur opérateur" correspondant à la partie souligné en rouge??

je vais essayer d'être clair :

Sur cette deuxième liste j'ai aussi créée un bouton qui me permet de rechercher toutes les infos correspondant à la sélection de ma 1ère liste

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Private Sub liste2_Change()
Dim esp As String           'declarer la liste deroulante relative a l'espèce
Dim hab As String          'declarer  la liste deroulante relative a l'habitat
Dim sSql As String       'declarer la requete
 
esp = Me.liste1_box.Value
hab = Me.liste2_box.Column(1)
 
Me.Form.RecordSource = ""
DoCmd.SetWarnings False
 
sSql = "SELECT ...
" FROM ...
" WHERE ...
 
 
DoCmd.RunSQL sSql
 
DoCmd.SetWarnings True
 
Debug.Print sSql
Me.Form.RecordSource = "tbl_globale"
'Me.Form.RecordSource = sSql
Me.Form.Requery
serait il plus simple de réaliser un iif à l'intérieur de ce code???, j'ai essayé mais sans résultat non plus!!

il y a une chose que je ne comprend pas dans ton sql, c'est à quoi doit correpondre "*"?
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h48   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 204
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 204
Points : 5 254
Points : 5 254
Salut,

Dans le contenu de la 2ème liste essaie de mettre :

Code sql :
1
2
3
SELECT table2.cd_hab, table2.lb_hab
FROM table2 INNER JOIN (table3 INNER JOIN table1 ON table3.CD_NOM = table1.CD_NOM) ON table2.CD_HAB = table3.CD_HAB
WHERE (((table1.LB_NOM) LIKE iif(Forms!Formulaire_Generale!liste1_box="[Tous]","*",Forms!Formulaire_Generale!liste1_box)));

et sur clic de la première liste tu mets le code :

Code :
1
2
3
4
Private Sub liste1_box_Click()
Me.liste2_box.Requery
 
End Sub
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h20   #7
Membre à l'essai
 
Inscription : mars 2006
Messages : 126
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 126
Points : 22
Points : 22
ok merci de ton aide

J'ai réussi à faire marcher mon code en introduisant une condition if then else sur ma requête et tout se passe bien
bernards111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h21.


 
 
 
 
Partenaires

Hébergement Web