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