FR/FAQ/Base/024

From Apache OpenOffice Wiki
< FR‎ | FAQ‎ | Base(Redirected from Fr.openoffice.org/FAQ/Base/024)
Jump to: navigation, search

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 ?

En utilisant l'autopilote et en créant un nouveau contrôle

Activer l'autopilote en cliquant sur (Dés)activer les AutoPilotes dans la barre de fonctions de formulaire flottante (l'icône apparaît entouré d'un carré).

Dans cette barre de fonction, cliquer sur Zone de liste puis sélectionner l'espace à réserver à ce contrôle. L'autopilote se met en route automatiquement.


Sans utiliser l'autopilote

  • Désactiver l'auto-pilote ;-) en cliquant sur (Dés)activer les AutoPilotes dans la barre de fonctions de formulaire flottante.
  • Créer une "Zone de liste" (cliquer sur Zone de liste dans la barre de fonctions de formulaire flottante) puis sélectionner l'espace à réserver à ce contrôle.

Note : vous pouvez aussi 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. 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.

Personal tools