Mar.27
TP18 : Gestion de Bibliothèque en mode déconnecté (retour d’emprunt)
Objectif
Compléter l’application des Gestion de Bibliothèque en mode déconnecté.
Questions
Il s’agit maintenant de réaliser le retour d’emprunts de livres par des adhérents.
- Créer l’interface suivante :
- Créer les objets nécessaires et le code réalisant les travaux demandés :
- Au choix d’un adhérent, son nom et ses emprunts passés sont affichées.
- Après sélection de l’emprunt à retourner et le choix d’une date de retour, Le bouton Enregistrer permet :
- Enregistrer le retour dans la DataTable Emprunt
- Afficher la date de retour de l’emprunt sélectionné dans le DataGridView.
- Enregistrer les mises à jour sur la table Emprunt dans la base de donnée.
Correction
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace TP19_Bibl { public partial class Form1 : Form { SqlConnection conn = new SqlConnection("server = DESKTOP-EIALG0J\\SQLEXPRESS; database = bibliotheque; integrated security = SSPI"); DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { conn.Open(); da = new SqlDataAdapter("select * from Theme", conn); da.Fill(ds, "Theme"); da = new SqlDataAdapter("select * from Livre", conn); da.Fill(ds, "Livre"); da = new SqlDataAdapter("select * from Adherent", conn); da.Fill(ds, "Adherent"); da = new SqlDataAdapter("select * from Emprunt", conn); da.Fill(ds, "Emprunt"); DataColumn[] PK_Theme = new DataColumn[1]; PK_Theme[0] = ds.Tables["Theme"].Columns[0]; ds.Tables["Theme"].PrimaryKey = PK_Theme; DataColumn[] PK_Livre = new DataColumn[1]; PK_Livre[0] = ds.Tables["Livre"].Columns[0]; ds.Tables["Livre"].PrimaryKey = PK_Livre; DataColumn[] PK_Adherent = new DataColumn[1]; PK_Adherent[0] = ds.Tables["Adherent"].Columns[0]; ds.Tables["Adherent"].PrimaryKey = PK_Adherent; DataColumn[] PK_Emprunt = new DataColumn[3]; PK_Emprunt[0] = ds.Tables["Emprunt"].Columns[0]; PK_Emprunt[1] = ds.Tables["Emprunt"].Columns[1]; PK_Emprunt[2] = ds.Tables["Emprunt"].Columns[2]; ds.Tables["Adherent"].PrimaryKey = PK_Emprunt; ds.Relations.Add("Rel_Adherent_Emprunt", ds.Tables["Adherent"].Columns["CodeAdherent"], ds.Tables["Emprunt"].Columns["CodeAdherent"]); ds.Relations.Add("Rel_Livre_Emprunt", ds.Tables["Livre"].Columns["CodeLivre"], ds.Tables["Emprunt"].Columns["CodeLivre"]); ds.Relations.Add("Rel_Theme_Livre", ds.Tables["Theme"].Columns["CodeTheme"], ds.Tables["Livre"].Columns["CodeTheme"]); conn.Close(); codeAdherent.DataSource = ds.Tables["Adherent"]; codeAdherent.DisplayMember = ds.Tables["Adherent"].Columns[0].ColumnName; codeAdherent.ValueMember = ds.Tables["Adherent"].Columns[1].ColumnName; codeAdherent.SelectedIndex = -1; } private void codeAdherent_SelectionChangeCommitted(object sender, EventArgs e) { if (codeAdherent.SelectedIndex != -1) { dv.Rows.Clear(); nomAdherent.Text = codeAdherent.SelectedValue.ToString(); int x = int.Parse(codeAdherent.GetItemText(codeAdherent.SelectedItem)); for (int i = 0; i < ds.Tables["Emprunt"].Rows.Count; i++) { if (int.Parse(ds.Tables["Emprunt"].Rows[i][0].ToString()) == x) { string pos = ds.Tables["Emprunt"].Rows[i][1].ToString(); //DataRow ligne = ds.Tables["Emprunt"].Rows[pos].GetParentRow("Rel_Livre_Emprunt"); string codeL = ""; string TitreL = ""; foreach (DataRow ligne in ds.Tables["Livre"].Rows) // search whole table { if (ligne["CodeLivre"].ToString().Equals(pos)) { codeL = ligne["CodeLivre"].ToString(); TitreL= ligne["TitreLivre"].ToString(); } } if (ds.Tables["Emprunt"].Rows[i][3].ToString() != "") { dv.Rows.Add(codeL, TitreL, ((DateTime)ds.Tables["Emprunt"].Rows[i][2]).ToString("dd-MM-yyyy"), ((DateTime)ds.Tables["Emprunt"].Rows[i][3]).ToString("dd-MM-yyyy")); } else { dv.Rows.Add(codeL, TitreL, ((DateTime)ds.Tables["Emprunt"].Rows[i][2]).ToString("dd-MM-yyyy")); } } } } } private void Enregistrer_Click(object sender, EventArgs e) { int i = dv.CurrentRow.Index; String codeL = dv.Rows[i].Cells[0].Value.ToString(); for (int j =0; j < ds.Tables["Emprunt"].Rows.Count; j++) // search whole table { if (ds.Tables["Emprunt"].Rows[j][0].ToString().Equals(codeAdherent.Text) && ds.Tables["Emprunt"].Rows[j][1].ToString().Equals(codeL)) { dv.Rows[i].Cells[3].Value = dateRetour.Value.Date.ToString("dd-MM-yyyy"); ds.Tables["Emprunt"].Rows[j][3] = dateRetour.Value.Date.ToString("dd-MM-yyyy"); } } conn.Open(); SqlDataAdapter ad = new SqlDataAdapter("select * from Emprunt", conn); SqlCommandBuilder sqb = new SqlCommandBuilder(ad); ad.Update(ds, "Emprunt"); conn.Close(); } } }