Difference between revisions of "FR/FAQ/Base/024"

From Apache OpenOffice Wiki
< FR‎ | FAQ‎ | Base
Jump to: navigation, search
(Sans utiliser l'autopilote)
m (Assignation de catégorie)
 
(3 intermediate revisions by 3 users not shown)
Line 16: Line 16:
 
Note : vous pouvez aussi transformer un contrôle existant en une zone de liste en utilisant le menu contextuel ('''Remplacer par''' > '''Zone de liste''').
 
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  
+
Soit une table <tt>'''Client'''</tt> contenant des noms de clients (champ <tt>'''nomClient'''</tt>) et leurs clefs primaires (<tt>'''idClient'''</tt>).  
(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é.  
On veut que la zone de liste affiche la liste des noms de clients, mais que l'enregistrement porte
+
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.
sur l'idClient du client sélectionné.  
+
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'''.
Il va falloir déclarer le champ où l'enregistrement sera sauvé, associer une requête SQL à la zone
+
Entrer dans '''Champ de données''' le champ de la table à utiliser pour l'enregistrement.
de liste et paramètrer le champ de la table à utiliser pour l'affichage ainsi que celui à utiliser
+
Sélectionner '''Sql''' pour '''Type de contenu de liste'''.
pour l'enregistrement.
+
Comme '''Contenu de liste''', entrer <tt>'''SELECT nomClient, idClient FROM Client'''</tt>. Dans cette requête,  
Pour cela, afficher les propriétés de la zone de liste (dans la barre de fonctions de formulaire
+
<tt>'''nomClient'''</tt> est le premier champ retourné (indice 0) et <tt>'''idClient'''</tt> le second champ retourné (donc  d'indice 1).
flottante, cliquer sur '''Propriétés du contrôle''') et afficher l'onglet '''Données'''.
+
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 <tt>'''nomClient'''</tt>). 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.
Entrer dans '''Champ de données''' le champ de la table à utiliser pour l'enregistrement.
+
 
Sélectionner '''Sql''' pour '''Type de contenu de liste'''.
+
[[Category: FR/Documentation/FAQ/Base]]
Comme '''Contenu de liste''', entrer <tt>'''SELECT nomClient, idClient FROM Client'''</tt>. Dans cette requête,  
+
<tt>'''nomClient'''</tt> est le premier champ retourné (indice 0) et <tt>'''idClient'''</tt> 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 <tt>'''nomClient'''</tt>). 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.
+

Latest revision as of 12:55, 5 May 2009

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