Mar.27

TP14 : Les boutons de navigation en mode déconnecté

Objectif

Dans ce TP vous allez apprendre comme créer les boutons de navigation en mode déconnecté.

Questions

Partie serveur :

  1. Créer la base imdb.
  2. Dans la base imdb, crée les tables genre et serie :

Partie client :

  1. Réaliser un menu qui facilite l’utilisation de l’application.
  2. Créer l’interface suivante : 
  3. Ecrire le code qui va permettre d’affiche tous les enregistrements de la table genre sur DataGridView.
  4. Ecrire les code des boutons Ajouter, Modifier, Supprimer et Vider.
  5. Ecrire les code des boutons de navigation des boutons Suivant, Précédent, Premier et Dernier.
  6. Ecrire le code pour le Bouton Enregistre qui permet de valider les mises à jour sur la table genre.
  7. Créer l’interface suivante :
  8. Ecrire le code qui va permettre d’affiche tous les enregistrements de la table serie sur
  9. Ecrire les code des boutons Ajouter, Modifier, Supprimer et Vider.
  10. Ecrire les code des boutons de navigation des boutons Suivant, Précédent, Premier et Dernier.
  11. Ecrire le code pour le Bouton Enregistre qui permet de valider les mises à jour sur la table serie.

Correction

La classe Genre

 
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 TP15_IMDB
{
    public partial class Genre : Form
    {
        SqlConnection conn = new SqlConnection("server = DESKTOP-EIALG0J\\SQLEXPRESS; database = imdb; integrated security = SSPI");
        DataSet ds = new DataSet();
        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter();
        int postion = 0;
        public Genre()
        {
            InitializeComponent();
        }

        private void Genre_Load(object sender, EventArgs e)
        {
            conn.Open();
            SqlDataAdapter ad = new SqlDataAdapter("select * from genre", conn);
            ad.Fill(ds, "genre");
            dv.DataSource = ds.Tables["genre"];
            DataColumn[] PK_Four = new DataColumn[1];
            PK_Four[0] = ds.Tables["genre"].Columns[0];
            ds.Tables["genre"].PrimaryKey = PK_Four; 

            conn.Close();
        }

        private void button8_Click(object sender, EventArgs e)
        {
            intituleGenre.Text = "";
            codeGenre.Text = "";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            
            DataRow ligne = ds.Tables[0].Rows.Find(codeGenre.Text);
            if (ligne == null)
            {
                DataRow nouvelleLigne = ds.Tables[0].NewRow();
                nouvelleLigne[0] = codeGenre.Text;
                nouvelleLigne[1] = intituleGenre.Text;
                ds.Tables[0].Rows.Add(nouvelleLigne);
            }
            else
            { 
                MessageBox.Show("Le genre déja existant"); 
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            DataRow ligne = ds.Tables[0].Rows.Find(codeGenre.Text);
            if (ligne != null)
            {
                ligne.BeginEdit();
                ligne[0] = codeGenre.Text;
                ligne[1] = intituleGenre.Text;
                ligne.EndEdit();
            }
            else
            { 
                MessageBox.Show("Le genre est introuvable"); 
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            DataRow ligne = ds.Tables[0].Rows.Find(codeGenre.Text);
            if (ligne != null)
            {
                ligne.Delete();                
            }
            else
            {
                MessageBox.Show("Le genre est introuvable"); 
            }
        }

        private void button9_Click(object sender, EventArgs e)
        {
            conn.Open();
            SqlDataAdapter ad = new SqlDataAdapter("select * from genre", conn);
            SqlCommandBuilder sqb = new SqlCommandBuilder(ad);
            ad.Update(ds, "genre");
            conn.Close();
        }

        private void premier_Click(object sender, EventArgs e)
        {
            postion = 0;
            navigation(postion);
        }
        private void navigation(int postion)
        {
            codeGenre.Text = ds.Tables[0].Rows[postion][0].ToString();
            intituleGenre.Text = ds.Tables[0].Rows[postion][1].ToString();
        }

        private void dernier_Click(object sender, EventArgs e)
        {
            postion = ds.Tables["genre"].Rows.Count - 1; // Positioner le curseur dans la fin
            navigation(postion);
        }

        private void precedent_Click(object sender, EventArgs e)
        {
            try
            {
                postion -= 1;// Positioner le curseur dans la position précédente
                navigation(postion);
            }
            catch (IndexOutOfRangeException)
            {
                MessageBox.Show("Vous avez atteint le début");
                postion = 0;
            }
        }

        private void suivant_Click(object sender, EventArgs e)
        {
            try
            {
                postion += 1;// Positioner le curseur dans la position suivante
                navigation(postion);
            }
            catch (IndexOutOfRangeException)
            {
                MessageBox.Show("Vous avez atteint la fin");
                postion = ds.Tables["genre"].Rows.Count - 1;
            }
        }

        private void codeGenre_TextChanged(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void intituleGenre_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

La classe Serie

 
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 TP15_IMDB
{
    public partial class Serie : Form
    {
        SqlConnection conn = new SqlConnection("server = DESKTOP-EIALG0J\\SQLEXPRESS; database = imdb; integrated security = SSPI");
        DataSet ds = new DataSet();
        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter();
        int postion = 0;
        public Serie()
        {
            InitializeComponent();
        }

       

        private void Serie_Load(object sender, EventArgs e)
        {
            conn.Open();
            SqlDataAdapter ad1 = new SqlDataAdapter("select * from serie", conn);
            ad1.Fill(ds, "serie");

            SqlDataAdapter ad2 = new SqlDataAdapter("select * from genre", conn);
            ad2.Fill(ds, "genre");
           

            DataColumn[] PK_Serie = new DataColumn[1];
            PK_Serie[0] = ds.Tables["serie"].Columns[0];
            ds.Tables["serie"].PrimaryKey = PK_Serie;

            DataColumn[] PK_Genre = new DataColumn[1];
            PK_Genre[0] = ds.Tables["genre"].Columns[0];
            ds.Tables["genre"].PrimaryKey = PK_Genre;

            ds.Relations.Add("Rel_Gen_Ser", ds.Tables["genre"].Columns[0], ds.Tables["serie"].Columns[0]);
            conn.Close();

            genreSerie.DataSource = ds.Tables["genre"];
            genreSerie.DisplayMember = ds.Tables["genre"].Columns[1].ColumnName;
            genreSerie.ValueMember = ds.Tables["genre"].Columns[0].ColumnName;
            genreSerie.SelectedIndex = -1;

            dv.DataSource = ds.Tables["serie"];
            conn.Close();

        }

        private void vider_Click(object sender, EventArgs e)
        {
            codeSerie.Text = "";
            titreSerie.Text = "";
            genreSerie.SelectedIndex = -1;
        }

        private void supprimer_Click(object sender, EventArgs e)
        {
            DataRow ligne = ds.Tables[1].Rows.Find(codeSerie.Text);
            if (ligne != null)
            {
                ligne.Delete();
            }
            else
            {
                MessageBox.Show("La série n'existe pas");
            }
        }

        private void ajouter_Click(object sender, EventArgs e)
        {
            DataRow ligne = ds.Tables[0].Rows.Find(codeSerie.Text);
            if (ligne == null)
            {
                DataRow nouvelleLigne = ds.Tables[0].NewRow();
                nouvelleLigne[0] = codeSerie.Text;
                nouvelleLigne[1] = titreSerie.Text;
                nouvelleLigne[2] = dateSortie.Value.ToString() ;
                nouvelleLigne[3] = genreSerie.SelectedValue;
                ds.Tables[0].Rows.Add(nouvelleLigne);
            }
            else
            {
                MessageBox.Show("La série déja existante");
            }
        }

        private void modifier_Click(object sender, EventArgs e)
        {
            DataRow ligne = ds.Tables[0].Rows.Find(codeSerie.Text);
            if (ligne != null)
            {
                ligne.BeginEdit();
                ligne[1] = titreSerie.Text;
                ligne[2] = dateSortie.Value.ToString();
                ligne[3] = genreSerie.SelectedValue;
                ligne.EndEdit();
            }
            else
            {
                MessageBox.Show("La série n'existe pas");
            }
        }

        private void premier_Click(object sender, EventArgs e)
        {
            postion = 0;
            navigation(postion);
        }
        private void navigation(int postion)
        {
            codeSerie.Text = ds.Tables[0].Rows[postion][0].ToString();
            titreSerie.Text = ds.Tables[0].Rows[postion][1].ToString();
            dateSortie.Text = ds.Tables[0].Rows[postion][2].ToString();
            genreSerie.SelectedIndex = int.Parse(ds.Tables[0].Rows[postion][3].ToString());
        }

        private void dernier_Click(object sender, EventArgs e)
        {
            postion = ds.Tables["serie"].Rows.Count - 1; // Positioner le curseur dans la fin
            navigation(postion);
        }

        private void precedent_Click(object sender, EventArgs e)
        {
            try
            {
                postion -= 1;// Positioner le curseur dans la position précédente
                navigation(postion);
            }
            catch (IndexOutOfRangeException)
            {
                MessageBox.Show("Vous avez atteint le début");
                postion = 0;
            }
        }

        private void suivant_Click(object sender, EventArgs e)
        {
            try
            {
                postion += 1;// Positioner le curseur dans la position suivante
                navigation(postion);
            }
            catch (IndexOutOfRangeException)
            {
                MessageBox.Show("Vous avez atteint la fin");
                postion = ds.Tables["genre"].Rows.Count - 1;
            }
        }
    }
}

TP
Share this Story:
  • facebook
  • twitter
  • gplus

About Hassan EL Bahi

Assistant Professor at Cadi ayyad University.

Leave a comment

Comment