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 :

Récupération de données dans une DBGrid [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 101
    Points : 80
    Points
    80
    Par défaut Récupération de données dans une DBGrid
    Bonjour à toutes et à tous.
    Je vais encore solliciter votre expertise.
    Versions : Lazarus 2.0.6; FPC 3.0.4; Postgresql 11.5 et Windows 10 famille.
    Voici le contexte : une DBGrid peuplée au moyen d'une requête qui récupère deux colonnes ref_id et ref_nom, ref_id n'est pas visible, seul ref_nom apparaît dans la grille.
    Je désirerais récupérer directement ref_id. Pour l'instant je me suis contenté de récupérer ref_nom pour alimenter une requête afin obtenir ref_id. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cellule_selectionnee : TBookMarkList;
      ...
      cellule_selectionnee := DBGrille_Accueil.SelectedRows;
      Requete_Accueil.Close;
      Requete_Accueil.SQL.Text := 'SELECT ref_id FROM s_ent.t_e_reference_ref WHERE ref_nom = :NOM;';
      Requete_Accueil.Params.ParamByName('NOM').AsString := IntToStr(cellule_selectionnee);
      selection_id := Requete_Accueil.Fields[0].AsInteger;
    qui génère l'erreur suivante :

    Error: Incompatible type for arg no. 1: Got "TBookmarkList", expected "QWord"
    Je n'ai pas trouvé de transtypage qui permettrait de supprimer cette erreur.
    Existe-t-il une autre solution pour obtenir ref_id directement à partir d'une fonction de DBGrid?

    Merci pour vos conseils éclairés et pour le temps que vous allez passer pour me dépanner.
    Michel.

  2. #2
    Membre régulier
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Il me semble que j'ai compris d'où vient mon soucis. Il faut que je décompose le TBookMarkList en items avec les types qui vont bien et récupère la valeur que je recherche. Je rendrai compte.
    Michel.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 422
    Points : 5 822
    Points
    5 822
    Par défaut
    Salut

    Il faut surtout lancer la requête pour pouvoir récupérer les valeurs.

    Avant cette ligne
    selection_id := Requete_Accueil.Fields[0].AsInteger;
    tu devrais faire un truc du genre :
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Membre régulier
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Oh, là, là. Pas les yeux en face des trous.
    Bonne journée. Michel.

  5. #5
    Membre régulier
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Pourtant c'est pas bien difficile. Pour debugger le code j'affiche les données collectées dans trois TLabel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFiche_Accueil.DBGrille_AccueilCellClick(Column: TColumn);
     
    begin
      LCellule.Caption := DBGrille_Accueil.SelectedField.AsString;
      LColonne.Caption := DBGrille_Accueil.SelectedField.FieldName;
      LRef_ID.Caption := DBGrille_Accueil.DataSource.DataSet.FieldByName('ref_id').AsString;
    // ouverture d'une nouvelle fiche qui affiche un certain nombre de données récupérées par une requête à partir de ref_id
    end;
    Donc résolu. Merci à tous, Michel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion de données dans une DBGrid!
    Par scorpion37 dans le forum C++Builder
    Réponses: 12
    Dernier message: 09/06/2006, 07h54
  2. [D6 => XML] Récupération de données dans une balise
    Par Bason_sensei dans le forum Delphi
    Réponses: 10
    Dernier message: 22/05/2006, 17h15
  3. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07
  4. Paradox 7 Comment trier et marquer données dans une DBgrid
    Par technico dans le forum Bases de données
    Réponses: 12
    Dernier message: 04/07/2004, 11h08
  5. Données dans une DBgrid
    Par camino dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/02/2004, 03h40

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