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 :

Impossible d'accéder via la ligne aux informations de ligne supprimées.


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Impossible d'accéder via la ligne aux informations de ligne supprimées.
    Bonjour,

    Lorsque j'efface un ligne dans mon dataset, pas de soucis.
    Mais lorsque j'en efface une seconde, le message d'erreur "Impossible d'accéder via la ligne aux informations de ligne supprimées." apparait.

    Solution : appeler la fonction acceptchanges(), mais alors le dataadapter
    n'est pas mis à jour et ne peut modifier la db.

    Pouvez vous m'aider ?

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     private void TSAnnul_Click(object sender, EventArgs e)
            {
                int Cpt = 0;
                string DelString = CBNom.Text; //CBNom.Text se met à jour une fois qu'un item est effacé
                                               //Toutes les lignes àprès la ligne à effacer se trouvent effacées
                                               // Obligation d'utiliser un string de référence.
                if (RDataSet.Tables[0].Rows.Count > 0)
                {
                    if (MessageBox.Show("Vous allez supprimer " + CBNom.Text, "Suppression d'enregistrement",
                                MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        foreach (DataRow Temp in RDataSet.Tables[0].Rows)
                        {
                            RDataRow = RDataSet.Tables[0].Rows[Cpt];
                            if (RDataSet.Tables[0].Rows[Cpt][1].ToString() == DelString)
                            {
                                RDataRow.Delete();
                            }
                            Cpt++;
                        }
                    }
                }
                else
                    MessageBox.Show("Aucun enregistrement n'est présent dans la table T_CALOC", "Suppression d'enregistrement",
                                MessageBoxButtons.OK,MessageBoxIcon.Information);
            }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    1/ utilise les balises [code] EDIT : ah tiens maintenant c'est fait

    2/ ta boucle est inutilement compliquée, donc on n'y voit rien...

    3/ par contre, normalement ça devrait marcher est-ce que la DataTable est susceptible de contenir des DataRow déjà supprimés (avant l'appel de cette fonction) ? dans ce cas, rajoute un test avant d'essayer de lire le contenu du champ n°1...


    Code corrigé + proposition de test :
    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
     
    private void TSAnnul_Click(object sender, EventArgs e)
    {
        string DelString = CBNom.Text; //CBNom.Text se met à jour une fois qu'un item est effacé
        //Toutes les lignes àprès la ligne à effacer se trouvent effacées
        // Obligation d'utiliser un string de référence.
        if (RDataSet.Tables[0].Rows.Count > 0)
        {
            if (MessageBox.Show("Vous allez supprimer " + CBNom.Text, "Suppression d'enregistrement", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                foreach (DataRow Temp in RDataSet.Tables[0].Rows)
                {
                    // si la ligne est déjà supprimée on n'essaie pas de la lire ni de la re-supprimer...
                    if (Temp.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }
                    if (Temp[1].ToString() == DelString)
                    {
                        Temp.Delete();
                    }
                }
            }
        }
        else
        {
            MessageBox.Show("Aucun enregistrement n'est présent dans la table T_CALOC", "Suppression d'enregistrement", MessageBoxButtons.OK,MessageBoxIcon.Information);
        }
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci ça fonctionne très bien et c'est très logique.

    Pourquoi quand on est débutant aller chercher les solutions si loin.

    Manque de connaissance....

    Merci encore et bonne journée.

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 28/05/2014, 14h45
  2. [WD-2007] Les signets WORD TO PDF - Accéder via l'url aux signets
    Par titwink dans le forum Word
    Réponses: 1
    Dernier message: 20/12/2011, 00h55
  3. Impossible d'accéder aux lignes 7 et 8 d'unTableLayoutPanel
    Par Ghunter59 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 29/12/2008, 11h36
  4. [VB.NET]Accéder aux informations d'un PC a distance
    Par Dnx dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/10/2005, 11h39
  5. Impossible d'accéder aux tables non créées par dbo
    Par Pete dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/10/2005, 14h01

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