Vous êtes sur la page 1sur 26

OFPPT ISTA TAOURIRT

Résumé ADO.net
Développement et déploiement d’application Client / Serveur

Réalisée par : Karima BELABED


Encadrée par : Mme Ibtissam CHETOUANI

ADO.NET C'est la technologie utilisée pour travailler avec des données et des
bases de données. Il permet d'accéder à des sources de données telles que le
serveur SQL, OLE DB, XML, etc. ADO.NET permet la connexion aux
sources de données pour la récupération, la manipulation et la mise à jour des
données.
Gestion Commerciale
La base de données (Vente)

Karima BELABED Page 1


OFPPT ISTA TAOURIRT

I - Les formulaires :

Interface d’accueil :

I – 1 Mise à jour de la table Client.

1 – Interface à réaliser :

Karima BELABED Page 2


OFPPT ISTA TAOURIRT

2 - Code à développer :

 La navigation dans la table client et la recherche d’un client.


 La mise à jour de la table client (Ajouter, Modifier et supprimer).

Ce schéma souligne les objets intermédiaires nécessaires:

 un objet connexion dans tous les cas,


 un objet Command pour le DataReader,
 un objet DataAdapter plus un objet Command pour le DataSet .

Il ne faut pas oublié de rajouter à ces namespaces, System.Data qui contient les classes essentielles au
fonctionnement d’ADO.NET.
Déclaration d’un Data Provider pour SQL Server :
Déclaration des namespaces
using System.Data;
using System.Data.SqlClient;

Création de la connexion
public static SqlConnection cnx = new SqlConnection(@"server=BELABED;database=vente;integrated
security=true");

Karima BELABED Page 3


OFPPT ISTA TAOURIRT

On construit donc la connexion avec la SqlConnection qui indique le serveur de base de données, la base
de données et la manière de s’authentifier sur le serveur.
Le mode Connecté

 Avec un objet Command on peut manipuler directement la BD (en SQL avec UPDATE, INSERT,
DELETE CREATE DROP..), on utilise la propriété ExecuteNonQuery pour cela.
Ajouter :
private void ajouter_Click(object sender, EventArgs e)
{
if (txt_cin.Text == "" || txt_nom.Text == "" || txt_prenom.Text == "")
{
MessageBox.Show("Remplir tous les champs!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (radioh.Checked == false && radiof.Checked == false)
{
MessageBox.Show("choisir le sexe!!", "choisir le sexe", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
else if (cb_ville.SelectedIndex == -1)
{
MessageBox.Show("ville invalide!!", "ville invalide", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
if (rechercher_client() == true) //appeler la fonction qui vérifier si le client
déja ajouté
{
MessageBox.Show("client existe déja !!", "exist", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
if (masked_telephone.MaskFull== false) // vérifier que le masque de saisie est bien
valide
{
MessageBox.Show("Numéro de Téléphone Invalide!!", "champ Invalide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{

DialogResult choix = MessageBox.Show("voulez vraiment ajouter ce nouveau client


!!", "ajout", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(choix==DialogResult.Yes)
{
String s;
if (radioh.Checked)
s = "homme";
else
s = "femme";
Form1.cnx.Open();// Ouverture de la connexion
SqlCommand cmdA = new SqlCommand("insert into Client values('" +
txt_cin.Text + "','" + txt_nom.Text + "','" + txt_prenom.Text + "','" + s + "','" +
cb_ville.SelectedItem.ToString() + "','" + masked_telephone.Text +"','" +
dtp_daten.Value.ToShortDateString() + "')", Form1.cnx);
cmdA.ExecuteNonQuery();// Exécution de la requête SQL
MessageBox.Show("Client bien ajouter", "ajout", MessageBoxButtons.OK,
MessageBoxIcon.Information);
Form1.cnx.Close();// Fermeture de la connexion
afficher_Click(sender, e);
//appeler la button vider pour vider les champs
vider_Click(sender,e);

Karima BELABED Page 4


OFPPT ISTA TAOURIRT

}
}
}

 Avec un objet DataReader on extrait les données en lecture seule: une requête SQL (sur un
objet command) charge le DataReader. c'est rapide; on peut lire uniquement les données et aller à
l'enregistrement suivant. Il travaille en mode connecté. Pour gérer un DataReader on a besoin d'un
objet Command.
 la connexion entre la BD et le DataReader est ouverte tant que le DataReader fonctionne.
Fonction permet de vérifier si le cin de client est déjà saisie :
private bool rechercher_client()
{
bool p = false;
Form1.cnx.Open();
SqlCommand cmde = new SqlCommand("select * from client where cin='" + txt_cin.Text
+ "'", Form1.cnx);
SqlDataReader dre = cmde.ExecuteReader();
if (dre.HasRows)
{
p = true;
}
dre.Close();
Form1.cnx.Close();
return p;
}

Vider :
private void vider_Click(object sender, EventArgs e)
{

txt_cin.Text = "";
txt_nom.Text = "";
txt_prenom.Text = "";
radioh.Checked = false;
radiof.Checked = false;
cb_ville.SelectedIndex = -1;
masked_telephone.Text = "";
dtp_daten.Value = DateTime.Now;
txt_cin.Focus();//sélectionner la zone cin
}

Rechercher :
private void rechercher_Click(object sender, EventArgs e)
{
if (txt_r.Text == "")
{
MessageBox.Show("Veuillez remplir le fomulaire de recherche!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
Form1.cnx.Open();
SqlCommand cmdR = new SqlCommand("select * from client where cin='" +
txt_r.Text + "'", Form1.cnx);
SqlDataReader drR = cmdR.ExecuteReader();

Karima BELABED Page 5


OFPPT ISTA TAOURIRT

DataTable dtR = new DataTable();


dtR.Load(drR);
dgv.DataSource = null;
dgv.DataSource = dtR;
drR.Close();
Form1.cnx.Close();
}
}

Modifier :
private void modifier_Click(object sender, EventArgs e)
{
if (rechercher_client() == true)
{
if (txt_cin.Text == "" || txt_nom.Text == "" || txt_prenom.Text == "")
{
MessageBox.Show("Remplir tous les champs!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (radioh.Checked == false && radiof.Checked == false)
{
MessageBox.Show("choisir le sexe!!", "choisir le sexe",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (cb_ville.SelectedIndex == -1)
{
MessageBox.Show("ville invalide!!", "ville invalide", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
if (masked_telephone.MaskFull == false) // vérifier que le masque de saisie est
bien valide
{
MessageBox.Show("Numéro de Téléphone Invalide!!", "champ Invalide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
DialogResult choix = MessageBox.Show("voulez vraiment modifier ce client
!!", "modification", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (choix == DialogResult.Yes)
{
String s;
if (radioh.Checked)
s = "homme";
else
s = "femme";
SqlCommand cmdM = new SqlCommand("update client set nom='" +
txt_nom.Text + "',prenom='" + txt_prenom.Text + "',sexe='" + s + "',ville='" +
cb_ville.SelectedItem.ToString() + "',telephone='" + masked_telephone.Text + "',daten='" +
dtp_daten.Value.ToShortDateString() + "' where cin='" + txt_cin.Text + "'", Form1.cnx);
Form1.cnx.Open();
cmdM.ExecuteNonQuery();
MessageBox.Show("Client bien modifier", "modification",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Form1.cnx.Close();
//appeler la button vider pour vider les champs
vider_Click(sender, e);
afficher_Click(sender, e);
}
}
}
else

Karima BELABED Page 6


OFPPT ISTA TAOURIRT

{
MessageBox.Show("Client n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

Supprimer :
private void supprimer_Click(object sender, EventArgs e)
{
if (rechercher_client() == true)
{
DialogResult choix = MessageBox.Show("voulez vraiment supprimer ce client !!",
"suppression", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(choix==DialogResult.Yes)
{
try{
SqlCommand cmdS=new SqlCommand("delete from client where
cin='"+txt_cin.Text+"'",Form1.cnx);
Form1.cnx.Open();
cmdS.ExecuteNonQuery();
MessageBox.Show("bien supprimer", "suppression", MessageBoxButtons.OK,
MessageBoxIcon.Information);
Form1.cnx.Close();
txt_cin.Clear();
afficher_Click(sender, e);
}
catch
{
MessageBox.Show("ERROR");
}
}
}
else
{
MessageBox.Show("Client n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

Afficher :
private void afficher_Click(object sender, EventArgs e)
{
SqlCommand cmdAFF = new SqlCommand("select * from client", Form1.cnx);
Form1.cnx.Open();
SqlDataReader drAFF = cmdAFF.ExecuteReader();
DataTable dtAFF = new DataTable();
dtAFF.Load(drAFF);
dgv.DataSource = dtAFF;
Form1.cnx.Close();
}

Karima BELABED Page 7


OFPPT ISTA TAOURIRT

Exporter :
private void exporter_xml_Click(object sender, EventArgs e)
{
SqlCommand cmdEXP = new SqlCommand("select * from client", Form1.cnx);
Form1.cnx.Open();
DataTable dtEXP = new DataTable();
SqlDataReader drEXP = cmdEXP.ExecuteReader();
dtEXP.Load(drEXP);
Form1.cnx.Close();
DataSet dsEXP = new DataSet();
dsEXP.Tables.Add(dtEXP);
dsEXP.WriteXml("client.xml");
MessageBox.Show("fichier exporter");
}

Importer :
private void importer_xml_Click(object sender, EventArgs e)
{
XmlReader xmlfile;
xmlfile = XmlReader.Create("client.xml", new XmlReaderSettings());
DataSet dsIMP = new DataSet();
dsIMP.ReadXml(xmlfile);
dgv.DataSource = dsIMP.Tables[0];
MessageBox.Show("bien importer");
}

Charger :
private void charger_Click(object sender, EventArgs e)
{
if (rechercher_client() == true)
{
SqlCommand cmdC = new SqlCommand("select * from Client where cin='" +
txt_cin.Text+"'", Form1.cnx);
Form1.cnx.Open();
SqlDataReader drC = cmdC.ExecuteReader();
drC.Read();
txt_nom.Text = drC["nom"].ToString();
txt_prenom.Text = drC["prenom"].ToString();
if (drC["sexe"].ToString() == "homme")
{
radioh.Checked = true;
}
else
{
radiof.Checked = true;
}
cb_ville.Text = drC["ville"].ToString();
masked_telephone.Text = drC["telephone"].ToString();
dtp_daten.Value = DateTime.Parse(drC["daten"].ToString());
drC.Close();
Form1.cnx.Close();
}
else
{
MessageBox.Show("Client n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}

Karima BELABED Page 8


OFPPT ISTA TAOURIRT

Premier :
private void premier_Click(object sender, EventArgs e)
{
l_nav.Visible = true;
dgv.Rows[0].Selected = true;
l_nav.Text = (dgv.Rows[0].Index + 1) + "/" + dgv.Rows.Count;
}

Précédent :
private void precedent_Click(object sender, EventArgs e)
{
if (dgv.SelectedRows.Count == 1)
{
int i = dgv.SelectedRows[0].Index;
if (i != 0)
{
dgv.Focus();
this.dgv.Rows[i - 1].Selected = true;
}
else
{
dgv.Focus();
this.dgv.Rows[0].Selected = true;
}
}
else
{
MessageBox.Show("selectionner une ligne");
}
l_nav.Visible = true;
l_nav.Text = (dgv.SelectedRows[0].Index + 1) + "/" + dgv.Rows.Count;

Suivant :
private void suivant_Click(object sender, EventArgs e)
{
if (dgv.SelectedRows.Count == 1)
{
int i = dgv.SelectedRows[0].Index;
if (i != dgv.Rows.Count - 1)
{
dgv.Focus();
this.dgv.Rows[i + 1].Selected = true;
}
else

Karima BELABED Page 9


OFPPT ISTA TAOURIRT

{
dgv.Focus();
this.dgv.Rows[dgv.Rows.Count - 1].Selected = true;
}
}
else
{
MessageBox.Show("selectioner une ligne");
}
l_nav.Visible = true;
l_nav.Text = (dgv.SelectedRows[0].Index + 1) + "/" + dgv.Rows.Count;
}

Dernier :
private void dernier_Click(object sender, EventArgs e)
{
l_nav.Visible = true;
dgv.Rows[dgv.Rows.Count - 1].Selected = true;
l_nav.Text = (dgv.SelectedRows[0].Index + 1) + "/" + dgv.Rows.Count;
}

Le mode Linq
DataClasses1DataContext db = new DataClasses1DataContext();

Ajouter :
private void ajouter_Click(object sender, EventArgs e)
{
if (txt_cin.Text == "" || txt_nom.Text == "" || txt_prenom.Text == "")
{
MessageBox.Show("Remplir tous les champs!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (radioh.Checked == false && radiof.Checked == false)
{
MessageBox.Show("choisir le sexe!!", "choisir le sexe", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
else if (cb_ville.SelectedIndex == -1)
{
MessageBox.Show("ville invalide!!", "ville invalide", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
if (masked_telephone.MaskFull== false) // vérifier que le masque de saisie est bien
valide
{
MessageBox.Show("Numéro de Téléphone Invalide!!", "champ Invalide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
bool exist = db.clients.Any(u => u.cin == txt_cin.Text);
if(exist==false)
{
DialogResult choix = MessageBox.Show("voulez vraiment ajouter ce nouveau client
!!", "ajout", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

Karima BELABED Page 10


OFPPT ISTA TAOURIRT

if(choix==DialogResult.Yes)
{
client C = new client()
{
cin = txt_cin.Text,
nom = txt_nom.Text,
prenom = txt_prenom.Text,
ville = cb_ville.SelectedItem.ToString(),
sexe = radioh.Checked == true ? "homme" : "femme",
telephone=masked_telephone.Text,
daten=DateTime.Parse(dtp_daten.Value.ToShortDateString()),
};
db.clients.InsertOnSubmit(C);
db.SubmitChanges();
MessageBox.Show("Client bien ajouter", "ajout", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("client existe déja !!", "exist", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}

Rechercher :
private void rechercher_Click(object sender, EventArgs e)
{
if (txt_r.Text == "")
{
MessageBox.Show("Veuillez remplir le fomulaire de recherche!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
var enreg = from item in db.clients where (item.cin == txt_r.Text) select item;
dgv.DataSource = enreg;
}
}

Modifier :
private void modifier_Click(object sender, EventArgs e)
{
bool exist=db.clients.Any(u=>u.cin==txt_cin.Text);
if (exist == true)
{
if (txt_cin.Text == "" || txt_nom.Text == "" || txt_prenom.Text == "")
{
MessageBox.Show("Remplir tous les champs!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (radioh.Checked == false && radiof.Checked == false)
{
MessageBox.Show("choisir le sexe!!", "choisir le sexe",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

Karima BELABED Page 11


OFPPT ISTA TAOURIRT

}
else if (cb_ville.SelectedIndex == -1)
{
MessageBox.Show("ville invalide!!", "ville invalide", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
if (masked_telephone.MaskFull == false) // vérifier que le masque de saisie est
bien valide
{
MessageBox.Show("Numéro de Téléphone Invalide!!", "champ Invalide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
DialogResult choix = MessageBox.Show("voulez vraiment modifier ce client
!!", "modification", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (choix == DialogResult.Yes)
{
var c = db.clients.SingleOrDefault(x => x.cin == txt_cin.Text);
c.nom = txt_nom.Text;
c.prenom = txt_prenom.Text;
c.sexe = radioh.Checked == true ? "homme" : "femme";
c.ville = cb_ville.Text;
c.telephone = masked_telephone.Text;
c.daten = dtp_daten.Value;
db.SubmitChanges();
MessageBox.Show("Client bien modifier", "modification",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
else
{
MessageBox.Show("Client n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

Supprimer :
private void supprimer_Click(object sender, EventArgs e)
{
bool exist = db.clients.Any(u => u.cin == txt_cin.Text);
if (exist == true)
{
DialogResult choix = MessageBox.Show("voulez vraiment supprimer ce client !!",
"suppression", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(choix==DialogResult.Yes)
{
var c = db.clients.SingleOrDefault(x => x.cin == txt_cin.Text);
db.clients.DeleteOnSubmit(c);
db.SubmitChanges();
MessageBox.Show("bien supprimer", "suppression", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("Client n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

Karima BELABED Page 12


OFPPT ISTA TAOURIRT

Afficher :
private void afficher_Click(object sender, EventArgs e)
{
var enreg = from item in db.clients select item;
dgv.DataSource = null;
dgv.DataSource = enreg;
}

Charger :
private void charger_Click(object sender, EventArgs e)
{
bool exist = db.clients.Any(u => u.cin == txt_cin.Text);
if (exist == true)
{
var enreg = db.clients.SingleOrDefault(x => x.cin == txt_cin.Text);
txt_nom.Text = enreg.nom;
txt_prenom.Text = enreg.prenom;
if(enreg.sexe=="homme")
{
radioh.Checked = true;
}
else
{
radiof.Checked = true;
}
cb_ville.Text = enreg.ville;
masked_telephone.Text = enreg.telephone;
dtp_daten.Text = enreg.daten.ToString();
}
else
{
MessageBox.Show("Client n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

I – 2 Mise à jour de la table Article.

1 – Interface à réaliser :

Karima BELABED Page 13


OFPPT ISTA TAOURIRT

2 - Code à développer :

 La navigation dans la table Article et la recherche d’un article.


 La mise à jour de la table Article (Ajouter, Modifier et supprimer).

Le mode Déconnecté

 En mode déconnecté, le programme se connecte à la base de données durant un temps très bref pour
rapatrier les données en mémoire. La connexion est ensuite interrompue. Une fois les opérations
(INSERT, DELETE, etc…) réalisées sur le DataSet, le programme se connecte à nouveau à la base de
données et sauvegarde les changements.
 Le SqlDataAdapter va permettre au programme de récupérer les données qui seront stockées dans
le DataSet.
 Pour mettre à jour la base après modification du DataSet ou de la Grid il faut un objet CommandBuilder.
 il faut déclarer le SqlDataAdapter, le DataSet et le CommandBuilder .
SqlDataAdapter da;// Permet de lire les données
DataSet ds = new DataSet(); // Contiendra les données
SqlCommandBuilder cmb = new SqlCommandBuilder();

Charger DataSet :
private void article_Load(object sender, EventArgs e)
{
da = new SqlDataAdapter("select * from article", Form1.cnx);
da.Fill(ds, "article");// Récupère les données
}

Ajouter :

Karima BELABED Page 14


OFPPT ISTA TAOURIRT

private void ajouter_Click(object sender, EventArgs e)


{
int index = -1;
for (int i = 0; i < ds.Tables["article"].Rows.Count; i++)
{
if (ds.Tables["article"].Rows[i][0].ToString() == txt_codea.Text)
{
index = i;
}
}
if (index == -1)
{
DataRow dr = ds.Tables["article"].NewRow();
dr[0] = txt_codea.Text;
dr[1] = richtxt_des.Text;
dr[2] = txt_pu.Text;
dr[3] = txt_qted.Text;
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] byteimage = ms.ToArray();
dr[4] = byteimage;
ds.Tables["article"].Rows.Add(dr);
MessageBox.Show("cliquez enregistrer!!");
}
else
{
MessageBox.Show("code article existe déja!!");
}
}

Fonction permet de remplir DataGridView


public void remplirdgv()
{
dgv.DataSource = ds.Tables["article"];
}

Enregistrer :
private void enregistrer_Click(object sender, EventArgs e)
{
cmb = new SqlCommandBuilder(da);
da.Update(ds.Tables["article"]);
MessageBox.Show("bien enregistré!!");
remplirdgv();
}

Séléctionner photo :
private void selectionner_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "picture file|*.JPG;*.PNG;*.GIF";
if (ofd.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(ofd.FileName);
}
}

Karima BELABED Page 15


OFPPT ISTA TAOURIRT

Rechercher :
private void rechercher_Click(object sender, EventArgs e)
{
int index = -1;
for (int i = 0; i < ds.Tables["article"].Rows.Count; i++)
{
if (ds.Tables["article"].Rows[i][0].ToString() == txt_r.Text)
{
index = i;
}
}
if (index != -1)
{
da = new SqlDataAdapter("select * from article where codea='" + txt_r.Text +
"'", Form1.cnx);
DataTable dtR = new DataTable();
da.Fill(dtR);
dgv.DataSource = null;
dgv.DataSource = dtR;
}
else if (txt_r.Text == "")
{
MessageBox.Show("Veuillez remplir le fomulaire de recherche!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
MessageBox.Show("code article invalide!!");
}
}

Modifier :
private void modifier_Click(object sender, EventArgs e)
{
int index = -1;
for (int i = 0; i < ds.Tables["article"].Rows.Count; i++)
{
if (ds.Tables["article"].Rows[i][0].ToString() == txt_codea.Text)
{
index = i;
}
}
if (index == -1)
{
MessageBox.Show("code article invalide!!");
}
else
{
ds.Tables["article"].Rows[index][1] = richtxt_des.Text;
ds.Tables["article"].Rows[index][2] = txt_pu.Text;
ds.Tables["article"].Rows[index][3] = txt_qted.Text;
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] byteimage = ms.ToArray();
ds.Tables["article"].Rows[index][4] = byteimage;
MessageBox.Show("cliquez enregistrer!!");
}

Karima BELABED Page 16


OFPPT ISTA TAOURIRT

Afficher :
private void afficher_Click(object sender, EventArgs e)
{
dgv.DataSource = ds.Tables["article"];
}

Vider :
private void vider_Click(object sender, EventArgs e)
{
txt_codea.Text = "";
richtxt_des.Text = "";
txt_pu.Text = "";
txt_qted.Text = "";
pictureBox1.Image = null;
txt_codea.Focus();//sélectionner la zone code article
}

Supprimer :
private void supprimer_Click(object sender, EventArgs e)
{
int index = -1;
for (int i = 0; i < ds.Tables["article"].Rows.Count; i++)
{
if (ds.Tables["article"].Rows[i][0].ToString() == txt_codea.Text)
{
index = i;
}
}
if (index != -1)
{
ds.Tables["article"].Rows[index].Delete();
index = -1;
MessageBox.Show("cliquez enregistrer!!");
}
else
{
MessageBox.Show("code article invalide!!");
}
}

Charger :
private void charger_Click(object sender, EventArgs e)
{
int index = -1;
for (int i = 0; i < ds.Tables["article"].Rows.Count; i++)
{
if (ds.Tables["article"].Rows[i][0].ToString() == txt_codea.Text)
{
index = i;
}
}
if (index != -1)
{
da = new SqlDataAdapter("select * from article where codea='" + txt_codea.Text
+ "'", Form1.cnx);
DataTable dtC = new DataTable();
da.Fill(dtC);
richtxt_des.Text = dtC.Rows[0][1].ToString();

Karima BELABED Page 17


OFPPT ISTA TAOURIRT

txt_pu.Text = dtC.Rows[0][2].ToString();
txt_qted.Text = dtC.Rows[0][3].ToString();
byte[] byteimage = (byte[])dtC.Rows[0][4];
MemoryStream ms = new MemoryStream(byteimage);
pictureBox1.Image = Image.FromStream(ms);
}
else
{
MessageBox.Show("code article invalide!!");
}
}

Le mode Entity Framework

 il faut déclarer :
AEntities db = new AEntities();

Ajouter :
private void ajouter_Click(object sender, EventArgs e)
{
var exist = db.article.Find(int.Parse(txt_codea.Text));
if(exist==null)
{
article A= new article();
A.codea = int.Parse(txt_codea.Text);
A.designation = richtxt_des.Text;
A.prix_u = float.Parse(txt_pu.Text);
A.qte_dispo = int.Parse(txt_qted.Text);
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] byteimage = ms.ToArray();
A.photo = byteimage;
db.article.Add(A);
db.SaveChanges();
MessageBox.Show("Article bien ajouter", "ajout", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Article existe déja !!", "exist", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}

Rechercher :
private void rechercher_Click(object sender, EventArgs e)
{
if (txt_r.Text == "")
{
MessageBox.Show("Veuillez remplir le fomulaire de recherche!!", "champ vide",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
dgv.DataSource = null;
var r = db.article.ToList<article>().Where(u => u.codea ==
int.Parse(txt_r.Text));
dgv.DataSource = r.ToList();
}

Karima BELABED Page 18


OFPPT ISTA TAOURIRT

Modifier :
private void modifier_Click(object sender, EventArgs e)
{
article A = new article();
A.codea = int.Parse(txt_codea.Text);
A.designation = richtxt_des.Text;
A.prix_u = float.Parse(txt_pu.Text);
A.qte_dispo = int.Parse(txt_qted.Text);
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] byteimage = ms.ToArray();
A.photo = byteimage;
db.Entry(A).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
MessageBox.Show("Article bien modifier", "modification", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
Afficher :
private void afficher_Click(object sender, EventArgs e)
{
dgv.DataSource = db.article.ToList<article>();
}

Supprimer :
private void supprimer_Click(object sender, EventArgs e)
{
var exist = db.article.Find(int.Parse(txt_codea.Text));
if (exist != null)
{
var s = db.article.Find(int.Parse(txt_codea.Text));
var entry = db.Entry(s);
entry.State = System.Data.Entity.EntityState.Detached;
db.article.Attach(s);
db.article.Remove(s);
db.SaveChanges();
MessageBox.Show("bien supprimer", "suppression", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Article n'exite pas", "not exist", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

Charger :
private void charger_Click(object sender, EventArgs e)
{
var exist = db.article.Find(int.Parse(txt_codea.Text));
if (exist != null)
{
var c = db.article.Find(int.Parse(txt_codea.Text));
richtxt_des.Text = c.designation;
txt_pu.Text =c.prix_u.ToString();
txt_qted.Text = c.qte_dispo.ToString();
byte[] byteimage = (byte[])c.photo;
MemoryStream ms = new MemoryStream(byteimage);
pictureBox1.Image = Image.FromStream(ms);

Karima BELABED Page 19


OFPPT ISTA TAOURIRT

byteimage=c.photo;
}
else
{
MessageBox.Show("Article n'existe pas !!", "exist", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}

I – 3 Saisies d’une commande.

1 – Interface à réaliser :

2 - Code à développer :

 Les Combos doivent être remplies par les cin clients et codes articles.
 Le N° de commande sera saisi et la Date de commande sera choisie dans un
DateTimePicker.
 Une fois le cin Client choisi, le Nom et la Ville s’affichent automatiquement.
 Une fois le code Article choisi, la désignation et le PU s’affichent automatiquement et le
curseur est positionné dans le TextBox correspondant à la quantité.
 Un Clic sur le bouton « Ajouter Article » fait descendre la ligne dans le DataGridView.
 Le bouton « Ajouter Article » fait aussi ce qui suit :
 calcule le Montant de la ligne et le Total de la commande à chaque ajout de ligne.
 Verifie si le stock est suffisant (Quantité commandée <= Quantité en stock, c.à.d.
Qte < = Qdisp) et affiche le message « Stock insuffisant ! » si ce n’est pas le cas.

Karima BELABED Page 20


OFPPT ISTA TAOURIRT

 Le bouton « Supprimer Article » permet de supprimer une ligne sélectionnée dans le


DataGridView et recalcule le Total de la commande.
 Prévoir le fait qu’après avoir ajouté un article dans le DataGridView son code est supprimé
du Combo CboCodeArt pour ne pas le choisir une 2eme fois (risque de doublon).
Lorsqu’il n’y a plus aucune modification à effectuer sur la commande, on peut l’enregistrer
dans la base de données.

 Le bouton « Enregistrer la commande » permet d’enregistrer la commande et ses lignes


(ses détails).
 Le bouton « Enregistrer la commande » fait aussi ce qui suit :
 Mise à jour du stock (retranche la quantité commandée de chaque article de la
commande de la quantité en stock de ce même article)
 Effacer le formulaire pour préparer la saisie d’une autre commande.

Ajouter les colonnes sur DataGridView :


private void passer_commande_Load(object sender, EventArgs e)
{
dgv.Columns.Add("code art", "code art");
dgv.Columns.Add("désignation", "désignation");
dgv.Columns.Add("prix unitaire", "prix unitaire");
dgv.Columns.Add("quantité", "quantité");
rempcb();
//var champ = from item in dc.clients select item;
//cb_cinc.DataSource = champ;
//cb_cinc.DisplayMember = "cin";
//cb_cinc.ValueMember = "cin";
cb_cinc.Text = "cin";
txt_nomc.Clear();
txt_villec.Clear();
}

Remplir comboBox cin de Client ;


public void rempcb()
{
cb_cinc.Items.Clear();
//remplir comboBox cin de client
foreach (client client in dc.clients)
{
cb_cinc.Items.Add(client.cin);
}
cb_codea.Items.Clear();
//remplir comboBox de code article
foreach (article art in dc.articles)
{
cb_codea.Items.Add(art.codea);
}
}

Afficher le Nom et la Ville de Client ;


private void cb_cinc_TextChanged(object sender, EventArgs e)
{
if (cb_cinc.SelectedIndex == 0)
{
var champ2 = dc.clients.SingleOrDefault(u => u.cin == "cli1");
txt_nomc.Text = champ2.nom;
txt_villec.Text = champ2.ville.ToString();
}

Karima BELABED Page 21


OFPPT ISTA TAOURIRT

if (cb_cinc.SelectedIndex > 0)
{
var champ2 = dc.clients.SingleOrDefault(u => u.cin == cb_cinc.Text);
txt_nomc.Text = champ2.nom;
txt_villec.Text = champ2.ville;
}
}

Afficher la désignation et le PU ;
private void cb_codea_SelectedIndexChanged(object sender, EventArgs e)
{
Form1.cnx.Open();
SqlCommand cmd1 = new SqlCommand("select designation,prix_u,qte_dispo from article
where codea='" + cb_codea.Text + "'", Form1.cnx);
SqlDataReader dr1 = cmd1.ExecuteReader();
dr1.Read();
txt_des.Text = dr1[0].ToString();
txt_pu.Text = dr1[1].ToString();
txt_qtedis.Text = dr1[2].ToString();
txt_qte.Focus();
dr1.Close();
Form1.cnx.Close();
}

Ajouter article ;
private void ajouter_article_Click(object sender, EventArgs e)
{
// Controle de la quantité commandée ( Qte < Qdispo )
if (int.Parse(txt_qte.Text) > int.Parse(txt_qtedis.Text))
{
msg.Visible = true;
//txt_qte.Text = txt_qtedis.ToString();
msg.Text = "Stock insuffisant !";
txt_qte.Focus();
}
else
{
// Ajout de la ligne dans le DataGridView
double Montant = double.Parse(txt_pu.Text) * int.Parse(txt_qte.Text);
string[] Ligne = { cb_codea.Text, txt_des.Text, txt_pu.Text, txt_qte.Text,
Montant.ToString() };
//dgv.Rows.Add(Ligne);

Total = Total + Montant;


txt_total.Text = Total.ToString();

dgv.Rows.Add(new object[] { cb_codea.Text, txt_des.Text, txt_pu.Text,


txt_qte.Text });
}
}

Supprimer article ;
private void supprimer_article_Click(object sender, EventArgs e)
{
dgv.Rows.RemoveAt(dgv.SelectedRows[0].Index);
}

Enregistrer Commande ;
private void enregistrer_commande_Click(object sender, EventArgs e)
{

Karima BELABED Page 22


OFPPT ISTA TAOURIRT

Form1.cnx.Open();
SqlCommand cmdPAS = new SqlCommand("insert into commande values('" + txt_numc.Text
+ "','" + dtp_datec.Value + "','" + cb_cinc.Text + "')", Form1.cnx);
cmdPAS.ExecuteNonQuery();
//MessageBox.Show("" + dgv.Rows.Count);
for (int i = 0; i <= dgv.Rows.Count - 2; i++)
{
SqlCommand cmdD = new SqlCommand("insert into details values('" + txt_numc.Text
+ "','" + dgv.Rows[i].Cells[0].Value.ToString() + "','" + dgv.Rows[i].Cells[3].Value.ToString()
+ "')", Form1.cnx);
cmdD.ExecuteNonQuery();
//mise à jour de la quantité en stock
SqlCommand cmdM = new SqlCommand("update article set qte_dispo =qte_dispo-'" +
int.Parse(dgv.Rows[i].Cells[3].Value.ToString()) + "' where codea='" +
dgv.Rows[i].Cells[0].Value.ToString() + "'", Form1.cnx);
cmdM.ExecuteNonQuery();

}
MessageBox.Show("commande est passée avec succés!!");
Form1.cnx.Close();
}

I – 4 Consultation des commandes d’un client.

1 – Interface à réaliser :

Karima BELABED Page 23


OFPPT ISTA TAOURIRT

2 - Code à développer :

 Le Combo cin client doit être rempli par les cin des clients.
 Lorsque le cin d’un client est choisi :
 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 :


 Ses détails son affichés dans le 2eme DataGridView.
 Le Total HT de la commande, la TVA et le TTC sont calculés et affichés dans des
TextBox(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é.

 On peut choisir d’afficher les détails de la première commande de la liste des commandes
pour chaque client choisi dans le combo.

Ajouter les colonnes sur DataGridView :


private void consulter_commande_Load(object sender, EventArgs e)
{
dgvD.Columns.Add("code article", "code article");
dgvD.Columns.Add("désignation", "désignation");
dgvD.Columns.Add("prix unitaire", "prix unitaire");
dgvD.Columns.Add("quantité", "quantité");
dgvD.Columns.Add("montant", "montant");
//Remplissage du Combo Client
cb_cinc.Items.Clear(); foreach (client cl in dc.clients)
{
cb_cinc.Items.Add(cl.cin);
}
}

Afficher les commandes de client :


private void cb_cinc_SelectedIndexChanged(object sender, EventArgs e)
{
var cl = (from c in dc.clients
where c.cin == cb_cinc.Text
select c).First();
if (cl != null)
{
txt_nomc.Text = cl.nom;
txt_villec.Text = cl.ville;

}
//dgvC.Rows.Clear();
SqlCommand cmdAFF= new SqlCommand("select numc,datec from commande where
cin='"+cb_cinc.Text+"'",Form1.cnx);
Form1.cnx.Open();
SqlDataReader drAFF = cmdAFF.ExecuteReader();

Karima BELABED Page 24


OFPPT ISTA TAOURIRT

DataTable dtAFF = new DataTable();


dtAFF.Load(drAFF);
dgvC.DataSource = dtAFF;
Form1.cnx.Close();
ca = 0;
foreach (commande c in cl.commandes)
{
foreach (detail d in c.details)
{
ca += Convert.ToDouble(d.article.prix_u) * Convert.ToInt32(d.qte);
}
}
txt_chiffre.Text = ca.ToString();
}

Afficher les détails de la commande :


private void dgvC_CellClick(object sender, DataGridViewCellEventArgs e)
{
string s = dgvC.SelectedRows[0].Cells[0].Value.ToString();
var com = (from c in dc.commandes
where c.numc == int.Parse(s)
select c).First();
dgvD.Rows.Clear();
total = 0;
foreach (detail d in com.details)
{
double Montant = Convert.ToDouble(d.article.prix_u) * Convert.ToInt32(d.qte);
dgvD.Rows.Add(d.codea, d.article.designation, d.article.prix_u, d.qte,
Montant);
total += Montant;
}
txt_total.Text = total.ToString();
txt_tva.Text = (total * 0.2).ToString();
txt_ttc.Text = (total * 1.2).ToString();
}

II - Un rapport facture.

Karima BELABED Page 25


OFPPT ISTA TAOURIRT

Karima BELABED Page 26

Vous aimerez peut-être aussi