Requete sql sous vba pour liste deroulante

Fermé
Blacknight - 1 févr. 2010 à 05:24
Blacknight58000 Messages postés 3 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 février 2010 - 4 févr. 2010 à 05:47
Bonjour,
J'ai un petit souci au niveau d'une liste déroulante. J'ai un formulaire de 4 listes déroulantes (LD1, LD2, LD3, LD4) qui chacun d'elle m'affiche les données d'une même table que nous allons appelés Table1. J'aimerais que chaque liste déroulante affiche tous les enregistrements de Table1 SAUF ceux déjà sélectionné dans les autres liste déroulantes. Par exemple, si dans LD1, j'ai séléctionné l'enregistrement numero 1 de Table1, je veux que dans LD2, LD3 et LD4 soit disponible tous les enregistrements de Table1 sauf l'enregistrement 1 déjà sélectionné dans LD1. Je vous rassure, après pas mal de recherche, je pense avoir une piste en créant un bout de code VBA pour la partie "sur réception focus" de chaque liste. Je pense aussi qu'une requête sql s'impose. Bien que je sache faire tout cela, j'aimerais écrire l'sql directement sous vba plutot que de créer une requete indépendante. Donc ma question serait : comment intégrer de l'SQL directement sous VBA et/ou quelqu'un aurait il une meilleure idée que moi s'il vous plait? Merci de votre aide. Ca fait pas mal de temp que je planche la dessus et je bloque.

4 réponses

blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
1 févr. 2010 à 09:52
Salut,

à mon avis, il faut créer une fonction qui ira chercher les valeurs de chaque liste. Ensuite, elle générera une requête en fonction de la liste qui l'aura appelée.
0
Merci Blux pour une réponse si rapide surtout qu'il me semble que ce n'est pas la première fois que tu essaie de m'aider. Ta fonction marcherait sans problème évidemment cependant, ça serait une longue partie de code alors que si j'arrive a intégrer cette foutu ligne SQL c'est l'affaire de quelques lignes. Je vais continuer à chercher mais tout aide est la bienvenue encore. Merci
0
blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
1 févr. 2010 à 14:33
tu veux exécuter une requête en vba ?

docmd.runsql...
0
Blacknight > blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024
1 févr. 2010 à 14:34
Hum tu peux développer stp? Je connais pas cette partie....
0
blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300
1 févr. 2010 à 14:38
docmd.runsql("INSERT INTO ....")
exécute la requête donnée entre parenthèses.

C'est ce que tu veux faire, non ?
0
ouep j'essaie de suite... Merci
0
Alor j'ai une erreur 2342 qui me dit "une action exécuterSQL nécessite un argument consistant en une instruction SQL". Mais c'est déjà un début de piste
0
blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300 > Blacknight
1 févr. 2010 à 14:49
La commande runsql n'exécute que des requêtes 'action' (modifiant des données : insert, delete...)
Colle ton code, pour voir...
0
Blacknight > blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024
1 févr. 2010 à 14:54
Oui je recherche en mm temps que toi et moi c'est une requete sélection, et donc il faut visiblement le déclarer en recodset. je te donne le code kan mm ... J'en suis la pour le code :

Private Sub SF_idact2_GotFocus()
Dim RQT As String
RQT = "SELECT T_VT_ACTEUR.IDact, T_VT_ACTEUR.Nomact, T_VT_ACTEUR.PreAct "
RQT = RQT & "FROM T_VT_ACTEUR "
RQT = RQT & " where sf_idact1<>T_VT_ACTEUR.IDact ORDER BY [Nomact], [PreAct]"
DoCmd.RunSQL RQT
End Sub
0
blux Messages postés 26299 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 septembre 2024 3 300 > Blacknight
1 févr. 2010 à 14:59
Tu veux faire une requête sélection, ok, mais que veux-tu faire du résultat ?
0
Blacknight58000 Messages postés 3 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 février 2010
4 févr. 2010 à 05:47
Bonsoir, bon alors après de longues recherches, j'ai opté pour une solution moins lourdes e qui me conviens tout à fait. J'ai commencé par mettre en contenu de chaque liste deroulante, le contenu de la table concerné moins le contenu des listes précédentes. Ensuite, a chaque changement d'enregistrement par liste déroulante, les autres se mettent à jours grace a un ptit bout de code VBA du style Me!liste déroulante précédentes.requery. Je te remercie de ton aide blux. Cependant, maintenant j'ai un souci d'intégration pour ces fameuses listes. Mais je vais ouvrir un autre sujet... Merci de ton aide
0