Frequently asked questions - Base
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Comment implémenter une suggestion d'index ?
Lors de la saisie d'un champ on souhaite pouvoir choisir dans la liste des valeurs déjà contenues dans le champ. Dans Calc ceci est disponible pour les valeurs textuelles avec la liste de sélection (clic droit ou Alt + ↓).
On souhaite obtenir :
Base permet de réaliser cela mais uniquement dans un formulaire :
- Autrement dit, pas en saisie "directe" de table,
- Si on souhaite une saisie en mode "tableau" (feuille de données), il suffit de créer un formulaire en choisissant cette présentation dans l'assistant ; la saisie se fera alors via un contrôle "table".
Le principe sera d'utiliser un contrôle Zone combinée dont le type de contenu sera Sql et le contenu une requête du type :
SELECT DISTINCT "Instrument" FROM "Table1" ORDER BY "Instrument" ASC
Nota :
- Le mot-clé DISTINCT permet de lister sans doublons.
- La liste est ordonnée pour faciliter la recherche.
- Il est conseillé d'ajouter un index sur le champ recherché (clic sur le bouton Ébauche d'index en mode édition de table).
Ci-dessous les copies d'écran du paramétrage :
Utiliser un contrôle Zone combinée autorise la saisie de nouvelles valeurs. Ces dernières sont prises en compte instantanément dans la liste mais sont ajoutées par défaut en fin de liste jusqu'à la prochaine actualisation. On peut forcer l'actualisation en associant à l'événement A la réception du focus du contrôle, une macro du type :
option explicit Sub PysAcutaliserListe(PysEvent) PysEvent.source.model.refresh End Sub