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 :

Tri sur un DBGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut Tri sur un DBGrid
    salut
    je cherche à faire un tri sur un DBGrid .et sa de façon en appuyant sur une colonne les elements de colonne ce tri .

  2. #2
    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

    Pour effectuer un tri, il faut que tu travailles sur le DataSet sous-jacent de ton DBGrid.
    Avec un TxxxQuery, tu changes l'Order By et tu rafraichis les données.
    Pour un TxxxTable (que je n'utilise jamais), jouer sur les index ?

    @+ Claudius

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    pour la premiere soulution : est ce que, sa veut dire que je doit mêtre au temps de Txxxquery qu'il y a de colonnes.

    pour la second solution :est ce que vous pouvet me donner une idée sur la methode d'utilisation des index ?

  4. #4
    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
    Citation Envoyé par k_boy Voir le message
    pour la premiere soulution : est ce que, sa veut dire que je doit mêtre au temps de Txxxquery qu'il y a de colonnes.
    Non, il te suffit de reconstuire ta requête en modifiant l'order by.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      with TonQuery do
      begin
         Close;
         SQL.Text := 'select * from TaTable order by TaColonne;'
         Open;
      end;
    Citation Envoyé par k_boy Voir le message
    pour la second solution :est ce que vous pouvet me donner une idée sur la methode d'utilisation des index ?
    Je ne sais pas trop, je n'utilise jamais les TxxxTable. Le plus simple est de travailler avec requêtes.

    @+ Claudius

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    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 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut


    je verrai bien une petite fonction qui fait ca tout seul
    du genre

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    function Numligne(rq : Tquery) : integer;
    var
      ligne :integer;
    begin
      // determine le numero de ligne
      result := -1;
      ligne   :=0;
      repeat
        inc(ligne);
        if pos('ORDER BY',UpperCase(rq.SQl.strings[ligne]))<>0 then
           result := ligne;
      until (ligne=rq.SQL.count-1) or (result<>-1);
    end;
     
    procedure TData.TriColonne(Column: TColumn);
    var
      ligne :integer;
      rq :Tquery;
      Ordre :String;
    begin
      if column.FieldName='' then exit;
      if column.Field.DataSet=Nil then exit;
      rq := TQuery(column.Field.DataSet);
      if rq.State<>dsBrowse then exit;
     
      ordre := column.FieldName;
      ligne := Numligne(rq);
     
      if ligne <> -1 then
      begin
        if (pos(ordre,UpperCase(rq.SQl.strings[ligne]))<>0)
        and (pos('DESC',UpperCase(rq.SQl.strings[ligne]))=0)
          then
          begin
            if (pos(',',Ordre)<>0) then ordre := copy(Ordre,1,pos(',',Ordre)-1)
                                               + ' DESC '
                                               + copy(Ordre,pos(',',Ordre),length(ordre))
            else ordre := ordre + ' DESC';
            rq.SQl.strings[ligne] := 'ORDER BY '+Ordre;
          end
          else rq.SQl.strings[ligne] := 'ORDER BY '+Ordre;
      end
      else
        rq.SQL.Add('ORDER BY '+ordre);
     
      data.CloseRq(rq);
      data.OpenRq(rq);
    end;
    @+ phil
    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

Discussions similaires

  1. Tri sur clic d'un titre colonne d'un dbgrid
    Par LuckyLuke56 dans le forum Langage
    Réponses: 6
    Dernier message: 08/04/2009, 21h09
  2. Tri sur une colonne d'un champs calculé DBGRID
    Par BuzzLeclaire dans le forum Bases de données
    Réponses: 13
    Dernier message: 18/02/2009, 15h13
  3. Tri sur colonne DBgrid lié à une TTable
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/02/2006, 13h42
  4. Tri dans une DBGrid sur un champ date au format jj/mm
    Par Jeankiki dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/10/2004, 12h32
  5. Tri sur DBgrid
    Par julien41 dans le forum Bases de données
    Réponses: 21
    Dernier message: 19/02/2004, 17h33

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