Bonjour à tous.
J'aimerais inclure dans un TDBGrid lié à une table d'une base de données, un TDBComboBox lié à une autre table de ma base de données.
Pouvez-vous me donner la démarche à suivre en utilisant les composants de ZeosLib ?
Merci.
Bonjour à tous.
J'aimerais inclure dans un TDBGrid lié à une table d'une base de données, un TDBComboBox lié à une autre table de ma base de données.
Pouvez-vous me donner la démarche à suivre en utilisant les composants de ZeosLib ?
Merci.
Bonjour
C'est un composant visuel orienté données, qui fonctionne sur les mêmes principes que les autres.
En résumé, il faut poser un composant TZTable, puis un TDataSource lié au premier, puis lier le TDbGrid au TDataSource.
Avant de poser une question aussi générale, as tu cherché sur le web et dans la doc en ligne ?
L'essentiel des docs Lazarus sont en anglais :
http://lazarus-ccr.sourceforge.net/d...bcombobox.html
http://lazarus-ccr.sourceforge.net/d...econtrols.html
Et si tu ne sais pas du tout lire cette langue, tu peux utiliser des outils de traduction.
Ou encore chercher des documentations écrites pour DELPHI, qui sont applicables à 99,9%
Exemple : http://www.znsoft.fr/Developpement/D...dex.php?page=6
Cordialement,
Tintinux
Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.
Bonjour,
Tintinux l'a dit , c'est bien vague tout cela...
Quelle est la nature de la relation entre vos 2 tables ?
Car ce n'est peut-être pas un DbComboBox qu'il vous faudra mais un DbLookUpComboBox...
http://delphi.developpez.com/faq/?pa...LookUpComboBox est peut-être une piste à explorer...
Philippe.
Merci pour vos réponses. En effet je n'ai pas été assez précis dans la description de mon problème. Donc pour commencer, je suis débutant en Pascal Objet et je découvre Lazarus. De plus je connais assez l'anglais pour pouvoir lire et comprendre de la documentation écrite dans cette langue. Par contre la documentation sur ZeosLib est assez pauvre.
Pour résumé, j'ai deux tables (T_QUALITE(QUA_ID, QUA_LIBELLE, AFF_ID) et T_AFFINAGE(AFF_ID, AFF_LIBELLE)) dans une base de données, je sais afficher dans une DBGrid, des données de la table T_QUALITE en utilisant les composants de ZeosLib (TZConnection -> TZTable -> TDataSource), par contre au lieu d'avoir un TColumn de type TEdit représentant la valeur du champ AFF_ID j'aimerai avoir un TDBLookUpComboBox qui affiche le champ AFF_LIBELLE de ma table T_AFFINAGE.
Bonjour,
En préambule, je n'emploierais pas des tables mais des query et autres datasets surtout dès que le volume de données va croitre...
Mais revenons à votre problème. Voici une solution :
- Editer les champs de votre table T_QUALITE en double cliquant sur le composant en mode conception
- Ajouter les champs QUA_ID et QUA_LIBELLE. Modifier la valeur de la propriété DisplayWidth (80 par défaut)
- Ajouter un champ (bouton "Create new field...") de type lookup
- Renseigner les paramètres du lookup
- Key fields : AFF_ID
- DataSet : nom du composant TZTable pointant sur la table T_AFFINAGE
- Lookup Keys : AFF_ID
- Result fields : AFF_LIBELLE
Modifier la valeur de la propriété DisplayWidth (80 par défaut)- Dans votre DBGrid, ajoutez 3 colonnes liées via la propriété FieldName à QUA_ID, QUA_LIBELLE et AFF_LIBELLE de votre composant ZTable lié à T_QUALITE
Compilez et exécutez le tout. Vous aurez votre liste déroulante lors de l'édition de la cellule...
Tout ceci aurait pu aussi être fait par code...
Philippe.
Merci Philippe pour votre réponse précise.
Mon problème est donc résolu malgré quelques petits soucis suite à l'apparition d'une exception "Opération cannot be performed on an inactive dataset". En fait il faut déposer le composant TZTable associé à la table T_AFFINAGE avant celui associé à la table T_QUALITE.
Voici ma solution.
- Edition des champs de la table T_AFFINAGE en double cliquant sur le composant en mode conception
- Ajout des champs AFF_ID et AFF_LIBELLE
- Edition des champs de la table T_QUALITE en double cliquant sur le composant en mode conception
- Ajout des champs QUA_ID, QUA_LIBELLE et AFF_ID
- Ajout d'un champ (bouton "Create new field...") de type lookup
- Renseignement des paramètres du lookup
- Key fields : AFF_ID
- DataSet : nom du composant TZTable pointant sur la table T_AFFINAGE
- Lookup Keys : AFF_ID
- Result fields : AFF_LIBELLE
- Dans le DBGrid, ajout de 3 colonnes liées via la propriété FieldName à QUA_ID, QUA_LIBELLE et AFF_LIBELLE du composant ZTable lié à T_QUALITE
Problème résolu, merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager