Mar.23

TP11 : Manipulation de plusieurs tables simultanément en mode connecté

Objectif

Manipulation de plusieurs tables simultanément et l’utilisation de plusieurs objets commande et datareader en mode connecté.

Questions

Partie serveur :

  1. Dans la base Gestion, ajoute les tables : Commande et Detail.

Partie client :

Pour terminer l’application Gestion Commerciale, Il reste à créer un formulaire pour une consultation totale des commandes d’un client en mode connecté.

  1. Créer l’interface suivante : 
  2. Créer les objets nécessaires et le code réalisant le travail demandé.
    • Au choix de ID d’un client :
      • Le Nom et la Ville s’affichent automatiquement.
      • La liste de toutes ses commandes s’affiche dans le 1er DataGridView.
      • Son Chiffre d’affaires est calculé et affiché dans un TextBox. (Chiffre d’affaires d’un client = Somme des totaux de ses commandes).
    • Lorsqu’une commande est sélectionnée (évènement double clic) :
      • Ses détails sont affichés dans le 2eme DataGridView.
      • Le Total HT de la commande, la TVA (20%) et le TTC sont calculés et affichés.
    • Le bouton « Supprimer la commande » permet de supprimer une commande sélectionnée dans le 1er DataGridView. Le Chiffre d’affaires du client est recalculé.

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 TP11_Consultation_Vente
{
    public partial class Form1 : Form
    {
        SqlConnection conn = new SqlConnection("server = DESKTOP-EIALG0J\\SQLEXPRESS; database = gestion; integrated security = SSPI");
        SqlDataReader dr;
        SqlCommand cmd;
        BindingSource source = new BindingSource();
        float chiffre;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            listeClient();
            nomClient.Enabled = false;
            villeClient.Enabled = false;
            chiffreAffaire.Enabled = false;
            total.Enabled = false;
            tva.Enabled = false;
            ttc.Enabled = false;
        }
        private void listeClient()
        {
            try
            {
                cmd = new SqlCommand("select ldClient from client", conn);
                conn.Open();
                dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    idClient.Items.Add(dr[0]);
                }

                idClient.SelectedIndex = -1;
                dr.Close();
                conn.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void idClient_SelectedIndexChanged(object sender, EventArgs e)
        {
            dataGridView2.Rows.Clear();
            total.Text = "";
            tva.Text = "";
            ttc.Text = "";
            if (idClient.SelectedIndex != -1)
            {
                int id = int.Parse(idClient.Text);
                try
                {
                    cmd = new SqlCommand("select * from client where ldClient='" + id + "' ", conn);
                    conn.Open();
                    dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        nomClient.Text = dr[1].ToString();
                        villeClient.Text = dr[2].ToString();
                    }
                    dr.Close();

                    dataGridView1.Rows.Clear();
                    cmd = new SqlCommand("select idCommande as 'id', CONVERT(VARCHAR(10), CAST(dateCommande AS DATE), 105) AS 'date' from commande where ldClient='" + id + "'", conn);
                    dr = cmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            dataGridView1.Rows.Add(dr[0],dr[1]);
                        }
                    }
                    dr.Close();
                    cmd = new SqlCommand("select  prixProduit, quantite from detail, Commande,produit where Detail.idProduit=produit.idProduit and detail.idCommande=Commande.idCommande and ldClient=" + id + "", conn);
                    dr = cmd.ExecuteReader();
                    chiffre = 0;
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            chiffre = chiffre + float.Parse(dr[0].ToString()) * int.Parse(dr[1].ToString());
                            
                        }
                    }
                    chiffreAffaire.Text = chiffre.ToString();
                    conn.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int i = dataGridView1.CurrentCell.RowIndex;
            int id = int.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString());
            try
            {
                cmd = new SqlCommand("select detail.idProduit, nomProduit, prixProduit, quantite from detail, produit where detail.idProduit=produit.idProduit and idcommande=" + id + " ", conn);
                conn.Open();
                dr = cmd.ExecuteReader();
                dataGridView2.Rows.Clear();
                float montant = 0;
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        float mq = float.Parse(dr[2].ToString()) * int.Parse(dr[3].ToString());
                        dataGridView2.Rows.Add(dr[0], dr[1], dr[2], dr[3],mq);
                        montant = montant + mq;
                    }
                    total.Text = montant.ToString();
                    //Exemple, avec une TVA à 20 % :
                    tva.Text = (montant * 0.2).ToString();

                    ttc.Text = (montant * 1.2).ToString(); 
                }
                
                dr.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (dataGridView1.Rows.Count > 0) {
                int i = dataGridView1.CurrentCell.RowIndex;
                int id = int.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString());
                try
                {
                    cmd = new SqlCommand("delete from detail where idcommande =" + id + "", conn);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    cmd = new SqlCommand("delete from commande where idcommande =" + id + "", conn);
                    cmd.ExecuteNonQuery();
                    dataGridView2.Rows.Clear();    
                    conn.Close();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                idClient_SelectedIndexChanged(null, null);
                MessageBox.Show("La suppression a été effectuée avec succè");
                
            }
            
        }

        private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {
             
        }
    }
}

TP
Share this Story:
  • facebook
  • twitter
  • gplus

About Hassan EL Bahi

Assistant Professor at Cadi ayyad University.

Leave a comment

Comment