Bonjour,
Par défaut la combo (resp le champ table) renvoie le n° de ligne de l'élément sélectionné. Ainsi :
1 2
|
ValCombo=COMBO_MaCombo |
et
1 2
|
ValCombo=ListeSelect(COMBO_MaCombo) |
sont équivalents. Il en va de même pour :
1 2
|
ValTable=TABLE_MaTable |
et
1 2
|
ValTable=TableSelect(TABLE_MaTable) |
Dans le suite on utilisera la table Client utilisant les données suivantes :
N° ligne |
PK_Client |
NDX_NomClient |
1 |
7 |
Tata |
2 |
1 |
Toto |
3 |
12 |
Tutu |
Dans une combo, le fait de cocher gLien ne fonctionne que si l'on rempli la combo par programmation en utilisant gLien (
ATTENTION la valeur renvoyée est une chaîne)e.g.
1 2 3 4
|
POUR TOUT Client
ListeAjoute(COMBO_Client,Client.NDX_NomClient+gLien(Client.PK_Client))
FIN |
Avec le code de sélection suivant :
1 2 3 4 5 6
|
nIndCombo est entier
pkClient est entier sur 8
nIndCombo=ListeSelect(COMBO_Client)
pkClient=Val(COMBO_CLient) |
Si l'on sélectionne "Toto", nIndCombo vaudra 2 et pkClient vaudra 1.
Remarque à partir de la v27 gLien est remplacée par gValeurMémorisée.
Dans le cas d'une combo (resp d'un champ table) alimentée par une table, on a la possibilité (dans l'onglet contenu) de sélectionner la rubrique mémorisée (dans notre cas la PK,) i.e. la valeur renvoyée, qui sera du même type que celle de la rubrique.
Ainsi avec le code de sélection suivant
1 2 3 4 5 6
|
nIndCombo est entier
pkClient est entier sur 8
nIndCombo=ListeSelect(COMBO_Client)
pkClient=COMBO_CLient |
La sélection de "Toto" affectera 2 à nIndCombo et 1 à pkClient.
Si la rubrique sélectionnée est NDX_NomClient, COMBO_Client renverra "Toto"
Remarque
On peut avoir le même comportement par programmation
1 2 3 4 5
|
COMBO_Client..LiaisonFichier="Client"
COMBO_Client..RubriqueAffichée="NDX_Client"
COMBO_Client..RubriqueParcourue="NDX_Client"
COMBO_CLient..RubriqueMémorisée="PK_Client" |
Exemple d'utilisation: Champ table lié à une combo
On veut afficher les commandes d'un client qui sera sélectionné dans une combo (resp un champ table)
COMBO_Client (resp TABLE_Client) sera alimentée par la table CLIENT avec pour Rubrique mémorisée PK_CLient et comme rubrique affichée NDX_NomClient (événtuellemnt triée sur NDX_Client via Rubrique parcourue)
TABLE_Commande sera alimentée par la requête (REQ_CommandesClient), aura pour rubrique mémorisée PK_Commande et comme colonnes : NoCOmmande, DateCommande, TotalCommande
1 2 3 4 5 6 7 8 9 10
|
SELECT
PK_Commande,
AK_NoCommande AS NoCommande,
NDX_DateCommande AS DateCommande,
TotalCommande
FROM
Commande
WHERE
FK_Client={pClient} |
Pour synchroniser le client et ses commandes, il suffira de coder la sélection d'une ligne de COMBO_Client comme suit :
1 2 3
|
REQ_CommandesClient.pClient=COMBO_Client
TableAffiche(TABLE_Commandes,taRéExécuteRequête) |
Rq
TABLE_Commande renvoie PK_Commande, cela pourra être utilisé pour passer la commande en paramêtre à la FI qui
affichera le détail d'une ligne, mais ça, c'est une autre histoire
Partager