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 comme provider


Sujet :

Bases de données Delphi

  1. #1
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut TClientDataset comme provider
    bonjour

    mon pbm est un peu compliqué, pardon si je m'emmèle les pinceaux dans mon explication

    voila : j'utilise des TClientDataSets comme bdd locale MyBase dans une appli monoposte (des "table in memory" donc)

    pour plusieurs tables de ce type, j'ai besoin d'extraire simultanément des infos fondées sur des filtres différents

    supposons par ex la table T1, contenant les fields C1 .. CN

    je voudrais :
    1 - afficher dans une grille toutes les lignes de T1 tq C1=2
    2 - en même temps, afficher la somme des champs C3 pour toutes les lignes dont C2=7

    (1) et (2) réclament donc de poser sur T1 des filtres différents, ce qui pour le moins pose pbm :o((

    j'avais imaginé de rajouter deux ClientDataSet T1A et T1B, en posant T1 comme provider de donnée pour ces deux là
    mes filtres seraient posés sur T1A et T1B, ainsi lorsque l'user ajoute ou modifie des lignes dans T1 je n'aurais pas à me préoccuper d'émarger les T1A..X rattachés, juste éventuellement faire un refresh

    je pensais utiliser la propriété "ProviderName", mais il semble qu'elle n'accepte pas un autre TClientDataSet, j'ai mal du comprendre son usage

    comment pourrais-je obtenir ce que je souhaite ?
    j'utilise D7 entreprise

    merci de votre aide

  2. #2
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Tu peux utiliser deux "ClientDataSet" qui se connects au même fichier de données, a condition de ne pas mettre à jour les deux "ClientDataSet" en même temps.(l'un doit être en mode consultation exclusivement)
    ....................................................................
    Aidez-vous... Dieu vous aideras et nous aussi..
    ....................................................................

  3. #3
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    je n'ai pas de fichier de données local

    je récupère les données sur internet via des pages HTML chargées dans un WebBrowser, et je remplis les ClientDataSet "à la main" depuis ces pages sans rien sauver sur disque pour assurer une rapidité maximale

    les mises à jour des données sur internet (rares) sont faites via des formulaires HTML

    mon pbm est dans le traitement local, le choix de MyBase (Midas.dll) implique l'absence de SQL sur le client et je voudrais faire "comme si" j'en avais :

    données chargées dans un ClientDataSet exclusivement in memory, considéré comme fournisseur de données, puis extraction de morceaux différents de cette table pour traitement d'affichage et stats différents

    je peux le faire à la main en parcourant les lignes mais c'est lourd et je me demandais s'il n'y a pas moyen d'exploiter des fonctionnalités existantes

  4. #4
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Puisqu'il n'y a pas de mise à jour des données, c'est plus simple: Avec 2 (ou plus) ClientDataSet tu récupère les données et tu filtre chaque composant individuellement.
    Les filtres des ClientDataSet sont plus riches que ceux des autres DataSet (voir l'aide Delphi).
    ....................................................................
    Aidez-vous... Dieu vous aideras et nous aussi..
    ....................................................................

  5. #5
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    > tu récupère les données et tu filtre chaque composant individuellement

    oui, mais ma question reformulée devient "comment récupérer des données filtrées"

    je peux :

    - soit récupérer toutes les données de Source vers une copie via la propriété Data
    dans ce cas je filtre sur la source

    mais ça fait de gros transerts, et de grosses portions de mémoire occupée là où peu devrait suffire (en général j'ai besoin d'un faible % des lignes et colonnes de la source)

    - soit récupérer dans la copie juste les lignes et colonnes que je souhaite à chaque fois, mais alors il faut que je parcoure toutes les lignes à la main en plusieurs tonnes de code

    j'ai opté pour la seconde soluce, à mes phalanges défendantes :o))

    en tous cas merci de tes interventions

  6. #6
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Tu peux créer des clones du 1er ClientDataSet (celui qui récupère les données) par la méthode "CloneCursor" des TClientDataSet, puis les filtrer comme tu veux.
    ....................................................................
    Aidez-vous... Dieu vous aideras et nous aussi..
    ....................................................................

  7. #7
    jlf
    jlf est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 140
    Points : 49
    Points
    49
    Par défaut
    > Tu peux créer des clones du 1er ClientDataSet (celui qui
    > récupère les données) par la méthode "CloneCursor"

    effectivement j'avais pas vu cette méthode
    merci

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

Discussions similaires

  1. Hibernate comme provider JPA dans JPA tools (Dali)
    Par tchize_ dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 15/04/2015, 15h41
  2. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  3. TClientDataset comme provider
    Par jlf dans le forum Delphi
    Réponses: 0
    Dernier message: 03/09/2006, 11h09
  4. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  5. Réponses: 3
    Dernier message: 19/07/2002, 15h01

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