Académique Documents
Professionnel Documents
Culture Documents
Résumé ADO.net
Développement et déploiement d’application Client / Serveur
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)
I - Les formulaires :
Interface d’accueil :
1 – Interface à réaliser :
2 - Code à développer :
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");
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
{
}
}
}
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();
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
{
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();
}
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);
}
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
{
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);
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);
}
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);
}
}
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);
}
}
1 – Interface à réaliser :
2 - Code à développer :
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 :
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);
}
}
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!!");
}
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();
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!!");
}
}
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();
}
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);
byteimage=c.photo;
}
else
{
MessageBox.Show("Article n'existe pas !!", "exist", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}
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.
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);
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)
{
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();
}
1 – Interface à réaliser :
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)
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.
}
//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();
II - Un rapport facture.