Requete sql sous vba pour liste deroulante
Blacknight
-
Blacknight58000 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Blacknight58000 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Requete sql sous vba pour liste deroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Liste code ascii - Guide
- Requête sql pix - Forum Python
4 réponses
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.
à 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.
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
docmd.runsql("INSERT INTO ....")
exécute la requête donnée entre parenthèses.
C'est ce que tu veux faire, non ?
exécute la requête donnée entre parenthèses.
C'est ce que tu veux faire, non ?
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
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
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