Lookup dans un dbgrid

Résolu
Signaler
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Bonjour,

J'ai cherché sur le forum et sur google sans succès... alors je me permets de vous poser la question.

Comment peut-on piocher directement dans un dbgrid une valeur pour un champ qui viendrait d'une autre table ? J'ai essayé sans succès les propriétés lookupdataset et compagnie... mais c'est pas évident. En plus l'aide de delphi me semble un peu dur à suivre et est totalement dénué d'exemple.

Pourriez-vous m'expliquer brièvement comment ça marche ? (et si ça marche sur firebird, au passage..)

Simon

4 réponses

Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Il suffit de créer un Lookup field dans ta table.

Disons que tu as une table produits et une table avec les lignes de factures (linfac).

Pour insérer un produit dans ta table linfac sur une ligne de DBGrid gràce à une combobox automatique, créer un lookup field dans ta table linfac (LookDescrProduit), pour cela tu dois créer un champ avec le code produit ...

Ensuite dans la DBGrid, tu insères le champ LookDescrProduit dans une colonne. Cette colonne est automatiquement une ComboBox ...

Voilà A+
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
4
Salut Simon,

Je n'ai jamais employé lookupdataset et les champs de recherche.
Mais il y a un moyen très simple dans un DBgrid d'aller chercher une valeur dans une autre table :
il te faut pour cela voir la propriété Columns du DBGrid : tu ajoutes autant de colonnes que de champs souhaités visibles.
Supposons que la 1° colonne soit le champ 'CODE' et que les valeurs soient obligatoirement des valeurs contenues dans une Table Codes. 
Propriété ButtonStyle de la colonne =  cbsEllipsis.
Tu crées un événement OnEditButtonClick du DBGrid dans lequel tu peux par exemple :
     - ouvrir une fenêtre modale contenant une grille de la Table Codes.
     - sélection d'une valeur par double click
     - fermeture de la fenêtre et attribution de la valeur sélectionnée.
C'est ainsi que font pas mal de logiciels de gestion que j'utilises. Cela te laisse toute liberté, p.ex. de filtrer ta base Codes selon certains critères.
Remarque : ceci n'interdit pas de mettre une valeur non contenue dans la Table Codes. Donc à toi de vérifier...

Ou propriété ButtonStyle = cbsAuto.
Dans ce cas, tu auras accès à un combobox : préalablement tu dois remplir les Strings de PickList en fonctions des valeurs de ta base Codes (ou alors associer la colonne du DBGrid à un champ recherche).

A +
Thierry
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Merci pour ta réponse Thierry. Je garde ces bons conseils.


Il semblerait cependant qu'il y ait moyen d'automatiser la chose avec
les "champs de recherche". C'est ce que j'essaie de faire mais sans
succès.

Simon
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Ok Mauricio, bien reçu, ça marche !

Je te remercie

Simon