Bonjour à tous,
J'ai un problème, j'ai une base de données sql server 2000 qui est composée de : auteur, etagere, genre, livre.
J'ai fait un dataset, j'utilise des dataadapter et un sqlconnection.
Mon problème vient de la table auteur, je n'arrive pas à récupérer les données de cette table pour les afficher sur mon formulaire, pourtant quand je crée un nouvel auteur par le formulaire, cela enregistre bien dans la base de données. Merci

Voici le code du menu principal :
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
 
public Menuprincipal()
        {
            InitializeComponent();
            //efface les lignes de l'ensemble des tables du dataset
            dbDs_bibliotheque1.Clear();
            //connecte le dataset et la base de données
            dbAd_livre.Fill(dbDs_bibliotheque1, "auteur");
            //pour la modification des lignes de la table auteur
            dbDs_bibliotheque1.auteur.RowChanged += new DataRowChangeEventHandler(auteur_RowChanged);
            //pour supprimer des lignes de la table auteur
            dbDs_bibliotheque1.auteur.RowDeleted += new DataRowChangeEventHandler(auteur_RowDeleted);
        }
 
        private void auteur_RowChanged(object sender, DataRowChangeEventArgs e)
        {
            //si modification et ajout
            if (e.Action == DataRowAction.Add || e.Action == DataRowAction.Change)
            {
                try
                {
                    //mise à jour de auteur
                    dbAd_auteur.Update(new DataRow[] { e.Row });
                }
                catch (Exception pb)
                {
                    MessageBox.Show(pb.ToString());
                    e.Row.RejectChanges();
                }
            }
        }
 
        private void auteur_RowDeleted(object sender, DataRowChangeEventArgs e)
        {
            //si supression
            if (e.Action == DataRowAction.Delete)
            {
                try
                {
                    //mise à jour de auteur
                    dbAd_auteur.Update(new DataRow[] { e.Row });
                }
                catch (Exception pb)
                {
                    MessageBox.Show(pb.ToString());
                    e.Row.RejectChanges();
                }
            }
        }
 
        private void bt_entree_livre_Click(object sender, EventArgs e)
        {
            Entreelivre fentlivre = new Entreelivre(dbDs_bibliotheque1);
            fentlivre.Show();
        }
Voici mon code pour l'auteur, celui où il y a le problème :
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
 
public partial class Entreeauteur : Form
    {
        //dataset
        dbDs_bibliotheque dbDs;
        //dataview
        DataView dbDv;
        public Entreeauteur()
        {
            InitializeComponent();
        }
 
        public Entreeauteur(dbDs_bibliotheque p_dbDs)
            : this()
        {
            //récupère les valeurs du dataset
            dbDs = p_dbDs;
            //création d'un nouveau dataview
            dbDv = new DataView(dbDs.auteur);
            //ordre de tri
            dbDv.Sort = "nom ASC";
            //suspend la liaison des données
            this.BindingContext[dbDv].SuspendBinding();
            //rétablit la liaison des données
            this.BindingContext[dbDv].ResumeBinding();
            //numéro de l'auteur
            this.txt_num_auteur.DataBindings.Add("Text", dbDv, "numeroauteur");
            //nom de l'auteur
            this.txt_nom_auteur.DataBindings.Add("Text", dbDv, "nom");
            //prenom de l'auteur
            this.txt_prenom_auteur.DataBindings.Add("Text", dbDv, "prenom");
            affichePosCpt();
        }
 
        private void affichePosCpt()
        {
            //total auteur
            string total = (this.BindingContext[dbDv].Count).ToString();
            //numero position auteur
            string num = ((this.BindingContext[dbDv].Position) + 1).ToString();
            tb_posCpt.Text = num + "/" + total;
        }
 
        private void bt_premier_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne au premier enregistrement
            this.BindingContext[dbDv].Position = 0;
            affichePosCpt();
        }
 
        private void bt_precedent_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne à l'enregistrement précédent
            this.BindingContext[dbDv].Position--;
            affichePosCpt();
        }
 
        private void bt_suivant_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne à l'enregistrement suivant
            this.BindingContext[dbDv].Position++;
            affichePosCpt();
        }
 
        private void bt_dernier_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne au dernier enregistrement
            this.BindingContext[dbDv].Position = this.BindingContext[dbDs, dbDs.auteur.TableName].Count - 1;
            affichePosCpt();
        }
 
        private void bt_ajout_Click(object sender, EventArgs e)
        {
            //ajout d'un nouveau auteur
            this.BindingContext[dbDv].AddNew();
            affichePosCpt();
        }
 
        private void bt_ok_Click(object sender, EventArgs e)
        {
            try
            {
                //message de dialogue
                if (MessageBox.Show("Voulez vous faire la modification?", "Message de confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    //mise à jour de l'auteur
                    this.BindingContext[dbDv].EndCurrentEdit();
                    affichePosCpt();
                }
            }
            catch (System.Exception pb)
            {
                MessageBox.Show(pb.Message);
            }
        }
    }
Voici mon code de l'étagère qui fonctionne et qui ressemble à celui de l'auteur :
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
public partial class Entreeetagere : Form
    {
        //dataset
        dbDs_bibliotheque dbDs;
        //dataview
        DataView dbDv;
        public Entreeetagere()
        {
            InitializeComponent();
        }
 
        public Entreeetagere(dbDs_bibliotheque p_dbDs)
            : this()
        {
            //récupère les valeurs du dataset
            dbDs = p_dbDs;
            //création d'un nouveau dataview
            dbDv = new DataView(dbDs.etagere);
            //ordre de tri
            dbDv.Sort = "libelleetagere ASC";
            //suspend la liaison des données
            this.BindingContext[dbDv].SuspendBinding();
            //rétablit la liaison des données
            this.BindingContext[dbDv].ResumeBinding();
            //numéro de l'étagère
            this.txt_num_etagere.DataBindings.Add("Text", dbDv, "numeroetagere");
            //libellé de l'étagère
            this.txt_libelle_etagere.DataBindings.Add("Text", dbDv, "libelleetagere");
            affichePosCpt();
        }
 
        private void affichePosCpt()
        {
            //total étagère
            string total = (this.BindingContext[dbDv].Count).ToString();
            //numero position étagère
            string num = ((this.BindingContext[dbDv].Position) + 1).ToString();
            tb_posCpt.Text = num + "/" + total;
        }
 
        private void bt_premier_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne au premier enregistrement
            this.BindingContext[dbDv].Position = 0;
            affichePosCpt();
        }
 
        private void bt_precedent_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne à l'enregistrement précédent
            this.BindingContext[dbDv].Position--;
            affichePosCpt();
        }
 
        private void bt_suivant_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne à l'enregistrement suivant
            this.BindingContext[dbDv].Position++;
            affichePosCpt();
        }
 
        private void bt_dernier_Click(object sender, EventArgs e)
        {
            //annule la modification en cours
            this.BindingContext[dbDv].CancelCurrentEdit();
            //se positionne au dernier enregistrement
            this.BindingContext[dbDv].Position = this.BindingContext[dbDs, dbDs.etagere.TableName].Count - 1;
            affichePosCpt();
        }
 
        private void bt_ajout_Click(object sender, EventArgs e)
        {
            //ajout d'une nouvelle étagère
            this.BindingContext[dbDv].AddNew();
            affichePosCpt();
        }
 
        private void bt_ok_Click(object sender, EventArgs e)
        {
            try
            {
                //message de dialogue
                if (MessageBox.Show("Voulez vous faire la modification?", "Message de confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    //mise à jour d'étagère
                    this.BindingContext[dbDv].EndCurrentEdit();
                    affichePosCpt();
                }
            }
            catch (System.Exception pb)
            {
                MessageBox.Show(pb.Message);
            }
        }
    }