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 :

Probléme de quantité


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut Probléme de quantité
    Bonjour,

    Lorsque par exemple j'ai un fichier avec quantité 1 pour une référence avec couleur j'ai bien la quantité a 1
    quand j'ai 2 fichiers de quantité 1 même référence et même couleur je devrais avoir quantité 2 alors que j'ai 3 je ne comprends pas bien.

    Merci

    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
    '.........
    articlesconso.Add(New articleconso With {.reference = parts(0), .quantite = parts(4), .designation = parts(1), .couleur = parts(2), .conditionnement = parts(3)})
     
    Dim grouped = articlesconso _
            .GroupBy(Function(articleconso) New With {Key articleconso.reference, Key articleconso.designation, Key articleconso.couleur, Key articleconso.conditionnement}) _
            .Select(Function(selected) New With {.Name = selected.Key.reference, .design = selected.Key.designation, .Color = selected.Key.couleur, .condi = selected.Key.conditionnement, .Quantity = selected.Sum(Function(it) it.quantite)})
     
     
     For Each group In grouped
     
                Dim LVI As ListViewItem = lvconso.Items.Add(group.Name)
                LVI.SubItems.Add(group.Color)
                LVI.SubItems.Add(group.condi)
                LVI.SubItems.Add(group.design)
                LVI.SubItems.Add(group.Quantity)
     
            Next

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 999
    Par défaut
    Je reconnais ce code, c'est moi qui te l'ai suggéré.
    Mais chez moi, j'ai bien le comportement attendu, même en rajoutant des colonnes.

    Le seul moyen de faire la lumière est de déboguer en pas à pas.

    Combien tu as d'enregistrement dans articlesconso ?
    Tu devrais en avoir deux avec chacun la valeur 1 dans la quantité.

    Si tu places, l'appel à GroupBy dans une variable intermédiaire, tu as combien d'enregistrements ?
    Avec la même couleur et la même référence, tu devrais avoir un seul enregistrement.
    Sauf si, tu as plusieurs références et/ou désignation différentes.

  3. #3
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Oui effectivement c'est bien ton code j'arrive pas a trouver des tutos sur la Quantity = selected.Sum(Function(it) it.quantite pour comprendre.
    tu as la bonne quantité si tu as 2 fichiers avec dedans le même article, couleur.

    Effectivement il fait 3 fois la boucle pourquoi ? alors que j'ai qu'une ligne dans les 2 fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For boucle = 0 To ltlistfichierconso.Items.Count - 1
                    Dim listname = ltlistfichierconso.Items(boucle).SubItems(0).Text
     
                    For Each line In File.ReadAllLines(listname) ' lecture dans une listview
                        Dim parts = line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
                        articlesconso.Add(New articleconso With {.reference = parts(0), .quantite = parts(4), .designation = parts(1), .couleur = parts(2), .conditionnement = parts(3)})
                    Next
    Next

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 999
    Par défaut
    Sum est une méthode issue de System.Linq.
    Si tu recherches là dessus, tu devrais trouver des d'info.

    J'ai une version simplifiée de tes fichiers mais le principe reste le même.
    J'ai rajouté une colonne dans mes fichiers pour la référence et comme toi, je l'ai également ajouté dans le GroupBy et dans le Select.

    Chez moi j'ai deux donc fichiers contenant tout deux la chaine guitare;rouge;5;titi; car je suis partie du principe que le même article avec la même couleur avait la même référence (ici, titi).
    Et dans grouped, je n'ai qu'une seule entrée dont la quantité est à 10.

    Maintenant si la référence est différente (donc guitare;rouge;7;titi; dans un fichier et guitare;rouge;3;toto; dans l'autre (donc 2 référence : titi et toto), le comportement logique sera d'avoir deux lignes.
    Puisque je regroupe également sur la référence et que j'ai deux valeurs différentes, je vais avoir deux lignes : une avec une quantité à 7 et une avec la quantité à 3.
    Pour n'avoir qu'une seule ligne, il faut enlever le regroupement ET la sélection sur la référence, mais dans ce cas, je ne pourrais pas afficher de référence.

    Si tu passes 3 fois dans articlesconso.Add, c'est qu'il y a quelque chose dans tes fichiers qui déclenche ce comportement.
    Je penses que la différence est que de me coté, je n'ai physiquement que ça dans mes fichiers, je n'ai pas autre chose.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 574
    Par défaut
    Si il fait 3 fois la boucles c'est qu'il y a 3 items dans ltlistfichierconso, donc regarder lesquels et comprendre pourquoi il y en a un trop

  6. #6
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Après une bonne nuit effectivement j'avais la boucle dans une autre boucle une erreur simple désolé et merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/10/2009, 17h55
  2. Réponses: 4
    Dernier message: 17/09/2009, 20h52
  3. [XL-2003] Problème sur la quantité d'onglets
    Par ludovic4599 dans le forum Excel
    Réponses: 2
    Dernier message: 15/07/2009, 13h43
  4. grande quantité de textes, problème de mémoire, API SGDB native?
    Par lexsteens dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 07/03/2008, 10h07
  5. session problème quantité panier
    Par kitty2006 dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 19h24

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