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 :

TClientDataSet et les aggrégats


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Par défaut TClientDataSet et les aggrégats
    Bonjour les delphistes

    Après m'être pris la tête avec les aggrégats du ClientDataSet, j'ai enfin compris le fonctionnement. Ouf !
    Sauf une chose ! bien évidemment ce que j'aurais le plus besoin...

    Voilà: mon ClientDataSet contient 4 champs de type data et 1 champ aggregat.
    Champ1: Ref (string)
    Champ2: Design (string)
    Champ3: Qte (integer)
    Champ4: QteScan (integer)
    Champ5: QteMissed; un TAggregateField qui a pour expression sum(Qte)-sum(QteScan)

    La table est remplie de manière 'manuelle' avec des .Insert - .Post
    L'index en place est basé sur Ref;Design et le GroupLevel à 2
    Ce que je veux affiché dans mon DBGrid: Ref, Design et QteMissed
    A l'exécution l'aggrégat se calcule bien mais une ligne s'affiche à chaque fois qu'il existe un couple Ref;Design dans la table
    Une bonne requete SQL avec un group by ne m'aurait pas affiché ces doublons.

    Voilà un exemple pour ceux qui comprennent pas bien

    Contenu inseré dans le table :
    Ref ; Design ; Qte ; QteScan
    R1 ; Truc1 ; 1 ; 0
    R2 ; Truc2 ; 4 ; 1
    R1 ; Truc1 ; 2 ; 1

    Ce qui s'affiche :
    Ref ; Design ; QteMissed
    R1 ; Truc1 ; 2
    R1 ; Truc1 ; 2
    R2 ; Truc2 ; 3

    Ce que je veux voir :
    Ref ; Design ; QteMissed
    R1 ; Truc1 ; 2
    R2 ; Truc2 ; 3

    Si qqun a un bon tuyau, j'en veux bien un bout

    Peck777

  2. #2
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Et pourquoi tu ne filtre pas ta table ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Par défaut
    oui mais avec quel critère ? ? ? ?
    les filtes ne servent pas à ça

  4. #4
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    De quelle façon tu utilise ClientDataSet ? Autonome ou relié a un TQUERY par un fournisseur (DataSetProvider) ? Car dans le deuxieme cas tu peux spécifier une commande SQL dans la propriété "COMMANDTEXT" du TClientDataSet.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Par défaut
    Bonjour,
    J'ai bien sûr essayer de relier un provider à mon DataSet, mais le passage d'une commande n'est pas autorisé dans ce cas. Ceci dit ça serait beaucoup trop facile d'ailleurs, il existe des librairies de composants payantes qui proposent des composants qui font ça.

  6. #6
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    Bien sûr que c'est plus facile, il suffisait de mettre la propriété "Options"/"poAllowCommandText" du fournisseur (TDataSetProvider) a "True" pour que la commande SQL fournit dans la propriété "COMMANDTEXT" du TClientDataSet soit prise en compte.
    Jette un coup d'oeil a l'aide de delphi sur le sujet.

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

Discussions similaires

  1. filtre sur les aggrégats dans WebI
    Par sono_strass dans le forum Webi
    Réponses: 8
    Dernier message: 11/04/2011, 18h25
  2. Réponses: 3
    Dernier message: 03/03/2008, 20h02
  3. Grouper les enregistrements d'un TClientDataSet ?
    Par gduo200 dans le forum Bases de données
    Réponses: 0
    Dernier message: 27/08/2007, 18h06
  4. Fonction aggrégat pour la médiane et les quantiles
    Par bdkiller dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/04/2006, 15h27
  5. developpement base de donnée: Les champs d'aggrégat
    Par Jahrnee dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 20h39

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