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 :

Trier une DbGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut Trier une DbGrid
    Bonjour,
    J'ai une dbgrid reliée à un Datasource qui m'affiche un liste de données.
    J'aimerais pouvoir trier à ma guise cette grille en cliquant sur l'entete de la colonne à partir de laquelle je souhaite trier mes données. (un premier click = trie A->Z ; un deuxieme click sur l'entete = tri Z->A, etc).

    Je dois donc savoir quand je click sur l'entete pour differencier du click dans la grille elle meme.
    Comment savoir si je clique bien sur l'entete de ma dbgrid pour pouvoir ensuite coder mon tri?

    Merci!

  2. #2
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Salut,

    Tu as un évènement onTitleClick pour ton DBGrid qui te permet de savoir que tu as cliqué sur l'entête.

    A+.
    For crying out loud !

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par PadawanDuDelphi
    Salut,

    Tu as un évènement onTitleClick pour ton DBGrid qui te permet de savoir que tu as cliqué sur l'entête.

    A+.
    Ok, Merci.
    Pour mon tri j'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TfrmCHR_Tiers_Principal.dbgdListeTiersTitleClick(
      Column: TColumn);
    begin
      inherited;
       DMCHR_Tiers.ADOTable_CHRTiers.IndexFieldNames:=column.FieldName;
       DMCHR_Tiers.ADOTable_CHRTiers.IndexName:='tri';
       DMCHR_Tiers.ADOTable_CHRTiers.first;
    end;
    Quand je click sur le titre 'C_RATING', il me fait bien le tri mais ensuite il m'affiche :
    Le fournisseur actuel ne prend pas en charge l'interface nécessaire pour la fonctionnalité d'index.
    Je suis en ADO et Access 2002

    Vous savez pourquoi j'ai ce message?
    Merci!

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par tomy29
    Ok, Merci.
    Pour mon tri j'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TfrmCHR_Tiers_Principal.dbgdListeTiersTitleClick(
      Column: TColumn);
    begin
      inherited;
       DMCHR_Tiers.ADOTable_CHRTiers.IndexFieldNames:=column.FieldName;
       DMCHR_Tiers.ADOTable_CHRTiers.IndexName:='tri';
       DMCHR_Tiers.ADOTable_CHRTiers.first;
    end;
    Quand je click sur le titre 'C_RATING', il me fait bien le tri mais ensuite il m'affiche :


    Je suis en ADO et Access 2002

    Vous savez pourquoi j'ai ce message?
    Merci!
    Ok, mon problème c'etait que je devais mettre la AdoTable à non Active avant de faire mes manipulations sur l'index.
    Par contre, j'ai un probleme à l'exécution quand je créé un index sur un champ calculé. Ca m'affiche :
    Impossible de trouver l'objet dans la collection correspondant au nom ou à la référence ordinale demandé
    Savez-vous pourquoi?

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

    Malheureusement je ne pense pas que l'on puisse créer un index sur un champ calculé.

    Mais j'espère me tromper !

    @+

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par Cl@udius
    Salut

    Malheureusement je ne pense pas que l'on puisse créer un index sur un champ calculé.

    Mais j'espère me tromper !

    @+
    aïe!!!

    je vais prier pour que quelqu'un vienne sur ce forum et me dise : "Mais si, c'est possible!" et qu'il m'explique comment.

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Un champ Calculé n'est pas un champ de la base de données, donc tu ne peux pas trier quelques choses qui n'existe pas réellement.
    Si tu veux trier sur un champ calculé il te faut passer par une requete et faire le calcul directement dans cette dernière.

    Les TAdoTable c'est bien pour récupérer des données simplements sur une table sans calcul, mais, s'il est nécessaire de passer par des champs calculés, il faut, à mon avis, changer la politique de développement et passer par des requetes car les TadoTable sont limités dans leur utilisation et franchement, n'apporteront que des problèmes.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par Malatar
    Un champ Calculé n'est pas un champ de la base de données, donc tu ne peux pas trier quelques choses qui n'existe pas réellement.
    Si tu veux trier sur un champ calculé il te faut passer par une requete et faire le calcul directement dans cette dernière.

    Les TAdoTable c'est bien pour récupérer des données simplements sur une table sans calcul, mais, s'il est nécessaire de passer par des champs calculés, il faut, à mon avis, changer la politique de développement et passer par des requetes car les TadoTable sont limités dans leur utilisation et franchement, n'apporteront que des problèmes.
    Oui je sais que les AdoTables sont moyens. D'ailleurs, je n'en utilise presque jamais. Mais l'application entiere est basée sur ce composant, et il faudrait tout réécrire(impossible de faire un peu de AdoQuery et un peu de AdoTable en l'état), mais pas de budget pour ça. Donc ils iront pleurer pour leur tri sur ce champ calculé. Moi je m'en lave les mains.

  9. #9
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    autre alternative:
    utlise une stringgrid pour l'affichage, et pour le trie list+quelque boucle
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

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

Discussions similaires

  1. trier un champ calculé dans une dbgrid
    Par blackbird_dream dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/06/2006, 14h47
  2. Comment trier une table paradox dans un Ttable sur un Dbgrid
    Par amireve dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/12/2005, 19h28
  3. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18
  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. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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