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

 Delphi Discussion :

Trouver la ligne dans un DBgrid


Sujet :

Delphi

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut Trouver la ligne dans un DBgrid
    salut tous j'ai un petit et je ne trouve pas d'astuce pour améliorer mon petit programme.Je vous explique
    form1 j'ai un DBgrid alimenter par un Query
    Form2 je modifie les données de mon Query je valide sur un bouton qui me ferme la Form2 Je fais aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query.active:=true
    Query.active false
    mise a jour de mon query ok
    mais dans ma form1 j'aimerais si possible avoir la sélection sur mon DBgrid de l'enregistrement que je viens de modifier .Une idée ??
    je ne sais pas comment faire.Car forcement la form1 se réactive mon query est alimenté par un requête Du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from matable Order by Nom ASC
    la selection de mon DBgrid et sur Mr AAAAA le premier de ma table. Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    c'est tout a fait le genre de cas où il faut utiliser le TBookmark

    un canevas de solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var B : TBookmark;
    begin
    B:=Query1.GetBookMark
    DBGrid.DisableControls;
    Query1.Active:=False;
    // appel de Form2 etc...
    Query1.Active:=True;
    Query1.GotoBookmark(B);
    DBGRid.EnableControls;

  3. #3
    Membre émérite
    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
    Par défaut
    juste qu'il faut ajoute un try finally
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var B : TBookmark;
    begin
    B:=Query1.BookMark;
    Query1.DisableControls;
    try
       Query1.Active:=False;
       // appel de Form2 etc...
       Query1.Active:=True;
    finally
       Query1.Bookmark:=B;
       Query1.EnableControls;
    end;

  4. #4
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    c'est tout a fait le genre de cas où il faut utiliser le TBookmark
    Pas bête !
    Moi, j'utilisais le Locate.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Idem, j'utilise le Locate surtout que le BookMark peut ne plus être valide entre Close et le Open !
    Surtout dans le cas d'accès concurrentiels où des lignes peuvent être supprimées ou insérées !

    Faudrait pas oublier FreeBookmark aussi !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut Super les gars
    Supers les gars sa marche super bien Merci.

    Je vais profiter de votre savoir et de votre sympathie.
    la c nickel je tombe dans mon DBGrid sur le nom que je demande.la ligne du DBGrig et sélectionné .
    Maintnant serait il possible de créer un clic de la souris pour activé la sélection.
    car dans l'événement OnCellClick du DBRid j'affiche les données de la ligne de mon client.Possible ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Par défaut
    Salut tarmo57,

    il suffit de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     DBGridCellClick(nil);
    Etant donné que ta query ou ton locate va se positionner sur le bon enregistrement, il va simuler le click sur le bon enregistrement.

    Jeankiki

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut super
    Citation Envoyé par Jeankiki Voir le message
    Salut tarmo57,

    il suffit de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     DBGridCellClick(nil);
    Etant donné que ta query ou ton locate va se positionner sur le bon enregistrement, il va simuler le click sur le bon enregistrement.

    Jeankiki
    Super grand merci à tous

  9. #9
    Membre émérite
    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
    Par défaut
    Faudrait pas oublier FreeBookmark aussi !
    en réalité il s agit d'un TBookmarkStr
    Le code et efficace avec les operation de genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while not Dataset.Eof do
       Dataset.Next()

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

Discussions similaires

  1. insérer une ligne dans un dbgrid entre 2 enregistrements
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/09/2005, 09h15
  2. Comment donne une couleur a une ligne dans un DBGrid
    Par samy84s dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/09/2005, 23h22
  3. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24
  4. Sélectionner une ligne dans une DBGrid
    Par RBIK dans le forum Bases de données
    Réponses: 13
    Dernier message: 01/07/2004, 17h13
  5. hauteur de ligne dans un DBGrid
    Par mustang-gx dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/03/2004, 20h27

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