Mar.27
TP17 : Gestion de Bibliothèque en mode déconnecté (emprunt)
Objectif
Compléter l’application des Gestion de Bibliothèque en mode déconnecté.
Questions
Partie serveur :
- Dans la base bibliotheque, crée les tables suivantes :
Partie client :
- Créer l’interface suivante :
- Créer les objets nécessaires et le code réalisant les travaux demandés :
- 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.
- Au choix d’un thème, la liste de tous les livres de ce thème est affichée.
- Après le choix d’un livre et d’une date d’emprunt, le bouton « Enregistrer » permet d’enregistrer l’emprunt dans la table Emprunt et de l’ajouter dans le DataGridView.
Correction
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace TP17_Biblio_Fin { 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(); int postion = 0; 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; theme.DataSource = ds.Tables["Theme"]; theme.DisplayMember = ds.Tables["Theme"].Columns[1].ColumnName; theme.ValueMember = ds.Tables["Theme"].Columns[0].ColumnName; theme.SelectedIndex = -1; } private void codeAdherent_SelectionChangeCommitted(object sender, EventArgs e) { if (codeAdherent.SelectedIndex != -1) { dv.Rows.Clear(); nomBox.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) { int pos = int.Parse(ds.Tables["Emprunt"].Rows[i][1].ToString())-1; DataRow ligne = ds.Tables["Emprunt"].Rows[pos].GetParentRow("Rel_Livre_Emprunt"); if (ds.Tables["Emprunt"].Rows[i][3].ToString() != "") { dv.Rows.Add(ligne[1], ((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(ligne[1], ((DateTime)ds.Tables["Emprunt"].Rows[i][2]).ToString("dd-MM-yyyy")); } } } } } private void theme_SelectionChangeCommitted(object sender, EventArgs e) { listLivre.Items.Clear(); if (theme.SelectedIndex != -1) { int pos = int.Parse(theme.SelectedValue.ToString()) - 1; DataRow[] lignes = ds.Tables["Theme"].Rows[pos].GetChildRows("Rel_Theme_Livre"); for (int i = 0; i < lignes.Length; i++) { listLivre.Items.Add(lignes[i][1].ToString()); } } } private void button1_Click(object sender, EventArgs e) { DataRow ligne = ds.Tables["Emprunt"].NewRow(); ligne[0] = codeAdherent.Text; DataRow[] lv; lv = ds.Tables["Livre"].Select("TitreLivre Like '%" + listLivre.SelectedItem.ToString() + "%'"); ligne[1] = lv[0][0].ToString(); ligne[2] = dateEmprunt.Text; ds.Tables["Emprunt"].Rows.Add(ligne); codeAdherent_SelectionChangeCommitted( sender, e); } } }
salma
ou est la correction
marwane
pas de correction ?
Sami
Mrc monsieur Hassan pour votre aider