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

Composants VCL Delphi Discussion :

Connaître le premier enregistrement d'un DBGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 183
    Points : 62
    Points
    62
    Par défaut Connaître le premier enregistrement d'un DBGrid
    Bonjour à tous,

    Y a t il un moyen pour connaitre le premier enregistrement dans DbGrid ?

    Je cherche à gérer la page suivante / Précédente d'un DbGrid / DBE

    Merci à tous

  2. #2
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    Bonjour,

    En pricipe un DBGrid est accompagné d'un DBNavigator qui permet de se déplacer et de retouner
    sur le premier enregistrement.

    Question imprécise.

    PL

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 183
    Points : 62
    Points
    62
    Par défaut
    Voilà la réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    TDBGridRows = class(TDBGrid);
     
     
    TDBGridRows (DBGrid1).Row
    TDBGridRows (DBGrid1).VisibleRowCount

  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Bah c'est le premier enregistrement de ton dataset (DataSet1.FindFirst ) ! :aïe:

    Sinon, admettons que ce soit la valeur de la première colonne qui t'intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Function PremiereLigne(FieldName : string; TonDBGrid:TDBGrid) : Variant;(Sender: TObject);
    var
       SauveCurseurDB: TBookmark;
    begin
       with TonDBGrid.DataSource.DataSet do
       begin
        DisableControls; //évite de redessiner le DBGid (et autres controles utilisant le même Dataset) pendant que l'on va aller lire le premier enregistrement
        SauveCurseurDB:= GetBookmark; // On place un point de repère sur l'enregistrement courant de notre base de donnée (celui qui es actif)
        try
          FindFirst;      // on se déplace sur le 1er enregistrement (qui correspond à la première ligne de notre grille)
          Variant:= FindFieldFieldName).Value; on lit la valeur du champ
          GotoBookmark(SauveCurseurDB);      //on revient sur l'enregistrement qu'on a laissé précédemment
        finally
          FreeBookmark(SauveCurseurDB); //On libère la resource de notre point de repère
          EnableControls; //on réactive le dessin des controles utilisant le Dataset
        end;
      end;
    end;
    Alors après effectivement, admettons que tu fasses un scroll down sur ya DBGrid, la première ligne change visuellement, mais c'est mort, tu ne peux accéder à la valeur affiché : les données ne sont pas stockées par le TDBGrid, elles sont lues dans la base de données et dessinées, point barre.
    En plus, ce que toi tu définis comme étant "première ligne" (visuelement donc), est en fait une ligne numéro X pour Windows (et Delphi), la "Première ligne", la vrai est hors champs d'affichage : TDBgrid est un composant scrollable.
    A la rigueur tu peux t'en sortir avec l'évènement OnScroll du TDBGrid, pour savoir de combien tu scrolles, de la propriété rowHeight et de la propriété visiblerowcount pour arriver ) calculer l'index de l"enregistrement de base de donnée sur laquelle tu te trouves.

    En tout cas, je ne sais pas ce que tu cherches à faire, mais normalement tu n'as pas à gérer un défilement par page avec un TDBGrid, ou alors utilise un autre composant. D'ailleurs je te conseille vivement le TSMDBGrid en remplacement de TDBGrid, qui est gratuit et beaucoup plus complet : http://www.scalabium.com/smcmpnts.htm
    Bidouilleuse Delphi

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 11/11/2010, 12h40
  2. Requete pour obtenir les 25 premiers enregistrement
    Par dbizier dans le forum Oracle
    Réponses: 1
    Dernier message: 28/04/2006, 21h36
  3. Prendre que les 5 premiers enregistrements (les + important)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/11/2005, 09h24
  4. comment récupérer les x premiers enregistrements
    Par laurent82 dans le forum SQL
    Réponses: 7
    Dernier message: 12/12/2004, 16h29
  5. Récupérer le premier enregistrement d'un attribut
    Par Tapioca dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 05/08/2004, 09h56

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