Lookup dans un dbgrid [Résolu]

Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
- 4 août 2006 à 17:08 - Dernière réponse :
Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
- 9 août 2006 à 09:52
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
- 8 août 2006 à 17:27
3
Merci
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+

Merci cs_MAURICIO 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_MAURICIO
Messages postés
424
Date d'inscription
mardi 3 janvier 2006
Dernière intervention
26 novembre 2013
- 5 août 2006 à 16:40
0
Merci
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
Commenter la réponse de ThWilliam
Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
- 7 août 2006 à 09:35
0
Merci
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
Commenter la réponse de sp40
Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
- 9 août 2006 à 09:52
0
Merci
Ok Mauricio, bien reçu, ça marche !

Je te remercie

Simon
Commenter la réponse de sp40

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.