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 :

Problème lors du Release


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Problème lors du Release
    Bonjour à tous,

    Je dois avouez ne plus savoir ou chercher...Donc voici :

    J'ai monté un programme utilisant les outils de bases de MVSExpress C# 2010, soit :
    DataGrid, Dataset, Datatable, TextBox, Forms et.... c'est à peu près tout (pas de SQL, tout est fait avec du CSV - car lié avec un système qui utilise le csv.. )

    J'utilise actuellement le programme sur 3 ordinateurs. Ils ont tous Windows 7: 2 avec 64 bits, 1 avec 32 bits, et tout fonctionne correctement. Toutefois, j'ai essayé de mettre le programme (Le mode Release fait par MVSExpress C#) sur un 4e ordinateur utilisant W7 et 64-bit et... j'obtiens le message d'erreur suivant (Et ce, autant en mode Débug qu'en mode Release)

    Message :
    /////////////////

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
    Parameter name: index
    at System.Collections.ArrayList.get_Item(Int32 index)
    at System.Windows.Forms.DataGridViewRowCollection.SharedRow(Int32 rowIndex)
    at System.Windows.Forms.DataGridViewRowCollection.get_Item(Int32 index)
    at WindowsFormsApplication1.ModifDesInfos.InscrireLesModifs()
    at WindowsFormsApplication1.ModifDesInfos.BtnAccept_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.237 (RTMGDR.030319-2300)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    ----------------------------------------
    Comptabilité
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Jonathan/Desktop/Tester/Comptabilit%E9.exe
    ----------------------------------------
    System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.235 built by: RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.236 built by: RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.237 (RTMGDR.030319-2300)
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.233 built by: RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.233 built by: RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.1 built by: RTMRel
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
    ----------------------------------------

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

    ///////////////////////
    En mode débug, le problème semble provenir des TextBox... J'ai mis à jours le .NET Framework 4. Installé MVSExpress 2010 sur l'ordinateur en question en pensant que celui-ci pourrait installer le driver manquant (ou autre software...). J'ai fait les updates de windows...

    Bref, rien à faire je ne vois pas d'où viens le problème.

    Est-ce que quelqu'un part un heureux hasard saurait quoi faire??

    Merci à l'avance!!

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Hello,

    regarde bien le message qui t'es renvoyé. Il y a une erreur quelque part dans la méthode InscrireLesModifs.

    Tu peux montrer ce que fait cette méthode ? Visiblement, elle modifie la datagridview, en récupérant une ligne par un index qui est plus grand que le nombre de lignes.
    ಠ_ಠ

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    le problème ne vient pas du changement de machine, même si c'est qui montre le soucis

    le problème est dans ton code, il faut des try catch, et coder correctement

    un bug de développement est parfois quelque chose qui se produit très rarement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci de vos réponses rapides. Guulh Voici la méthode :

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    private void InscrireLesModifs()
            {
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTrans"]            = lblTrans.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneDateCompt"]        = dtDateCompTrans.Text;
     
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneDateSaisi"]        = dtDateSaisi.Value.ToString().Remove(10);
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneDateModif"]        = dtDateModif.Value.ToString().Remove(10);
     
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCompteImpute"]     = cbCompteImpute.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCommentaire"]      = txtComment.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCQ"]               = txtNumCheque.Text;
     
                for (int i = 0; i < MainFrame.ColConciliation.Rows.Count; i++)
                {
                    if ( MainFrame.ColConciliation.Rows[i]["ColonneMois"].ToString() == cbConciliation.Text)
                        MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneConciliation"] =
                            MainFrame.ColConciliation.Rows[i]["ColonnePeriode"].ToString();
                }
                //Donne la couleur voulu
                if (cbCouleur.SelectedIndex == 0 || cbCouleur.SelectedIndex == 137)
                {
                    MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCouleur"]      = " "; // WHITE
                    if (Form_parent.dtGrTransactions.Rows.Count > 0)
                    {
                        Form_parent.dtGrTransactions.Rows[int.Parse(lblRangeActuelleDataGrid.Text)].DefaultCellStyle.BackColor = Color.White;
                    }
                }
                else
                {
                    MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCouleur"]             = cbCouleur.SelectedIndex;
                    if (Form_parent.dtGrTransactions.Rows.Count > 0)
                    {
                        Form_parent.dtGrTransactions.Rows[int.Parse(lblRangeActuelleDataGrid.Text)].DefaultCellStyle.BackColor = Color.FromName(cbCouleur.Text);
                    }
                }
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneImputableA"]       = cbDivisionImputable.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonnePayePar"]          = cbDivisionPayante.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneDebit"]            = txtDebitTrans.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCredit"]           = txtCreditTrans.Text;
     
                //Gère la TPS
                if (TPSaPayer.Text != "")
                {
                    if (lblTPSaPayer.Text == "-")
                    {
                        MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTPSaPayer"] = lblTPSaPayer.Text + TPSaPayer.Text;
                    }
                    else
                    {
                        MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTPSaPayer"] = TPSaPayer.Text;
                    }
                }
                else
                {
                    MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTPSaPayer"] = "";
                }
     
                //Gère la TVQ
                if (TVQaPayer.Text != "")
                {
                    if (lblTVQaPayer.Text == "-")
                    {
                        MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTVQaPayer"] = lblTVQaPayer.Text + TVQaPayer.Text;
                    }
                    else
                    {
                        MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTVQaPayer"] = TVQaPayer.Text;
                    }
                }
                else
                {
                    MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneTVQaPayer"] = "";
                }
     
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneQxTPSTVQ"]         = txtQx.Text;
                MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneDejaImpute"]       = txtDejaImpute.Text;
     
     
            }
    ET, voici la ligne qui saute si je roule en mode dé-bug (#34), ils me disent qu'un string ne peu pas être vide :

    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
     private void ControleDesInformationsMonetaires(TextBox TextBoxAVerifier)
            {
                try
                {
                    if (TextBoxAVerifier.Text != "")
                    {
                        double test = double.Parse(TextBoxAVerifier.Text);
                    }
                }
                catch
                {
                    if (DerniereToucheFrapper == ",")
                    {
                        int nombre = 0;
                        for (int i = 0; i < TextBoxAVerifier.Text.Length; i++)
                        {
                            if (TextBoxAVerifier.Text[i].ToString() == ".")
                            {
                                nombre++;
                            }
                        }
     
                        if (nombre > 0)
                        {
                            TextBoxAVerifier.Text = TextBoxAVerifier.Text.Replace(DerniereToucheFrapper, "");
                        }
                        else
                        {
                            TextBoxAVerifier.Text = TextBoxAVerifier.Text.Replace(DerniereToucheFrapper, ".");
                        }
                    }
                    else
                    {
                        TextBoxAVerifier.Text = TextBoxAVerifier.Text.Replace(DerniereToucheFrapper, "");
                    }
                    TextBoxAVerifier.Text = TextBoxAVerifier.Text.Replace(DerniereToucheFrapper, "");
                    TextBoxAVerifier.SelectionStart = TextBoxAVerifier.Text.Length;
                    TextBoxAVerifier.ScrollToCaret();
                }
            }
    Dont derniereToucheFrapper provient de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void KeyPressControl(object sender, KeyPressEventArgs e)
            {
                DerniereToucheFrapper = e.KeyChar.ToString();
     
            }
    Pour d'autres informations sur la méthode :
    En bref, ce qu'elle fait, c'est prendre la transaction (ligne) dans le DataGrid du Form : Mainframe et remplis les boîtes de textes individuelles - un peu comme le ferait un detailsview (je l'ai fais ainsi car mes connaissances des contrôles du detailsview sont limités et j'ai ainsi des validations d'erreurs dynamique).

    ** Ce qui est étrange, c'est que le message d'erreur que j'ai mis précédement, ne se lance pas lorsque cette méthode est demandé dans le code. Le message d'erreur arrive lors de l'ouverture du Forms et non à l'appuie du bouton AccepterLesModifs (Bouton qui appelle cette méthode).

    Tel qu'indiqué précédement, le problème semble être lié aux TextBox... mais je vois pas trop pourquoi.

    Finalement, pourquoi les 3 autres PC ne voient pas se problème? Je trouve ça étrange.
    Merci encore pour votre aide
    P.S.: Je ne suis pas programmeur, donc navré si les conventions ne sont pas suivis. Je comprends bien qu'il est difficile de faire quelque chose avec simplement le code, mais bon, merci d'essayer, c'est apprécié!

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    moi je tenterais au début :
    if MainFrame.dtTbTransactions.Rows is null || MainFrame.dtTbTransactions.Rows.count == 0 => sortir du void
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    DttbTransaction -> qui est ma datasource de mon datagrid ne peut pas être 0 et ouvrir le panneau ModifDesInfos car le bouton est une colonne de mon datagridview. Donc s'il y a un bouton, il y a forcément une ligne? (non?)

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    surement, mais je tenterais quand même à défaut d'autre proposition ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Re-hello,

    même si tu n'es pas programmeur, un conseil d'ordre général: stocke dans une variable les expressions dont tu te sers souvent. Ici, int.Parse(labelMachin.Text) apparaît une vingtaine de fois, ce qui rend le code pas très lisible.
    Ca deviendrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int rangeeActuelle = int.Parse(lblRangeActuelle.Text);
    MainFrame.dtTbTransactions.Rows[rangeActuelle]["ColonneTrans"] = lblTrans.Text;
    ...
    En plus, visiblement, ta méthode n'édite qu'une ligne de la grille, à savoir MainFrame.dtTbTransactions.Rows[rangeActuelle]; elle aussi, tu pourrais n'en garder qu'une référence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DataGridViewRow ligneActuelle = MainFrame.dtTbTransactions.Rows[rangeActuelle];
    ligneActuelle["ColonneTrans"] = lblTrans.Text;
    ...
    C'est tout de suite plus lisible

    En plus: justement, comme on vient de voir, tu ne manipules que cette ligne, dans cette grille: es-tu sûr que la grille n'a pas moins de ligne que lblRangeActuelle.Text ? D'où vient ce label ?

    En plus: à quoi correspond le dernier code que tu as posté ? Ce n'est pas lui qui est à l'origine de l'erreur dont tu as posté l'exception dans ton premier post, non ?
    ಠ_ಠ

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En plus: justement, comme on vient de voir, tu ne manipules que cette ligne, dans cette grille: es-tu sûr que la grille n'a pas moins de ligne que lblRangeActuelle.Text ? D'où vient ce label ? Ce label me permet d'enregistrer la ligne du DataGrid qui a été sélectionné dans mon Form de modification d'information. Ainsi, si plusieurs transactions sont ouvertes en même temps, le programme peut lire cet information et savoir d'où provenait la ligne afin d'y faire la correction.

    En plus: à quoi correspond le dernier code que tu as posté ? Ce n'est pas lui qui est à l'origine de l'erreur dont tu as posté l'exception dans ton premier post, non ? Le tout premier post correspondait au message que l'on obtient avec le "Release" du programme. Le deuxième, lui, représente la ligne ou le débugeur de MVSExpress arrête en mode développement.

    Finalement, j'ai fais certains tests de logiques avec le datagrid, et essayé ce que Pol63 avait proposé et je doute que ce soit réellement le problème, car :
    1 - Si c'était vraiment un index qui dépassait, le problème serait soulevé sur les 3 autres PC, non?
    2 - Puisque la valeur de la ligne (RangeActuelle.txt) Provient du DataGrid, d'un bouton dans la ligne en question, il semble impossible que celui-ci soit inexistant dans la grid; car il est généré à partir d'une ligne existante...
    3 - Le problème semble être effectivement un problème lié à un index, mais avec d'autres panneaux de l'application, le message System.ArgumentException apparaît aussi pour d'autres code d'erreur (erreurs que je ne vois pas sur les 3 autres PC).

    Ainsi, j'aimerais savoir (si vous le savez) pourquoi seulement cet ordinateur là ne parvient pas à faire les calculs qui fonctionne sur les 3 autres, et même, comment ça pourrait être possible....ne doivent-ils pas tous lire le code de la même façon?

    Mon hypothèse actuelle était une suite de software/updates/programmes différentes entre les PC qui pourrait causer le problème... Est-ce logique/plausible? (J'ai déjà essayé de mettre à jour sur le PC en question tous les éléments relier au FrameWork .NET et aux updates de W7 avec windows update - sans succès).

    P.S.: Merci pour les conseils de programmation, j'en prends bonne note !!

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    tout le monde va être formel là dessus, le problème vient forcément de ton code, ou des données mais pas de .net
    .net est très peu buggé, et ce n'est pas ce genre de gros bug qu'on peut y trouver
    un exe .net fera toujours la même chose sur toutes les machines, sinon ca serait grave !

    at System.Windows.Forms.DataGridViewRowCollection.get_Item(Int32 index)
    at WindowsFormsApplication1.ModifDesInfos.InscrireLesModifs()
    une pile ca se lit en remontant, une chose est sure sur ce message d'erreur, la méthode InscrireLesModifs a demandé une Row qui n'existe pas
    donc la question c'est avec quoi remplis tu ton datagrid, car le soucis doit venir que sur ce pc il n'est pas rempli

    vu que ton code a été simplifié et que la row tu ne la cherches qu'une fois, tu peux rajouter dans le code un test qui vérifie que la row existe, sinon de mettre un message ou autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Points : 460
    Points
    460
    Par défaut
    Bonjour,

    Euh j'ai une petit remarque sur le code
    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
                if (cbCouleur.SelectedIndex == 0 || cbCouleur.SelectedIndex == 137)
                {
                    MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCouleur"]      = " "; // WHITE
                    if (Form_parent.dtGrTransactions.Rows.Count > 0)
                    {
                        Form_parent.dtGrTransactions.Rows[int.Parse(lblRangeActuelleDataGrid.Text)].DefaultCellStyle.BackColor = Color.White;
                    }
                }
                else
                {
                    MainFrame.dtTbTransactions.Rows[int.Parse(lblRangeActuelle.Text)]["ColonneCouleur"]             = cbCouleur.SelectedIndex;
                    if (Form_parent.dtGrTransactions.Rows.Count > 0)
                    {
                        Form_parent.dtGrTransactions.Rows[int.Parse(lblRangeActuelleDataGrid.Text)].DefaultCellStyle.BackColor = Color.FromName(cbCouleur.Text);
                    }
                }
    C'est normal que tout d'un coup tu utilise plus le même label pour recuperer le numéro de ligne?

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour antoine, voici la réponse à ta remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lblRangeActuelle.Text = MainFrame.RangeActuelle.ToString();
    lblRangeActuelleDataGrid.Text = MainFrame.RangeActuelleDuDataGrid.ToString();
    le premier est la rangé dans la DataTable, et le deuxième la valeur dans la DataGrid, car s'il y a des filtres, les 2 peuvent différer.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Afin de vous démontrer que le problème ne semble pas vraiment provenir du code, voici un problème provenant d'un autre bouton de l'application - bouton qui fonctionne parfaitement encore sur tous les autres ordinateurs. Êtes-vous capable de voir un problème commun aux deux messages d'erreurs?

    ************** Texte de l'exception **************
    System.FormatException: Le format de la chaîne d'entrée est incorrect.
    à System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
    à WindowsFormsApplication1.MainFrame.GenererUneEcritureAutomatique(Int32 i)
    à WindowsFormsApplication1.MainFrame.regenererAuCompletLesEA()
    à WindowsFormsApplication1.MainFrame.GenereLeGL()
    à WindowsFormsApplication1.ConsultationGL.ChargeLaRequete(MainFrame MainFrame, String Colonne, String critereChercher)
    à WindowsFormsApplication1.ConsultationGL..ctor(MainFrame MainFrame, String Colonne, String critereChercher)
    à WindowsFormsApplication1.MainFrame.dtGrTransactions_CellContentClick(Object sender, DataGridViewCellEventArgs e)
    à System.Windows.Forms.DataGridView.OnCellContentClick(DataGridViewCellEventArgs e)
    à System.Windows.Forms.DataGridView.OnCommonCellContentClick(Int32 columnIndex, Int32 rowIndex, Boolean doubleClick)
    à System.Windows.Forms.DataGridViewCell.OnMouseUpInternal(DataGridViewCellMouseEventArgs e)
    à System.Windows.Forms.DataGridView.OnCellMouseUp(DataGridViewCellMouseEventArgs e)
    à System.Windows.Forms.DataGridView.OnMouseUp(MouseEventArgs e)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.DataGridView.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Assemblys chargés **************
    Finalement, j'ai essayé de mettre des try-catch tel qu'indiqué pour vérifier si la ligne existe bel et bien, mais le problème est que le programme "plante" sans lancer la méthode .ModifdesInfos... donc le programme n'Existe pas le try-catch et "plante" pareil.

    .... Bref si vous êtes capables de voir un problème commun dans les 2 messages d'erreurs merci de me l'indiquer, sinon, je vais arrêter de vous déranger avec ce problème et je vous tiendrai au courant si je parviens à le résoudre.

    Merci encore pour votre temps.

  14. #14
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Facile: la langue de tes windows n'est pas la même. Et donc, sachant que:
    - Les français utilisent la virgule comme séparateur décimal, les ricains le point
    - Les méthodes ToString et Parse se comportent différemment selon la CultureInfo associé au thread courant (si les regional settings sont fr, alors 3.4ToString() renvoie "3,4"; s'ils sont en, ca donnera "3.4")
    - Ton code considère que le séparateur décimal est la virgule


    Ca expliquerait que ça plante chez l'un et pas chez l'autre. Regarde bien le message d'erreur: c'est la méthode ParseDouble qui pète. C'est une méthode de conversion de string vers double, qui lance une exception si la traduction est impossible (par exemple double.Parse("toto")

    Sur quel string appelles-tu ParseDouble ? Est-ce une saisie utilisateur ?
    ಠ_ಠ

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci!!!! C'était effectivement le problème!! Nous avons regardé aujourd'hui et corrigé le tout.

    Une petite question avant de clore la discussion pour de bon :
    Est-il possible de forcer le système d'utiliser le "." comme décimal et la "," comme séparateur de listes (ou autres paramètres) lors de l'exécution de l'application?

    Merci encore pour tout! Vous voulez pas savoir combien de temps j'ai cherché pour ce si minime détail!

  16. #16
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    La culture utilisée pour formater les valeurs numériques est celle ci : http://msdn.microsoft.com/en-us/libr...ntculture.aspx. Elle est assignée par défaut à la culture du windows dans lequel l'appli tourne, mais c'est surchargeable.

    Donc si tu veux que tout soit en fr quelle que soit la config du poste, tu dois mettre quelque chose dans ce style au début de ton appli:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.CurrentCulture = new CultureInfo("fr-FR");
    J'ai pas de compilo sous la main pour vérifier, mais c'est quelque chose comme ça.
    ಠ_ಠ

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2007, 21h45
  2. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37
  3. Problème lors du EXTEND d'un tableau
    Par banana31 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/02/2004, 10h58
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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