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 pour éditer un datagridview&BDD


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut Problème pour éditer un datagridview&BDD
    Bonjour,

    J'essaye en ce moment de créer un programme pour gérer des personnes/structures dans une base de données.

    L'ajout et la suppression fonctionnent bien, mais j'ai un problème pour éditer.

    J'ai plusieurs associations qui deviennent tables, donc j'ai rajouté aux contraintes des " update on cascade & delete on cascade " ( Histoire de pouvoir modifier/supprimer sur le datagrid et que ça puisse se répercuter sur les autres tables sans requête faramineuses ).

    Depuis ce moment là, l'édit ne marche plus, alors qu'il me semblait marcher avant ...

    Je vous donne le code de la fonction édit pour une structure

    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
     Case Is = strchx.Struc
     
     
     
                            Dim MyEditRow As DataRow = Dataset1.Tables(strchoix).Rows(DataGrid1.CurrentRow.Index)
                            MyEditRow.BeginEdit()
                            MyEditRow("nomstruc") = TextBox1.Text
                            MyEditRow("libstruc") = TextBox2.Text
                            MyEditRow("adressestruc") = TextBox3.Text
                            MyEditRow("villestruc") = TextBox4.Text
                            MyEditRow("cedexstruc") = TextBox5.Text
                            MyEditRow("telstruc") = TextBox6.Text
                            MyEditRow("faxstruc") = TextBox7.Text
                            MyEditRow("mailstruc") = TextBox8.Text
                            MyEditRow("sitewebstruc") = TextBox9.Text
                            MyEditRow("libtype") = ComboBox1.SelectedItem
     
                            Dim MyCommBuild4 As New MySqlCommandBuilder(Data)
                            Data.Update(Dataset1, strchoix)
     
                            MsgBox("La structure a bien été modifiée", MsgBoxStyle.Information)
                            DataGrid1.Refresh()
    :


    Le code pour la table Structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE `Structure` (
      `nomstruc` varchar(25) NOT NULL,
      `libstruc` varchar(35) NOT NULL,
      `adressestruc` varchar(35) NOT NULL,
      `villestruc` VARCHAR(20) NOT NULL,
      `cedexstruc` varchar(25) NOT NULL,
      `telstruc` varchar(25) NOT NULL,
      `faxstruc` varchar(25) NOT NULL,
      `mailstruc` varchar(25) NOT NULL,
      `libtype` varchar(25) NOT NULL,
    `sitewebstruc` varchar(30) NOT NULL,
       PRIMARY KEY (`nomstruc`),
       foreign key (`libtype`) references Type(`libtype`) oN DELETE CASCADE ON UPDATE cascade
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Puisque le reste des fonctions marchent ( ajout, suppression ), Je ne pense pas que la cause soit en dehors de ce bout de code.

    J'ai eu beau chercher, je retrouve souvent le même code, et qui marche chez ces personnes.

    Est-ce les deletes/updates on cascade qui posent problèmes ? :'

    Pour info, lorsque j'édite, le datagrid change, mais pas la base de donnée, du coup, si je rafraichis le datagrid, il m'affichera l'ancienne valeur, toujours présente dans la bdd.

    Je vous serais très reconnaissant de m'aider, de pointer le problème, ou même d'émettre des supositions :p

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut
    je ne dis pas que je vais avoir la réponse mais c'est quoi ton message d'erreur ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Il n'y a pas de message d'erreur ...

    Quand j'appuie sur modifier, le datagrid est bien modifié avec les nouvelles valeurs, mais ce n'est pas répercuté sur la BDD :'

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut
    je tente une idée mais sans vraiment être certain de moi :

    j'ai vu que tu construis ton CommandBuilder juste avant de faire le update.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MyCommBuild4 As New MySqlCommandBuilder(Data)
    Data.Update(Dataset1, strchoix)
    moi j'ai pris l'habitude de le faire dès le début :

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Data= New Adapter(SQL, Cnx)
    MyCommBuild4 = New CommandBuilder(Data)
    Dataset1= New DataSet
    Data.Fill(Dataset1)

    Essaye mais j'y crois pas trop.

    par contre je ne comprend pas pourquoi tu fais tout ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim MyEditRow As DataRow = Dataset1.Tables(strchoix).Rows(DataGrid1.CurrentRow.Index)
    MyEditRow.BeginEdit()
    MyEditRow("nomstruc") = TextBox1.Text
    MyEditRow("libstruc") = TextBox2.Text
    .......

    Si tu as un formulaire pourquoi n'est il pas rattaché directement via un databinding, idem pour ton datagridview ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Hum, pour le databinding, je l'utilise pour afficher les infos de la ligne du datagrid sélectionnée quand j'appuie sur modifier, et ça met les infos dans le formulaire.

    Après, je suis étudiant, et j'avoue que je ne sais pas vraiment les diverses options qu'offre le databinding, je sais juste qu'il lie des données à un objet.

    Je me renseigne sur le databinding.

    J'ai essayé ce que tu m'as dit, mais c'est le même problème.

    C'est quand même bizarre que ça marchait avant -_-

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut
    le databinding te permet de relier une propriété d'un Control sur une source.
    et même de gérer le déplacement dans la source.

    Comme dans ton cas si tu te déplace dans le datagridview cela changera automatiquement les valeurs de ton formulaire.

    Si tu ne connais pas je te conseils ces liens :

    VS2008
    http://msdn.microsoft.com/fr-fr/vbasic/bb265238

    VS2005
    http://msdn.microsoft.com/fr-fr/vbasic/cc507206

    --------------

    Pour ton problème initial essaye ces différents solutions l'une après l'autre

    vérifie que tu envoies bien le bon nom de table dans strchoix.
    attention je sais pas si c'est sensible à la case (majuscule/minuscule)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data.Update(Dataset1.Tables(strchoix))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data.Update(Dataset1, "Table")

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

Discussions similaires

  1. [WD-2000] Problème pour éditer des étiquettes
    Par juju05 dans le forum Word
    Réponses: 5
    Dernier message: 09/02/2014, 20h23
  2. [2008R2] SSMS : problème pour éditer un step dans un job
    Par Kropernic dans le forum Administration
    Réponses: 2
    Dernier message: 04/07/2013, 12h47
  3. Problème pour remplir mon datagridview
    Par jacko842 dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/03/2010, 17h14
  4. Réponses: 4
    Dernier message: 04/05/2007, 12h58
  5. Réponses: 21
    Dernier message: 26/04/2007, 16h49

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