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

Bases de données Delphi Discussion :

Sélection d'un enregistrement à partir d'un DBGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut Sélection d'un enregistrement à partir d'un DBGrid
    Bonjour,

    Je récupère les valeurs des champs via l'évènement onCellClick.
    Mais si je clique sur la première cellule du premier enregistrement, l'évènement ne se déclenche pas. Le curseur se positionne dans la cellule comme si il attendait une modification de ma part.

    J'ai essayé d'introduire une action de déplacement dans la table via l'évènement OnEnter mais le résultat n'est pas satisfaisant.

    QU'est-ce qui coince ?

    Merci de votre attention

  2. #2
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Cela dépend de ce que vous voulez faire dans le OnCellClick. Pour exploiter cet evènement, il faut utiliser son argument Column

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dbGrid1CellClick(Column: TColumn);
    Par exemple un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    showmessage ( Column.FieldName);
    Renvoi le nom de la colonne oû est positionner le curseur.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Je récupère les valeurs des champs via l'évènement onCellClick.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Procedure TMainForm.RueDbGridCellClick(Column: TColumn);
      Adr0 := RueDbGrid.Fields[0].AsString;
      Adr1 := RueDbGrid.Fields[1].AsString;
    ...
    ...
    Or l'évènement ne se déclenche que si je clique sur une cellule différente de la première ligne première colonne.

  4. #4
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Il est préférable de faire ça directement depuis la table auquel est lier le dbGrid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Adr0 := Table.Fields[0].AsString;
    Adr1 := Table.Fields[1].AsString;
    Mais il serait plus commode de faire cela dans le double click ou dans le AfterScroll de la table à moins que c'est par contrainte ?
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Dans mon application, l'utilisateur doit cliquer sur l'enregistrement du DbGrid qu'il veut sélectionner.
    Je dois donc récupérer les champs de l'enregistrement cliqué.

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par defluc;5895249[...
    l'utilisateur doit cliquer sur l'enregistrement du DbGrid qu'il veut sélectionner.
    Et bien cela suffit. Tu n'as rien d'autre à faire (en terme de sélection s'entend).

    Un DBGrid n'est qu'un contrôle qui se contente d'afficher les données d'un DataSet (cela a déjà été dit maintes et maintes fois).

    Dès lors que ton utilisateur clique sur une ligne (ou sur une cellule c'est pareil) le DataSet sous-jacent est automatiquement positionné sur l'enregistrement correspondant.
    Donc pour récupérer les champs, accède tout simplement au DataSet via la propriétés Fields.

    Il faut bien séparer les traitements:
    • Manipuler les données accéder au DataSet
    • IHM/Affichage des données paramétrer le DBGrid


    @+ Claudius.

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Je constate que l'évènement OnCellClick ne se déclenche pas et que la cellule de la ligne1/colonne 1 se met en mode Edit dans le cas où je clique sur cette cellule ET que le Dataset contient 1 ou 2 enregistrements.
    C'est la raison pour laquelle je n'avais jamais constaté le problème.

  8. #8
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Si l'utilisateur doit cliquer sur ta grille est ce qu'un OnMouseDown Ne fera pas l'affaire?
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  9. #9
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    C'est bien là le problème, DBGrid possède l'évènement OnKeyDown, mais pas OnMouseDown, ni MouseUp..

  10. #10
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Essaie avec l'événement onButtonclick

  11. #11
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    Puisque c'est la sélection de l'enregistrement qui t'intéresses et pas le champs alors essayes avec l'activation de l'option 'dgRowSelect', comme ça tu aura des lignes à sélectionner et pas des cellules.

  12. #12
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par defluc Voir le message
    C'est bien là le problème, DBGrid possède l'évènement OnKeyDown, mais pas OnMouseDown, ni MouseUp..
    En fait tu utilise quelle version de Delphi sur la version 7 et + ça existe.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  13. #13
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    C'était LA solution AdelNeo.
    JustMe comme tu le vois dans mon profil, je suis un vieux de la vieille et j'utilise Delphi 4.

    Merci à tous

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

Discussions similaires

  1. [AC-2003] Sélections enregistrements à partir codes en seconde table
    Par rjl dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/04/2011, 21h47
  2. Enregistrement à partir d'un DBGrid
    Par imene25 dans le forum Débuter
    Réponses: 2
    Dernier message: 19/05/2009, 11h40
  3. [CR 10] Sélection d'enregistrements à partir d'un résumé
    Par sylviefrfr dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/06/2006, 11h24
  4. Sélection d'un enregistrement de la table sur modif TDBEdit
    Par lawale125 dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/09/2004, 17h54
  5. séléction a partir d'un DBgrid
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/03/2004, 12h08

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