IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Champ LookUp dans un TDBGrid


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Par défaut Champ LookUp dans un TDBGrid
    Bonjour à tous,

    Débutant sous Lazarus, je conçois actuellement une application gérant une base de données SQLite 3.x, avec les composants fournis avec Lazarus (version 0.9.24beta sous Ubuntu 8.04 (la version des dépôts officiels) et Windows XP , la version Linux étant couplée avec FPC 2.2 et la version Windows avec le FreePascal embarqué dans l'install

    Ce que je souhaite faire est - à priori - simple, mais depuis de nombreux jours et recherches Google sur l'aide Delphi mais aussi Lazarus, je n'ai pas réussi à trouver de solution.

    Dans ma base je dispose de deux tables : "Personnage" et "Clan". Dans la table personnage, un champ "perso_clan" (clé étrangère) vient faire référence à la clé primaire "clan_id" de la table clan.

    Dans mon TDBGrid, je souhaiterais afficher le nom du personnage et le nom du clan. Problème : je n'arrive à afficher que la clé étrangère (un numéro donc).

    J'ai vu que les Tsqlite3DataSet disposaient de deux propriétés "MasterSource" (affecté sur un DataSource ayant lui même un DataSet pointant vers la table des clans), et "MasterFields", qui n'ont visiblement pas eu d'impact.

    J'ai aussi essayé de paramétrer la dernière colonne du TDBGrid de la manière suivante :

    Dans le code suivant, self.dataSet fait référence à ma table "Personnages" qui vient donc s'alimenter sur la table "Clan" (clansDataset).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    with (myGrid.Columns[3] as TColumn).Field do
       begin
            FieldName := 'perso_clan';
            FieldKind := fkLookup;
            KeyFields := 'perso_clan';
            Name := self.dataSet.Name + FieldName;
            LookupDataSet := clansDataSet;
            LookupKeyFields := 'clan_id';
            LookupResultField := 'clan_nom';
            DataSet := self.dataSet;
       end;
    J'ai également essayé d'appliquer ces propriétés directement sur le DataSet, en agissant sur le champ correspondant ou même en en ajoutant un nouveau, avec le même résultat. Peut-être y a-t-il un autre moyen ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    FieldTEmp := TStringField.Create(dataset);
       with FieldTEmp do
       begin
            FieldName := 'NewField';
            FieldKind := fkLookup;
            KeyFields := 'perso_clan';
            LookupDataSet := clansDataSet;
            LookupKeyFields := 'clan_id';
            LookupResultField := 'clan_nom';
            DataSet := self.dataSet;
       end;
       self.dataSet.FieldDefs.Add(FieldTemp.FieldName, ftString, 50, false);
       self.dataSet.Fields.Add(FieldTEmp);
    Quand j'essaie d'affecter ce champ, les composants "TDBEdit" bindés sur d'autres valeurs de la table "Personnages" ne fonctionnent plus, j'obtiens une "EDataBaseError : perso_nom doesn't exist". Il ne détecterait donc plus les autres champs

    Si quelqu'un peut m'aider à me sortir de ce pétrin, je lui en serais extrêmement reconnaissant

    Merci d'avance à tous

  2. #2
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Bonsoir,

    La prise en charge des lookup dans la dbgrid n'est pas encore opérationnel.
    J'avais déjà abordé la sujet avec Jesus Reyes qui gère cette partie dans Lazarus.
    Il est prit sur LazReport en ce moment et n'a pas le temps de terminer le développement du LookUp.
    Il y a des possibilités mais il faut recréer une nouvelle dbgrid. J'en ai une perso qui n'est pas fini mais qui implémente ce genre de choses. J'avais commencer ce projet mais par manque de temps j'ai un peu laisser tomber en ce moment.

    Me contacter en privé pour plus d'information...

    Cordialement,

    Chris

Discussions similaires

  1. [Lazarus] Affichage dans un TDBGrid d'un champ provenant d'un DataSet externe
    Par SSJ17Vegeta dans le forum Lazarus
    Réponses: 8
    Dernier message: 17/10/2014, 17h00
  2. Fonction talend dans un champ lookup
    Par sniperpro dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 13/11/2013, 21h16
  3. [SP-2010] choix (none) dans champs lookup
    Par eldrad95 dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 13/10/2011, 16h08
  4. PBM rafraichissement champ lookup dans une grille
    Par fredfred dans le forum Composants VCL
    Réponses: 0
    Dernier message: 09/12/2010, 16h01
  5. champ lookup sur querydataSet
    Par freinhar dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/12/2002, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo