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

VB.NET Discussion :

Filtrage de données et Expression de DataColumn


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut Filtrage de données et Expression de DataColumn
    Bonjour,

    J'ai un petit problème avec l'utilisation des Expression dans les DataColumn.
    Voilà, j'ai utilisé les assistants pour créer rapidement une connexion et un DataSet sur la base Access Northwind.
    Dans mon DataSet je prends les tables Produit et Catégorie liées par une relation "CategoriesProducts".

    J'ajoute à la DataTable "Categories" une colonne "ProductCount" destinée à afficher le nombre de produits dans la catégorie.
    Je place donc dans la propriété Expression l'expression suivante : Count(Child(CategoriesProducts).ProductID).

    Les deux DataTables sont alimentés avec un select * sur les tables de la base.

    Le hic c'est que, quand je filtre les enregistrement de la DataTable Produits le Count ne change jamais dans catégorie.
    J'ai filtré par tous les moyens que j'ai trouvé, c'est à dire via le BindingSource, via un DataView, un DataViewManager mais rien n'y fait la valeur de bouge jamais, elle n'est pas recalculée, sauf si ont touche aux lignes du DataTable "Products". Par exemple si je supprime une ligne, le ProductCount de la catégorie correspondante et bien recalculé.

    Sauf que moi je ne veut pas toucher aux lignes du DataTable, je veux simplement le "filter".

    Par exemple : J'ai relié mon ProductBindingSource et CategorieBindingSource à un DataViewManager au lieu de les relier directement au DataSet.
    J'ai filtré les enregistrement de la table product via le DataViewManger avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtvmComptoir.DataViewSettings("Products").RowFilter = "SupplierID = 1"
    Et bien rien n'y fait le ProductCount ne tient pas compte du filtre appliqué à Products, pourtant j'ai moins de produits dans chaque catégorie.
    Et je prends aussi les catégories dans le DataViewManager et non pas dans le DataSet.

    J'ai l'impression que la valeur du ProductCount est calculée lors du remplissage du DataSet (qui est fait avec des Select *) et qu'ensuite la valeur n'est plus mise à jour... sauf en cas d'ajout / suppression de ligne dans la DataTable Product.

    La seule solution pour faire bouger le Count serait donc de refaire le Select de la table products en incluant le filtre à la requête SQL.
    Sinon on pourrait avoir deux DataSet, un complet et un alimenté avec des extractions faites sur le premier... mais c'est vraiment laid.

    je me trompe ?

    Cordialement
    Mael

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Les colonnes calculées (Expression) ne tiennent compte que des données de la table, pas des filtres appliqués sur une vue de cette table (car tu pourrais tout à fait avoir plusieurs vues sur la même table, avec des filtres différents...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    C'est bien ce que je craignais... mais je ne voulais pas y croire...
    Chiotte...
    Bon bah on va faire autrement....

    Merci pour ton aide en tout cas.
    @+

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

Discussions similaires

  1. Filtrage de données avec deux listbox
    Par kinaï dans le forum ASP.NET
    Réponses: 0
    Dernier message: 05/09/2007, 11h13
  2. Réponses: 1
    Dernier message: 05/06/2007, 17h19
  3. Réponses: 3
    Dernier message: 30/03/2007, 09h53
  4. filtrage de données
    Par gil35131 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/10/2006, 18h49
  5. filtrage de données
    Par gil35131 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/10/2006, 11h58

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