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

C# Discussion :

Méthode de modification de tableau


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut Méthode de modification de tableau
    bonjour à tout le monde,
    j'ai commencée de développer en c#, je veux écrire une méthode qui me permet de faire une modification dans une facture client suite à un payement.
    le client possède un ensemble de facture à régler. lorsque il paye un montant dans une année bien déterminée, alors il faut liquider, en premier lieu, ses crédits dans les années précédentes.
    les factures sont représentées par un tableau où chaque ligne représente les détails d'une facture.
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    private void CreancePhy_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                int i = CreancePhy.CurrentRow.Index;
                ligne = i;
     
     
                CreancePhy[11, i].Value = " le client a reglé un montant de "+CreancePhy[7,i].Value+"dans la période" +CreancePhy[1,i].Value;
                decimal montant = (decimal)this.CreancePhy[7, i].Value;
     
                for (int j = 0; j <= i; j++)
                {
                    if ((((decimal)this.CreancePhy[8, j].Value != 0)) && (((decimal)this.CreancePhy[8, j].Value) <= ((decimal)this.CreancePhy[7, i].Value)))
                    {
                        CreancePhy[7, j].Value = (decimal)this.CreancePhy[7, j].Value + (decimal)this.CreancePhy[8, j].Value;
                        CreancePhy[11, j].Value = CreancePhy[11, j].Value + "réglement a eu lieu en" + CreancePhy[1, i].Value + "d'un montant de" + (decimal)this.CreancePhy[8, j].Value;
                        CreancePhy[8, j].Value = (decimal)this.CreancePhy[6, j].Value - (decimal)this.CreancePhy[7, j].Value;
                        CreancePhy[7, i].Value = (decimal)this.CreancePhy[7, i].Value - (decimal)this.CreancePhy[8, j].Value;
     
                        for (int k = j + 1; k <= i; k++)
                        {
                            CreancePhy[4, k].Value = (decimal)this.CreancePhy[8, k - 1].Value;
                            CreancePhy[6, k].Value = (decimal)this.CreancePhy[4, k].Value + (decimal)this.CreancePhy[5, k].Value;
                            CreancePhy[8, k].Value = (decimal)this.CreancePhy[6, k].Value -(decimal)this.CreancePhy[7, k].Value;
     
                        }
                    }
                    else
                    {
                        if ((decimal)this.CreancePhy[8, j].Value != 0)
                        {
                            CreancePhy[7, j].Value = (decimal)this.CreancePhy[7, j].Value + (decimal)this.CreancePhy[7, i].Value;
                            CreancePhy[11, j].Value = CreancePhy[11, j].Value + "réglement a eu lieu en" + CreancePhy[1, i].Value + "d'un montant de" + (decimal)this.CreancePhy[7, i].Value;
                            CreancePhy[8, j].Value = (decimal)this.CreancePhy[6, j].Value - (decimal)this.CreancePhy[7, j].Value;
                            CreancePhy[7, i].Value = 0;
     
                            for (int k = j + 1; k <= i; k++)
                            {
                                CreancePhy[4, k].Value = (decimal)this.CreancePhy[8, k - 1].Value;
                                CreancePhy[6, k].Value = (decimal)this.CreancePhy[4, k].Value + (decimal)this.CreancePhy[5, k].Value;
                                CreancePhy[8, k].Value = (decimal)this.CreancePhy[6, k].Value - (decimal)this.CreancePhy[7, k].Value;
     
                            }
                        }
                    }
     
     
                }
    }
    CreancePhy[4, k] : contient la valeur qui reste à payée pour l'année précédente.
    CreancePhy[5, k] : contient la valeur de la nouvelle facture k
    CreancePhy[6, k] : contient le total qu'il faut payer (c'est la somme de CreancePhy[4, k]+CreancePhy[5, k]
    CreancePhy[7, k] : contient la valeur payée dans l'année en cours.
    CreancePhy[8, k] : contient la valeur qui reste à payée dans l'année en cours (c'est la soustraction de CreancePhy[6, k]-CreancePhy[7, k]).

    le problème c'est que lorsque j'exécute cette méthode les valeurs après modification ne sont pas correctes.
    j'ai essai plusieurs fois de résoudre le problème mais sans arriver à une solution.

    merci d'avance pour vos aide.


    ce que je veux faire c'est d'avoir une méthode qui me permet de liquider les créances du client suite à un payement dans l'année en cours, càd, si un client fait un payement de 150 dans l'année 2014 sachant qu'il a des factures dans les années 2010, 2011, 2012 et 2013 non encore payés alors la méthode me permet de liquider en premier lieu les créances du client dans les années précédentes (elle doit toucher aux variables "reste à payer dans les années précédentes CreancePhy[4, k]", "le total à payer CreancePhy[6, k]", "le payement en cours CreancePhy[7, k]", "le reste à payer année en cours CreancePhy[8, k]"

  2. #2
    Membre chevronné Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut Mise a jour de tableaux
    Hello,
    Je pense que tu es en face d'un petit problème de conception(donc de fond).
    Je ne sais pas par quel biais le tableau est alimenté mais peu importe, incorporer le code correspondant à une exigence métier dans le code behind d'une fiche ne sera jamais une bonne solution.
    - à preuve, le nombre incalculable de casts dans le code).
    Une meilleure stratégie serait peut être de fabriquer une classe métier représentant une facture, d'en établir la liste (List<Factures> par exemple) et de travailler avec cette liste via une méthode du genre Payer(Double montant).
    Une fois le calcul fait sur les éléments de la liste, l'interface utilisateur est simplement remise à jour avec le nouveau contenu de la liste (Binding ?).

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    sur un langage POO on écrit pas du code comme ca !

    avec une classe et une collection le code est beaucoup plus simple et plus lisible

    dans 2 mois quand tu vas lire ca
    CreancePhy[6, k]
    tu te rappelleras que c'est le total à payer ? ou si un autre développeur passe derrière ? et puis c'est peu maintenable ...

    CreancePhy(6).TotalAPayer

    c'est plus lisible ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/09/2008, 12h54
  2. [Algo] Modification de tableau
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/07/2008, 15h04
  3. [tableau]Méthode pour intialiser un tableau
    Par skyangel dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 29/12/2007, 16h43
  4. méthode static, modification de donnees
    Par tralloc dans le forum Langage
    Réponses: 11
    Dernier message: 01/03/2006, 18h59
  5. Meilleure Méthode pour parcourir un tableau
    Par KPitN dans le forum MFC
    Réponses: 7
    Dernier message: 24/02/2005, 16h19

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