Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1227 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Access] Liste déroulante à partir d'une fonction (syntaxe)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Access] Liste déroulante à partir d'une fonction (syntaxe)

n°1484368
Peanuty
Posté le 30-11-2006 à 15:20:42  profilanswer
 

Bonjour,
 
je souhaite créer une liste déroulante à partir de données fournies par une fonction (qui devra ramener des données d'une table Oracle non attachée).
 
- Quels sont les champs à remplir dans l'onglet "Données" de la "zone de liste modifiable" ?
(j'ai rien mis dans Source contrôle ni Origine Source et j'ai indiqué le nom de ma fonction sans "=" ni "( )" dans Contenu, c'est bon ?)
 
- Et surtout à quoi doit ressembler la fonction (paramètres ? valeurs à renseigner ? ...)
Je n'arrive pas à trouver d'exemple sur le net.  :(

mood
Publicité
Posté le 30-11-2006 à 15:20:42  profilanswer
 

n°1484413
Peanuty
Posté le 30-11-2006 à 15:57:58  profilanswer
 

Bon, contrairement à ce que j'avais lu qqpart, c'est plutôt dans Source contrôle qu'il faut indiquer le nom de la fonction (et avec un "=" et des "( )" ), puisque comme ça j'ai des choses qui s'affichent dans ma liste déroulante.
Maintenant, reste à connaître la syntaxe pour renseigner cette fonction.  :sweat:  
 
Je ne comprends vraiment pas le sens de Source contrôle et de Origine source, c'est quoi la différence ?  :??:

n°1485957
Peanuty
Posté le 04-12-2006 à 11:42:18  profilanswer
 

up !
Qui peut m'indiquer la syntaxe VBA pour remplir une liste déroulante (ils appellent ça une "zone de liste" ) sous Access 97 ?
Ca, ça ne marche pas :

Code :
  1. Function RemplirListe()
  2.     ...
  3.     Set rstTemp = conPubs.OpenRecordset("SELECT...", dbOpenDynamic)
  4.     With rstTemp
  5.         Do While Not rstTemp.EOF
  6.             MsgBox rstTemp.Fields("ID_SYS" )  <= OK
  7.             Me.Modifiable13.Items.Add (rstTemp.Fields("ID_SYS" ))  <= KO !!! (avec ou sans Me)
  8.             rstTemp.MoveNext
  9.         Loop
  10.     End With
  11. End Function


 
Et sur quel évènement lancer la fonction RemplirListe() ? Il n'y a pas un truc genre OnLoad ? (pour le moment j'ai mis sur "Sur Clic" )

n°1486005
Peanuty
Posté le 04-12-2006 à 12:34:16  profilanswer
 

J'ai remplacé

Code :
  1. Me.Modifiable13.Items.Add (rstTemp.Fields("ID_SYS" ))


par

Code :
  1. Forms![Formulaire1]!Modifiable13.RowSource = Forms![Formulaire1]!Modifiable13.RowSource & ";" & rstTemp("ID_SYS" )
  2. Forms![Formulaire1]!Modifiable13.Requery


Ca a l'air de fonctionner, mais ça ne me paraît pas très simple, il y a sûrement mieux ?
 
J'aimerais bien savoir où trouver la syntaxe à part chercher en tâtonnant.  :??: J'ai trouvé des tonnes de doncs basiques pour baser des formulaires sur des tables mais quand il s'agit de gérer ça dans du code VBA il n'y a pas grand chose.  :(  
 
Et ma question "Et sur quel évènement lancer la fonction RemplirListe() ? Il n'y a pas un truc genre OnLoad ? (pour le moment j'ai mis sur "Sur Clic" )" est toujours d'actualité.  ;)

n°1486111
tegu
Posté le 04-12-2006 à 15:18:50  profilanswer
 

Récapitulons.
Pour une combobox (liste déroulante), on a les propriétés suivantes :
- Source contrôle (.ControlSource) = nom du champ de table qui sera mis à jour quand tu vas sélectionner ta valeurs dans la liste (ne sert que si ton formulaire est lié à une table)
- Origine source (.RowSourceType) = nature du contenu de ta liste (Table/Requête, valeurs fixes « en dur » ou encore une liste de champs d'une table). Cette propriété permet d'interpréter correctement la propriété Contenu.
- Contenu (.RowSource) = nom d'une table ou d'une requête existante dans MSAccess ou requête SQL écrite explicitement. Les données récupérées servent à remplir la liste.
Et la propriété .Value = valeur dépendante de la colonne liée (= .BoundColumn) et du choix sélectionné dans la liste.
 
Logiquement, chaque fois que tu changes la propriété RowSource, une mise à jour de l'affichage de la liste (son contenu) doit se faire.
S'il ne se fait pas, il faut utiliser .Requery.
 
Dans le cas de l'utilisation d'une fonction de remplissage, elle ne doit pas apparaître dans les propriétés .RowSource ou .SourceControl.
Ta fonction doit être lancée au chargement du formulaire (Form_Load) ou chaque fois que nécessaire (changement de contenu dans conPubs ?).
Si ton formulaire n'est lié à aucune table, .ControlSource doit être vide.
 
J'ai pas trop le temps de détailler mais j'espère t'avoir un peu éclairé.

n°1486560
Peanuty
Posté le 05-12-2006 à 11:48:34  profilanswer
 

Merci déjà pour ces infos utiles.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Access] Liste déroulante à partir d'une fonction (syntaxe)

 

Sujets relatifs
liste des nbres premiers inferieurs a un nbre donné[Access] Différence de vitesse INNER JOIN et 2 requetes imbriquées?
[VB Access]Supprimer un élément d'un textboxproblème de 'quote' dan sune syntaxe XML
[VBA - Excel] - RESOLU - Erreur de focus sur fonction "simple"Problème de connexion a une base de donnée VBA Access
Comment avoir en ksh la liste des elements d'une colonne[PHP] Traitement liste choix multiples
[ socket ] Récupérer un autre Buffer de la fonction recv()modifier des champs de texte à partir d'un formulaire
Plus de sujets relatifs à : [Access] Liste déroulante à partir d'une fonction (syntaxe)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR