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