Bonjour !
J'ai un problème avec le databinding de Windev 18.
Dans une fenêtre (FEN_Personnes) de gestion de personnes, j'ai quatre champs :
- un champ de saisie (SAI_Nom) : nom de la personne ;
- une combo (CMB_TypesPersonne) : type de personne ;
- un bouton (BTN_Enregistrer) : enregistrer la personne ;
- une table (TBL_Personnes) : liste des personnes enregistrées avec deux colonnes : id et nom.
Dans les déclarations globales de la fenêtre, j'ai les variables suivantes :
- LesTypesDePersonne : tableau d'objets de la classe TypePersonne ;
- LesPersonnes : tableau d'objets de la classe Personne ;
- LaPersonne : objet de la classe Personne. Propriétés : id (entier), nom (chaîne), idDuType (entier), Type (TypePersonne) ;
Pour la classe TypePersonne, les propriétés sont les suivantes : id (entier), libellé (chaîne).
Ces tableaux alimentent respectivement la combo et la table.
L'alimentation de la combo s'est faite de la manière suivante : dans la description du champ, dans l'onglet "Contenu", l'option "Par variable", j'ai définie comme source parcourue LesTypesDePersonne. La variable affichée c'est la propriété "libellé" et, la variable mémorisée c'est le type de personne sélectionné. Ensuite dans l'onglet "Liaison" j'ai sélectionné la propriété "Type" de l'objet "LaPersonne".
L'alimentation de la table s'est faite sur le même principe.
Puis les fonctions ListeAffiche et TableAffiche sont utilisées pour l'affichage dans l'IHM.
Le champs SAI_Nom est lié à la propriété "nom" de la personne.
Dans la zone "Clic" du bouton BTN_Enregistrer, j'ai un EcranVersSource, enregistrement dans une la base de données, réinitialisation des champs, actualisation de la table.
Lorsque je sélectionne une ligne de la table, j'affecte la sélection à "LaPersonne", puis je fais un SourceVersEcran, seul le champ SAI_Nom s'actualise avec le nom de la personne sélectionnée.
Pour que cela fonctionne, il me faut mémoriser la propriété "id" du type de personne et lier la combo à l'ID correspondant dans la classe Personne. Pour obtenir les autres informations du type, il me faudra retourner dans la base de données.
Je ne sais pas si je me suis bien expliqué.
Quelqu'un aurait-t-il déjà rencontré ce problème ? Est-ce possible d'aller jusque là avec le databinding de Windev ?
Merci d'avance.
Partager