Frequently asked questions - Base
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Dans un formulaire, comment obtenir un contrôle du formulaire qui affiche la valeur du champ d'une table et sauve la valeur d'un autre champ de cette table ?
Passez le formulaire en Mode Édition/Modification.
En utilisant le Mode Ébauche et en créant un nouveau contrôle
- Activer le Mode Ébauche en cliquant sur (Dés)activer le Mode Ébauche dans la barre de fonctions de formulaire flottante (l'icône apparaît entourée d'un carré).
- Dans cette barre de fonction, cliquer sur Zone de liste puis sélectionner l'espace à réserver à ce contrôle.
L'assistant de création de contrôle se met en route automatiquement.
En utilisant le Mode Ébauche et en remplaçant un contrôle existant (par exemple une Zone de texte)
- Activer le Mode Ébauche en cliquant sur (Dés)activer le Mode Ébauche dans la barre de fonctions de formulaire flottante.
- Transformer un contrôle existant en une zone de liste en utilisant le menu contextuel (Remplacer par > Zone de liste).
Soit une table Client
contenant des noms de clients (champ nomClient
) et leurs clefs primaires (idClient
). On veut que la zone de liste affiche la liste des noms de clients, mais que l'enregistrement porte sur l'idClient du client sélectionné. Il va falloir déclarer le champ où l'enregistrement sera sauvé, associer une requête SQL à la zone de liste et paramètrer le champ de la table à utiliser pour l'affichage ainsi que celui à utiliser pour l'enregistrement.
Pour cela, afficher les propriétés de la zone de liste (dans la barre de fonctions de formulaire flottante, cliquer sur Propriétés du contrôle) et afficher l'onglet Données.
Entrer dans Champ de données le champ de la table à utiliser pour l'enregistrement.
Sélectionner Sql pour Type de contenu de liste.
Comme Contenu de liste, entrer SELECT nomClient, idClient FROM Client
ou cliquez sur les trois petits points pour utiliser l'assistant de création de requête.
Dans cette requête, nomClient
est le premier champ retourné (indice 0) et idClient
le second champ retourné (donc d'indice 1).
La liste affichée dans la zone de liste est toujours bâtie sur le champ d'indice 0 (dans le cas présent, elle sera donc constituée des valeurs de nomClient
).
Puisque l'on veut que ce soit la valeur d'idClient (d'indice 1) qui soit enregistrée, il faut donner à Champ lié la valeur 1.