Bonjour a tous,

J'ai un petit probleme avec mon appli. J'utilise une base de données .mdb dans laquelle je stocker des données clients.

Mon appli permet d'ajouter/supprimer/modifier cette base de données. Elles est composée de 3 tables liées entre elles:

- table "Clients"
- table "Contact"
- table "Intervention"

Cette DB a été créée sous access ainsi que les liaisons entre les tables.

Dans mon appli je cré donc un dataset (dataset1) qui recupere un client particulier et ces contacts et interventions associées.

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
 
strClientPath = Application.StartupPath + "\\Clients\\" + comboBox1.SelectedValue + "\\" + listBox2.SelectedItem.ToString();
            cn = new OleDbConnection(strAccessConn);
            cn.Open();
            // creation des string SQL
            string strSQLClientClientID = " select * from Client WHERE ClientID=" + ClientID;
            string strSQLContactClientID = " select * from Contact WHERE ClientID=" + ClientID;
            string strSQLInterventionClientID = " select * from Intervention WHERE ClientID=" + ClientID;
            // creation des dataadapters
            da1 = new OleDbDataAdapter(strSQLClientClientID, cn);
            da2 = new OleDbDataAdapter(strSQLContactClientID, cn);
            da3 = new OleDbDataAdapter(strSQLInterventionClientID, cn);
            // creation et remplissage du dataset
            dataset1 = new DataSet();
            da1.FillSchema(dataset1, SchemaType.Mapped, "Client");
            da1.Fill(dataset1, "Client");
            da2.FillSchema(dataset1, SchemaType.Mapped, "Contact");
            da2.Fill(dataset1, "Contact");
            da3.FillSchema(dataset1, SchemaType.Mapped, "Intervention");
            da3.Fill(dataset1, "Intervention");
            cn.Close();
Ensuite le lie les differents éléments de ma form (textbox, combobox ect...) avec les différents champs des tables.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
textBox1.DataBindings.Add(new Binding("Text", dataset1, "Client.ClientName"));
textBox2.DataBindings.Add(new Binding("Text", dataset1, "Client.ClientNumber"));
richTextBox4.DataBindings.Add(new Binding("Text", dataset1, "Client.ClientAdress"));
listBox1.DataSource = dataset1.Tables[1];
listBox1.DisplayMember = dataset1.Tables[1].Columns["ContactNom"].ColumnName;
 .....
Au final mes datatables de mon dataset contiennent:

- datatable "Client": 1 seul enregistrement
- datatable "Contact": 0 a n enregistrement
- datatable "Intervention": 0 a n enregistrement


jusque la pas de soucis j'ai bien les valeur des champs des datables de mon dataset qui sont mis a jour dans les textbox ect...

Par contre quand je modifie une textbox, la valeur du champ correspondant dans la datatable de mon dataset semble être mise a jour, par contre l'état de la datarow correspondant reste a "unchanged"....

du coup je ne peux pas faire la mise a jour de mon dataset car les modif ne sont pas mise a jour

De plus sur mes datatables de mon dataset, je peux:

- modifier des valeurs
- supprimer ou ajouter des enregistrements sur mes datatables "Contact" et "intervention".

Pour mettre a jour mon dataset, je dois créer une OleDBcommand pour chaque cas de figure? update, add, suppression?

merci pour vos lumières