Escolar Documentos
Profissional Documentos
Cultura Documentos
A
FORMATEUR : BENTALEB MOHAMED
FILIERE :TDI
OFPPT TDI
BENTALEB MOHAMED
TRAVAUX PRATIQUES
Page 2
OFPPT TDI
BENTALEB MOHAMED
TRAVAUX PRATIQUES
Page 3
OFPPT TDI
TRAVAUX PRATIQUES
Objectifs :
Dans cet atelier vous allez crer une connexion et afficher ltat de la connexion.
Travail demand :
1. Crer linterface ci-dessous :
BENTALEB MOHAMED
Page 4
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 5
OFPPT TDI
TRAVAUX PRATIQUES
Objectif :
Dans cet exercice vous allez travailler avec les objets connection, command et
datareader.
Travail demand :
1. Crer linterface ci-dessous :
2. ajouter un combobox et crire le code qui permet de remplir le combobox par des
clients (Customers) de la base de donnes Northwind
La liste sera remplie par CustomerID et CompanyName
Solution
using System.Data.SqlClient;
namespace TP2
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection();
SqlCommand cmd =new SqlCommand() ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
con.ConnectionString =
"Server=(local);"+
"Initial Catalog =Northwind"+
";Integrated Security=true";
//"Data Source=.;Initial Catalog=Northwind;Integrated Security=True "
con.Open();
//MessageBox.Show(con.State.ToString());
BENTALEB MOHAMED
Page 6
OFPPT TDI
TRAVAUX PRATIQUES
cmd.CommandText = "select
cmd.Connection = con;
BENTALEB MOHAMED
Page 7
OFPPT TDI
TRAVAUX PRATIQUES
TP N 3
Objectif :
Dans cet atelier nous allons utiliser les diffrents Fournisseurs daccs une base de
donnes SqlClient , OLEDB ODBC .
Travail demand :
1.Crer linterface ci-dessous :
2.Ecrire le code pour le Bouton SqlClient qui permet dafficher tous les Employs
(Employees) de la base de donnes Northwind (mode connect).
3. Ecrire le code pour le Bouton ODBC qui permet dafficher toutes les Commandes
(orders) de la base de donnes Northwind (mode connect).
BENTALEB MOHAMED
Page 8
OFPPT TDI
TRAVAUX PRATIQUES
4. Ecrire le code pour le Bouton OLEDB qui permet dafficher tous les
enregistrements de la table OrderDetails de la base de donnes Northwind (mode
connect).
Solution
using
using
using
using
System.Data.SqlClient;
System.Data.Odbc;
System.Data.OleDb;
System.Data.Common;
namespace TP3
{
public partial class Form1 : Form
{
IDbConnection con;//interface
IDbCommand cmd;//interface
IDataReader dr;//interface
public Form1()
{
InitializeComponent();
}
private void SQLCLIENT_Provider(object sender, EventArgs e)
{
con = new SqlConnection("data source= localhost;"
+"database =Northwind;"+
"Trusted_Connection=yes");
cmd = new SqlCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "select * from employees";
dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
this.dataGridView1.DataSource = dt;
}
BENTALEB MOHAMED
Page 9
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 10
OFPPT TDI
TRAVAUX PRATIQUES
TP N 4
Objectif :
Dans cet exercice vous allez utiliser les oprations de mise jours sur une table en
utilisant la mthode de concatnation.
Travail demand :
Soit la base de donne gestionPersonne contenant la table suivante :
3. Ecrire le code pour le Bouton Ajouter qui permet dajouter une nouvelle Personne
( mode connect).
BENTALEB MOHAMED
Page 11
OFPPT TDI
TRAVAUX PRATIQUES
4. Ecrire le code pour le Bouton Modifier qui permet de modifier une Personne en
mode connect.
5. Ecrire le code pour le Bouton Supprimer qui permet de supprimer une Personne
en mode connect.
6. Ecrire le code pour le Bouton Rechercher qui permet de rechercher une Personne
en mode connect.
using System.Data.SqlClient ;
namespace TP4
{
public partial class Form1 : Form
{SqlConnection con = new SqlConnection("Server=(local);Initial Catalog
=gestionPersonne;Integrated Security=true");
SqlCommand cmd = new SqlCommand();
SqlDataReader rd;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.CommandText = "";
con.Open();
}
private void buttonAjouter_Click(object sender, EventArgs e)
{
cmd.CommandText = "insert into personne values ("
+ this.textBoxCode.Text
+ ",'" + this.textBoxNom.Text
+ "' ,'" + this.textBoxPrenom.Text + "')";
cmd.ExecuteNonQuery();
MessageBox.Show ("insertion russite");
}
private void buttonModifier_Click(object sender, EventArgs e)
{
cmd.CommandText = "update personne set nom='" +
this.textBoxNom.Text +
"',prenom='" + this.textBoxPrenom.Text
+ "'where code=" + this.textBoxCode.Text;
cmd.ExecuteNonQuery();
MessageBox.Show (" modification russite");
}
private void buttonSupprimer_Click(object sender, EventArgs e)
{
cmd.CommandText = "delete from personne where code=" +
this.textBoxCode.Text;
cmd.ExecuteNonQuery();
MessageBox.Show("suppression russite");
}
BENTALEB MOHAMED
Page 12
OFPPT TDI
TRAVAUX PRATIQUES
{
cmd.CommandText = "select * from personne where code ="
+ this.textBoxCode.Text;
rd =
cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
this.textBoxNom.Text = rd["Nom"].ToString ();
this.textBoxPrenom.Text = rd[2].ToString();
}
else
{
MessageBox.Show("Code introuvable");
}
rd.Close();
}
}
}
BENTALEB MOHAMED
Page 13
OFPPT TDI
TRAVAUX PRATIQUES
TP N 5
Objectifs :
Dans cet atelier vous allez utiliser les paramtres de lobjet command a travers sa
collection Parameters .
Travail demand :
1. Crer linterface ci-dessous :
using System.Data.SqlClient;
namespace TP5
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("Server=(local)"+
";Initial Catalog =gestionPersonne;Integrated Security=true" );
SqlCommand cmd = new SqlCommand();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.CommandText = "";
con.Open();
}
BENTALEB MOHAMED
Page 14
OFPPT TDI
TRAVAUX PRATIQUES
{
cmd.Parameters.Clear();
cmd.Parameters.Add("@code",SqlDbType.Int, 4).Value =
this.textBoxCode.Text;
cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 50).Value =
this.textBoxNom.Text;
cmd.Parameters.Add("@Prenom", SqlDbType.VarChar, 50).Value =
this.textBoxPrenom.Text;
}
private void buttonAjouter_Click(object sender, EventArgs e)
{
if (this.buttonAjouter.Text.Equals("Nouveau"))
{
foreach (Control a in Controls)
{
if (a is TextBox)
{
a.Text = "";
}
}
this.buttonAjouter.Text = "Ajouter";
}
else if (this.buttonAjouter.Text.Equals("Ajouter"))
{
createParameters();
cmd.CommandText = "insert into personne values "+
"(@code,@nom,@prenom)";
cmd.ExecuteNonQuery();
MessageBox.Show("insertion russite");
this.buttonAjouter.Text = "Nouveau";
}
}
private void buttonModifier_Click(object sender, EventArgs e)
{
createParameters();
cmd.CommandText = "update personne set nom =@nom"+
", prenom =@prenom where code = @code";
cmd.ExecuteNonQuery();
MessageBox.Show("insertion russite");
}
private void buttonSupprimer_Click(object sender, EventArgs e)
{
createParameters();
cmd.CommandText = "delete personne"+
" where code = @code";
cmd.ExecuteNonQuery();
MessageBox.Show("insertion russite");
}
BENTALEB MOHAMED
Page 15
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 16
OFPPT TDI
TRAVAUX PRATIQUES
TP N 6
Objectif :
Dans cet exercice vous allez effectuer des oprations de recherche sur une table.
Travail demand :
1. Crer linterface ci-dessous :
Solution :
using System.Data.SqlClient;
BENTALEB MOHAMED
Page 17
OFPPT TDI
TRAVAUX PRATIQUES
namespace TP6
{
public partial class Form1 : Form
{
static
SqlConnection con = new SqlConnection("server=.;database
=northwind;integrated security =sspi");
SqlCommand cmd = new SqlCommand("", con);
SqlDataReader dr ;
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
con.Open();
cmd.CommandText = "select * from customers";
dr = cmd.ExecuteReader();
dt.Load(dr);
this.dataGridViewAffiche.DataSource = dt;
this.comboBoxChoix.Items.Add("Tout");
this.comboBoxChoix.Items.Add("Commencent par");
this.comboBoxChoix.Items.Add("Ne Commencent pas par");
this.comboBoxChoix.Items.Add("Se terminent par");
this.comboBoxChoix.Items.Add("Ne Se terminent pas par");
this.comboBoxChoix.Items.Add("Contiennent ");
this.comboBoxChoix.Items.Add("ne Contiennent pas");
this.comboBoxChoix.SelectedIndex = 0;
dr.Close();
}
private void filtrer(){
DataView dv = new DataView(dt);
switch (this.comboBoxChoix.SelectedIndex)
{
case 0: dv.RowFilter = "customerId like '%'";
textBoxCritere.Text = "";
break;
case 1: // begin
dv.RowFilter = "customerId like '" +
(this.textBoxCritere.Text).Trim()+ "%'";
break;
case 2:
// not begin
dv.RowFilter = "customerId not like '" +
(this.textBoxCritere.Text).Trim() + "%'";
break;
case 3 ://se termine
dv.RowFilter = "customerId like '%" +
(this.textBoxCritere.Text).Trim() + "'";
break;
case 4: //Not ends with
dv.RowFilter = "customerId not like '%" +
(this.textBoxCritere.Text).Trim() + "'";
break;
case 5 :// contient
dv.RowFilter = "customerId like '%" +
(this.textBoxCritere.Text) + "%'";
break;
case 6:// ne contient pas
dv.RowFilter = "customerId
not like '%" +
(this.textBoxCritere.Text).Trim() + "%'";
BENTALEB MOHAMED
Page 18
OFPPT TDI
TRAVAUX PRATIQUES
break ;
}
this.dataGridViewAffiche.DataSource = dv;
}
private void buttonChercher_Click(object sender, EventArgs e)
{
filtrer();
}
private void textBoxCritere_TextChanged(object sender, EventArgs e)
{
filtrer();
}
}
}
TP N 7
Objectif :
Remplissage dune liste modifiable.
Remplissage dun objet Datagrid.
BD Northwind.
Travail demand :
1. Crer la base de donnes :
BENTALEB MOHAMED
Page 19
OFPPT TDI
TRAVAUX PRATIQUES
3. Crer linterface suivant ainsi que le code ncessaire pour cette tache :
BENTALEB MOHAMED
Page 20
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 21
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 22
OFPPT TDI
TRAVAUX PRATIQUES
MessageBox.Show("bien supprime");
}
}
}
}
BENTALEB MOHAMED
Page 23
OFPPT TDI
TRAVAUX PRATIQUES
this.DataGridView1.DataSource = ClassGestion.dt;
ClassGestion.dr.Close();
}
private void Form2_Load(object sender, EventArgs e)
{
ClassGestion.con = new SqlConnection(ClassGestion.SqlconStr);
ClassGestion.con.Open();
ClassGestion.cmd = ClassGestion.con.CreateCommand();
display();
}
private void BtnModifier_Click(object sender, EventArgs e)
{
createParametters();
ClassGestion.cmd.CommandText = @"update client set nom=@nom
,prenom=@prenom, dateNais =@dateN where codeclient= @Code";
ClassGestion.cmd.ExecuteNonQuery();
MessageBox.Show("Bien modifi");
display();
}
private void BtnSupprimer_Click(object sender, EventArgs e)
{
createParametters();
//declaration d'une transaction
SqlTransaction tr = null;
//dbuter une transaction
tr = ClassGestion.con.BeginTransaction();
ClassGestion.cmd.Transaction = tr;
try
{
DialogResult res = MessageBox.Show("Voulez-vous vraiment
supprimer cet enregistrement ?", "suppression", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
ClassGestion.cmd.CommandText = "delete from Client where
codeClient=@code";
ClassGestion.cmd.ExecuteNonQuery();
tr.Commit();
display();
BtnNouveau_Click(sender, e);
}
else return;
}
catch (Exception)
{
tr.Rollback();
DialogResult response = MessageBox.Show("ce client a pass des
commandes,Confirmer cette suppression ?", "confirmation",
MessageBoxButtons.YesNo, MessageBoxIcon.Information,
MessageBoxDefaultButton.Button2);
if (response == DialogResult.Yes)
{
ClassGestion.cmd.CommandText = "delete from commandes where
codeClient = @code";
ClassGestion.cmd.ExecuteNonQuery();
ClassGestion.cmd.CommandText = "delete from Client where
codeClient=@code";
ClassGestion.cmd.ExecuteNonQuery();
BENTALEB MOHAMED
Page 24
OFPPT TDI
TRAVAUX PRATIQUES
display();
BtnNouveau_Click(sender, e);
}
}
}
private void DataGridView1_Click(object sender, EventArgs e)
{
if( this.DataGridView1.Rows.Count >= 1) {
this.DataGridView1.CurrentRow.Selected = true;
this.TextBox1.Text =
this.DataGridView1.CurrentRow.Cells[0].Value.ToString();
this.TextBox2.Text =
this.DataGridView1.CurrentRow.Cells[1].Value.ToString();
this.TextBox3.Text =
this.DataGridView1.CurrentRow.Cells[2].Value.ToString();
this.DateTimePicker1.Value = (DateTime
)this.DataGridView1.CurrentRow.Cells[3].Value;
}else
return ;
}
private void DataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
}
}
}
BENTALEB MOHAMED
Page 25
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 26
OFPPT TDI
TRAVAUX PRATIQUES
frm1.WindowState = FormWindowState.Normal;
trouv = true;
return ;
}
}
// lorsque le formulaire n'est pas charg en mmoire
if ( trouv==false ){
ClassGestion.fclient = new Form2();
ClassGestion.fclient.MdiParent = this;
ClassGestion.fclient.Show();
}
//ClassGestion.fclient.MdiParent = this;
//ClassGestion.fclient.Show();
}
private void toolfCommandes_Click(object sender, EventArgs e)
{
Boolean trouv = false;
foreach (Form frm1 in this.MdiChildren)
{
if (frm1.Equals(ClassGestion.fCommandes))
{
frm1.MdiParent = this;
frm1.Activate();
//dans le cas o la fenetre est minimise il faut appel
windowstate
frm1.WindowState = FormWindowState.Normal;
trouv = true;
return;
}
}
// lorsque le formulaire n'est pas charg en mmoire
if (!trouv)
{
ClassGestion.fCommandes = new Form1();
ClassGestion.fCommandes.MdiParent = this;
ClassGestion.fCommandes.Show();
}
}
private void toolfcltCmd_Click(object sender, EventArgs e)
{
Boolean trouv = false;
foreach (Form frm1 in this.MdiChildren)
{
if (frm1.Equals(ClassGestion.fcltCmd))
{
frm1.MdiParent = this;
frm1.Activate();
//dans le cas o la fenetre est minimise il faut appel windowstate
frm1.WindowState = FormWindowState.Normal;
trouv = true;
return;
}
}
// lorsque le formulaire n'est pas charg en mmoire
if (!trouv)
{
BENTALEB MOHAMED
Page 27
OFPPT TDI
TRAVAUX PRATIQUES
ClassGestion.fcltCmd = new Form3();
ClassGestion.fcltCmd.MdiParent = this;
ClassGestion.fcltCmd.Show();
}
}
}
TP N 8
Objectif :
Dans cet atelier nous allons utiliser et appeler des procdures stockes
Travail demand :
1. Utiliser la base de donnes cre dans latelier prcdent
Ajouter les procdures stockes suivantes :
Page 28
OFPPT TDI
BEGIN
select * from
END
TRAVAUX PRATIQUES
Client
Page 29
OFPPT TDI
TRAVAUX PRATIQUES
AS
BEGIN
UPDATE Commandes SET CodeClient = @CodeClient, DateCom =
@DateCom WHERE (NumCom = @NumCom)
END
CREATE PROCEDURE [dbo].[NbrCmdClt]
@code int
AS
BEGIN
select count(*) from commandes where codeclient =
END
@code
Commandes WHERE
Page 30
OFPPT TDI
TRAVAUX PRATIQUES
END
CREATE PROCEDURE [dbo].[SupprimerCmd]
@NumCom int
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Commandes WHERE (NumCom = @NumCom)
END
2. Refaire le mme atelier en utilisant les procdures stockes
Ajouter une nouvelle classe
using System.Data;
using System.Data.SqlClient;
namespace ClientCommandesParam
{
class ClassGestion
{
public static String SqlconStr = @"Server=(local);Initial Catalog
=GestCommandes;Integrated Security=true";
public static SqlConnection con;
public static SqlCommand cmd;
public static SqlDataReader dr;
public static DataTable dt = new DataTable();
public static Form1 fCommandes = new Form1();
public static Form2 fclient = new Form2();
public static Form3 fcltCmd = new Form3();
}
}
using System.Data.SqlClient;
namespace ClientCommandesParam
{
public partial class Form2 : Form
{
BENTALEB MOHAMED
Page 31
OFPPT TDI
TRAVAUX PRATIQUES
public Form2()
{
InitializeComponent();
}
private void BtnNouveau_Click(object sender, EventArgs e)
{
foreach (Control a in Controls)
{
if (a is TextBox)
{
a.Text = "";
}
}
this.TextBox1.Focus();
}
private void BtnEnregistrer_Click(object sender, EventArgs e)
{
createParametters();
ClassGestion.cmd.CommandText = @"Ajouter";
try
{
ClassGestion.cmd.ExecuteNonQuery();
MessageBox.Show("Bien ajout");
display();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message );
}
}
private void createParametters()
{
ClassGestion.cmd.Parameters.Clear();
ClassGestion.cmd.Parameters.Add("@code",
SqlDbType.Int, 4, "codeclient").Value = TextBox1.Text;
ClassGestion.cmd.Parameters[0].Direction =
ParameterDirection.Input;
ClassGestion.cmd.Parameters.Add("@Nom",
SqlDbType.VarChar, 10).Value = TextBox2.Text;
ClassGestion.cmd.Parameters.Add("@Prenom",
SqlDbType.VarChar, 20).Value = TextBox3.Text;
ClassGestion.cmd.Parameters.Add("@DateN",
SqlDbType.Date).Value = this.DateTimePicker1.Value.Date;
}
BENTALEB MOHAMED
Page 32
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 33
OFPPT TDI
TRAVAUX PRATIQUES
using System.Data.SqlClient;
namespace ClientCommandesParam
{
public partial class Form1 : Form
{DataTable table = new DataTable();
public Form1()
{
BENTALEB MOHAMED
Page 34
OFPPT TDI
TRAVAUX PRATIQUES
InitializeComponent();
}
private void Ajouter_Click(object sender, EventArgs e)
{
createParametters();
ClassGestion.cmd.CommandText = "AjouterCmd";
ClassGestion.cmd.ExecuteNonQuery();
MessageBox.Show("bien ajout");
}
private void createParametters(){
ClassGestion.cmd.Parameters.Clear();
ClassGestion.cmd.Parameters.Add("@NumCom", SqlDbType.Int, 4).
Value = this.TextBox1.Text;
ClassGestion.cmd.Parameters.Add("@CodeClient", SqlDbType.Int, 4).
Value = this.ComboBox1.SelectedValue;
ClassGestion.cmd.Parameters.Add("@DateCom", SqlDbType.Date).
Value = this.DateTimePicker1.Value.Date;
}
private void Form1_Load(object sender, EventArgs e)
{ClassGestion.con = new SqlConnection(ClassGestion.SqlconStr);
ClassGestion.con.Open();
ClassGestion.cmd = ClassGestion.con.CreateCommand();
ClassGestion.cmd.CommandType = CommandType.StoredProcedure;
ClassGestion.cmd.CommandText = "sp_NomPrenom";
SqlDataReader dr
= ClassGestion.cmd.ExecuteReader();
table.Load(dr);
this.ComboBox1.DataSource = table;
this.ComboBox1.DisplayMember = "NomPrenom";
this.ComboBox1.ValueMember = "codeclt";
dr.Close();
}
private void Modifier_Click(object sender, EventArgs e)
{
createParametters();
ClassGestion.cmd.CommandText = "ModifierCmd";
ClassGestion.cmd.ExecuteNonQuery();
MessageBox.Show("bien Modifi");
}
Solution pour le formulaire Commandes dun client choisi partir dune liste
BENTALEB MOHAMED
Page 35
OFPPT TDI
TRAVAUX PRATIQUES
using System.Data.SqlClient;
namespace ClientCommandesParam
{
public partial class Form3 : Form
{
SqlCommand cmd1;
SqlParameter param = new SqlParameter();
DataTable maTable = new DataTable();
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
ClassGestion.con = new SqlConnection(ClassGestion.SqlconStr);
ClassGestion.con.Open();
cmd1 = ClassGestion.con.CreateCommand();
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.CommandText = "sp_NomPrenom";
SqlDataReader dr
= cmd1.ExecuteReader();
maTable.Load(dr);
dr.Close();
this.ComboBox1.DataSource = maTable;
this.ComboBox1.DisplayMember = "NomPrenom";
this.ComboBox1.ValueMember = "codeclt";
}
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
cmd1.Parameters.Clear();
param.Direction = ParameterDirection.Input;
param.ParameterName = "@CodeClient";
param.SqlDbType = SqlDbType.Int;
param.Size = 4;
param.Value = this.ComboBox1.SelectedValue;
cmd1.Parameters.Add(param);
DataTable dtgrille = new DataTable();
try
{
cmd1.CommandText = "sp_CmdByClient";
ClassGestion.dr = cmd1.ExecuteReader();
if (ClassGestion.dr.HasRows)
BENTALEB MOHAMED
Page 36
OFPPT TDI
TRAVAUX PRATIQUES
{
dtgrille.Load(ClassGestion.dr);
}
this.DataGridView1.DataSource = dtgrille;
ClassGestion.dr.Close();
}
catch (Exception )
{
}
}
}
}
BENTALEB MOHAMED
Page 37
OFPPT TDI
TRAVAUX PRATIQUES
TP N 9
Objectif :
Dans cet exercice vous allez travailler avec lobjet commnadBuilder pour gnrer les
paramtres laide de la mthode statique DeriveParameters(cmd)
Travail demand :
1. Crer linterface ci-dessous :
BENTALEB MOHAMED
Page 38
OFPPT TDI
TRAVAUX PRATIQUES
}
private void Form1_Load(object sender, EventArgs e)
{
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(cmd);
}
private void valeurParam()
{
cmd.Parameters["@code"].Value = this.textBox1.Text;
cmd.Parameters["@nom"].Value = this.textBox2.Text;
cmd.Parameters["@prenom"].Value = this.textBox3.Text;
cmd.Parameters["@DateN"].Value = this.dateTimePicker1.Value;
}
private void btnAjouter_Click(object sender, EventArgs e)
{
cmd.CommandText = "Ajouter";
cmd.Parameters.Clear();
SqlCommandBuilder.DeriveParameters(cmd);
valeurParam();
cmd.ExecuteNonQuery();
}
}
}
BENTALEB MOHAMED
Page 39
OFPPT TDI
TRAVAUX PRATIQUES
TP N 10
Objectif :
Dans cet exercice vous allez travailler avec Les procdures stockes.
Travail demand :
1. Crer linterface ci-dessous :
BENTALEB MOHAMED
Page 40
OFPPT TDI
BENTALEB MOHAMED
TRAVAUX PRATIQUES
Page 41
OFPPT TDI
TRAVAUX PRATIQUES
TP N 11
Objectif :
Dans cet exercice vous allez travailler dans le mode dconnect
Avec les objet dataset, dataAdaper, CommandBuilder.
Travail demand :
1. Crer linterface ci-dessous :
BENTALEB MOHAMED
Page 42
OFPPT TDI
TRAVAUX PRATIQUES
}
}
}
TP N 12
Objectif :
Dans cet exercice vous allez travailler dans le mode dconnect
Avec les objets dataAdapter et DataSet
Travail demand :
1. Crer linterface ci-dessous :
BENTALEB MOHAMED
Page 43
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 44
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 45
OFPPT TDI
TRAVAUX PRATIQUES
TP N 13
Objectifs :
Dans cet atelier vous allez utiliser les objets du mode dconnect
Dataset dataadapter CommandBuilder pour gnrer insertCommand
,updateCommand et deleteCommand de lobjet dataAdapter partir se
selectCommand.
Travail demand :
1. Crer linterface ci-dessous :
2. Ecrire les instructions ncessaires pour chaque bouton qui figure sur linterface cidessus.
using System.Data.SqlClient;
namespace MD_TP2
{
public partial class Form2 : Form
{
SqlConnection con = new SqlConnection("Data Source=.;Initial
Catalog=Gclient;Integrated Security=True");
int RowNumber=0;
DataSet ds = new DataSet();
SqlDataAdapter da;
SqlCommandBuilder build = new SqlCommandBuilder();
public Form2()
{
InitializeComponent();
BENTALEB MOHAMED
Page 46
OFPPT TDI
TRAVAUX PRATIQUES
}
private void Form2_Load(object sender, EventArgs e)
{
da = new SqlDataAdapter("select * from client", con);
da.FillSchema(ds, SchemaType.Source, "client");
build.DataAdapter = da;
da.Fill(ds, "client");
}
private void buttonPremier_Click(object sender, EventArgs e)
{
RowNumber = 0;
afficher(RowNumber);
}
private void buttonSuivant_Click(object sender, EventArgs e)
try {
RowNumber += 1;// Positioner le curseur dans la position suivante
afficher(RowNumber);
} catch(IndexOutOfRangeException )
{
MessageBox.Show("Vous avez atteint la fin");
RowNumber = ds.Tables["client"].Rows.Count - 1;
}
}
private void buttonPrecedent_Click(object sender, EventArgs e)
{
try
{
RowNumber -= 1;// Positioner le curseur dans la position prcdente
afficher(RowNumber);
}
catch (IndexOutOfRangeException)
{
MessageBox.Show("Vous avez atteint le dbut");
RowNumber = 0;
}
}
private void buttondernier_Click(object sender, EventArgs e)
{RowNumber = ds.Tables["client"].Rows.Count - 1; // Positioner le
curseur dans la fin
afficher(RowNumber);
}
private void buttonAjouter_Click(object sender, EventArgs e)
{
DataRow ligne = ds.Tables[0].Rows.Find(textBoxCode.Text);
if (ligne == null)
{
DataRow nouvelleLigne = ds.Tables[0].NewRow();
nouvelleLigne[0] = this.textBoxCode.Text;
nouvelleLigne[1] = this.textBoxNom.Text;
ds.Tables[0].Rows.Add(nouvelleLigne);
Valider();
BENTALEB MOHAMED
Page 47
OFPPT TDI
TRAVAUX PRATIQUES
}
else
{ MessageBox.Show("client dja existant"); }
}
}
}
BENTALEB MOHAMED
Page 48
OFPPT TDI
TRAVAUX PRATIQUES
TP N 14
Objectifs :
Dans cet atelier vous allez utiliser les objets du mode dconnect
Dataset dataadapter CommandBuilder pour gnrer insertCommand
,updateCommand et deleteCommand de lobjet dataAdapter partir se
selectCommand.
On optimise lutilisation dune approche de la POO
Travail demand :
1. Crer une classe Client ayant deux attributs Code et Nom
Crer un interface interface IMaj
{
void ajouter( Object obj );
void modifier(Object obj);
void supprimer(Object obj);
Object rechercher(Object obj);
}
2.
3. Crer une Classe ClientDAO qui implmente linterface IMaj et ayant les mthodes
publiques suivantes :
a. public void ajouter(object obj )
b. public void modifier(object obj)
c. public void supprimer(object obj)
d. public object rechercher(object obj)
e.
f.
public
void initialiser()
BENTALEB MOHAMED
Page 49
OFPPT TDI
TRAVAUX PRATIQUES
Solution propose
La Classe Client
namespace MD_TP2
{
class Client
{
private int code;
private string nom;
public Client(){
}
public Client(int code)
{this.code =code; }
public Client(int code, string nom)
{
this.code = code;
this.nom = nom;
}
public int Code
{
get { return code; }
set { code = value; }
}
public string Nom
{
get { return nom; }
set { nom = value; }
}
public override string ToString()
{
return code.ToString()+ " " + nom;
}
}
}
Linterface IMAJ
namespace MD_TP2
{
interface IMaj
{
void ajouter( Object obj );
void modifier(Object obj);
void supprimer(Object obj);
Object rechercher(Object obj);
}}
BENTALEB MOHAMED
Page 50
OFPPT TDI
TRAVAUX PRATIQUES
La Classe ClientDAO
using System.Data.SqlClient;
using System.Windows.Forms;
namespace MD_TP2
{
class ClientDAO:IMaj
{
private static SqlConnection con = new SqlConnection("Data
Source=.;Initial Catalog=Gclient;Integrated Security=True");
private
DataSet ds = new DataSet();
private
SqlDataAdapter da = new SqlDataAdapter("select * from client",
con);
private
SqlCommandBuilder build = new SqlCommandBuilder();
public
void initialiser()
{
da.FillSchema(ds, SchemaType.Source, "client");
build.DataAdapter = da;
da.Fill(ds, "client");
}
BENTALEB MOHAMED
Page 51
OFPPT TDI
TRAVAUX PRATIQUES
{ MessageBox.Show("client inexistant"); }
}
public void supprimer(object obj)
{
Client clt = (Client)obj;
DataRow ligne = ds.Tables[0].Rows.Find(clt.Code);
if (ligne != null)
{
ligne.Delete();
mettreAjour();
}
else
{ MessageBox.Show("client inexistant"); }
}
public object rechercher(object obj)
{
Client clt
=(Client) obj;
DataRow datarow
= ds.Tables["client"].Rows.Find(clt.Code);
if( datarow !=null )
{clt.Code = (int)datarow[0];
clt.Nom = datarow[1].ToString();
return clt;
}else
{
MessageBox.Show("n'exsiste pas");
return null;
}
}
}
}
BENTALEB MOHAMED
Page 52
OFPPT TDI
TRAVAUX PRATIQUES
{
Client client = new Client();
client.Code = int.Parse(this.textBoxCode.Text);
client.Nom = this.textBoxNom.Text;
clientdao.modifier(client);
}
private void buttonSupprimer_Click(object sender, EventArgs e)
{
clientdao.supprimer(new Client(int.Parse(this.textBoxCode.Text)));
}
private void buttonRechercher_Click(object sender, EventArgs e)
{int cod =int.Parse(this.textBoxCode.Text);
Client client = new Client();
client.Code = cod;
Object obj =clientdao.rechercher(client);
Client clt = (Client)obj;
if (clt !=null )
{
this.textBoxCode.Text = clt.Code.ToString();
this.textBoxNom.Text = clt.Nom;
}
}
}
}
TP N 15
Objectifs :
Dans cet atelier vous allez utiliser les objets du mode dconnect
Dataset dataadapter pour montrer comment travaille selectCommand
insertCommand ,updateCommand et deleteCommand de lobjet dataAdapter .
Travail demand :
1. Raliser linterface suivant :
using System.Data.SqlClient;
BENTALEB MOHAMED
Page 53
OFPPT TDI
TRAVAUX PRATIQUES
namespace MD_TP2
{
public partial class Form4 : Form
{
SqlConnection con = new SqlConnection("Data Source=.;Initial
Catalog=Gclient;Integrated Security=True");
DataSet ds = new DataSet();
SqlDataAdapter da;
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
da = new SqlDataAdapter("select * from client", con);
da.FillSchema(ds, SchemaType.Source, "client");
da.Fill(ds, "client");
}
private void buttonAjouter_Click(object sender, EventArgs e)
{
DataRow ligne = ds.Tables[0].Rows.Find(textBoxCode.Text);
if (ligne == null)//si non trouv
{
DataRow nouvelleLigne = ds.Tables[0].NewRow();
nouvelleLigne[0] = this.textBoxCode.Text;
nouvelleLigne[1] = this.textBoxNom.Text;
ds.Tables[0].Rows.Add(nouvelleLigne);
insertcommand(da);
mettreAjour();
}
else
{ MessageBox.Show("client dja existant"); }
}
private void buttonModifier_Click(object sender, EventArgs e)
{
DataRow ligne = ds.Tables[0].Rows.Find(textBoxCode.Text);
if (ligne != null)//si trouv
{
ligne.BeginEdit();
ligne[0] = this.textBoxCode.Text;
ligne[1] = this.textBoxNom.Text;
ligne.EndEdit();
updatecommand(da);
mettreAjour();
}
else
{ MessageBox.Show("client inexistant"); }
}
BENTALEB MOHAMED
Page 54
OFPPT TDI
TRAVAUX PRATIQUES
if (ligne != null) // si trouve
{
ligne.Delete();
deletecommand(da);
mettreAjour();
}
else
{ MessageBox.Show("client inexistant"); }
}
private void insertcommand(SqlDataAdapter adapter)
{
adapter.InsertCommand = new SqlCommand();
adapter.InsertCommand.Connection = con;
adapter.InsertCommand.CommandType = CommandType.Text;
adapter.InsertCommand.CommandText = "insert into client
values(@code,@nom)";
adapter.InsertCommand.Parameters.AddWithValue("@code",
this.textBoxCode.Text);
adapter.InsertCommand.Parameters.AddWithValue("@nom",this.textBoxNom.Text );
}
private void updatecommand(SqlDataAdapter adapter)
{
adapter.UpdateCommand = new SqlCommand();
adapter.UpdateCommand.Connection = con;
adapter.UpdateCommand.CommandType = CommandType.Text;
adapter.UpdateCommand.CommandText = "update client set nom =@nom
where code= @code";
adapter.UpdateCommand.Parameters.AddWithValue("@code",
this.textBoxCode.Text);
adapter.UpdateCommand.Parameters.AddWithValue("@nom",
this.textBoxNom.Text);
}
private void deletecommand(SqlDataAdapter adapter)
{
adapter.DeleteCommand = new SqlCommand();
adapter.DeleteCommand.Connection = con;
adapter.DeleteCommand.CommandType = CommandType.Text;
adapter.DeleteCommand.CommandText = "delete client where code=
@code";
adapter.DeleteCommand.Parameters.AddWithValue("@code",
this.textBoxCode.Text);
}
private void mettreAjour()
{
//DataSet changes = ds.GetChanges();
//if (changes != null)
//{
//
da.Update(changes, "client");
//
ds.AcceptChanges();
//}
da.Update(ds, "client");
ds.AcceptChanges();
}
}
}
BENTALEB MOHAMED
Page 55
OFPPT TDI
TRAVAUX PRATIQUES
TP N 16
Objectifs :
Dans cet atelier vous allez utiliser les objets du mode Connect
CommandBuilder.DeriveParameters pour gnrer les parametres contenus dans
une procdure stocke
On optimise lutilisation dune approche de la POO
Travail demand :
1. Crer une classe Client
2. Crer une classe MClientDao
a. public void ajouter(Client clt)
b. public void modifier(Client clt)
c. public void supprimer(Client clt)
d. public Client rechercher(Client clt)
3. Crer linterface suivant
using System.Data.SqlClient;
namespace MD_TP2
{
class MClientDao
{
private SqlConnection con = new SqlConnection("Data Source=.;Initial
Catalog=Gclient;Integrated Security=True");
private SqlCommand cmd = new SqlCommand();
private SqlDataReader dr;
BENTALEB MOHAMED
Page 56
OFPPT TDI
TRAVAUX PRATIQUES
cmd.CommandText = "ajouter";
SqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters[1].Value = clt.Code;
cmd.Parameters[2].Value = clt.Nom;
cmd.ExecuteNonQuery();
con.Close();
BENTALEB MOHAMED
Page 57
OFPPT TDI
TRAVAUX PRATIQUES
TP N 17
BENTALEB MOHAMED
Page 58
OFPPT TDI
TRAVAUX PRATIQUES
Objectifs :
Dans cet atelier vous allez utiliser les objets du System.data.Common
System.Configuration pour lire le fichier App.config
Travail demand :
1. Crer un fichier de configuration
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MD_TP2.Properties.Settings.GclientConnectionString"
connectionString="Data Source=.;Initial Catalog=Gclient;Integrated
Security=True"
providerName="System.Data.SqlClient" />
<add name="MD_TP2.Properties.Settings.GclientConnectionString1"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=Gclient.accdb"
providerName="System.Data.OleDb" />
</connectionStrings>
</configuration>
using System.Data.Common ;
using System.Configuration;
namespace MD_TP2
{
public partial class Form7 : Form
{
static string strcon =
BENTALEB MOHAMED
Page 59
OFPPT TDI
TRAVAUX PRATIQUES
ConfigurationManager.
ConnectionStrings[1].
ConnectionString;
static string provider =
ConfigurationManager.
ConnectionStrings[1].
ProviderName;
private DbProviderFactory dbpf;
public static DbConnection con;
private DataSet ds = new DataSet();
private DbDataAdapter da;
private DbCommandBuilder build;
public Form7()
{
InitializeComponent();
}
private void initialiser()
{
dbpf = DbProviderFactories.GetFactory(provider);
con = dbpf.CreateConnection();
con.ConnectionString = strcon;
da = dbpf.CreateDataAdapter();
da.SelectCommand = dbpf.CreateCommand();
da.SelectCommand.CommandText = "select * from client";
da.SelectCommand.Connection = con;
build = dbpf.CreateCommandBuilder();
da.FillSchema(ds, SchemaType.Source, "Client");
build.DataAdapter = da;
da.Fill(ds, "client");
}
private void Form7_Load(object sender, EventArgs e)
{
initialiser();
}
private void buttonAjouter_Click(object sender, EventArgs e)
{
DataRow ligne = ds.Tables[0].Rows.Find(textBoxCode.Text);
if (ligne == null)
{
DataRow nouvelleLigne = ds.Tables[0].NewRow();
nouvelleLigne[0] = this.textBoxCode.Text;
nouvelleLigne[1] = this.textBoxNom.Text;
ds.Tables[0].Rows.Add(nouvelleLigne);
update();
MessageBox.Show("Bien ajout");
}
else
{ MessageBox.Show("client dja existant"); }
}
BENTALEB MOHAMED
Page 60
OFPPT TDI
TRAVAUX PRATIQUES
ligne.BeginEdit();
ligne[0] = this.textBoxCode.Text;
ligne[1] = this.textBoxNom.Text;
ligne.EndEdit(); update();
MessageBox.Show("Bien Modifi");
}
else
{ MessageBox.Show("client inexistant"); }
TP N 18
BENTALEB MOHAMED
Page 61
OFPPT TDI
TRAVAUX PRATIQUES
Objectifs :
Dans cet atelier vous allez utiliser correctement un dataView
Travail demand :
using System.Data.SqlClient;
namespace MD_TP4
{
public partial class Form1 : Form
{
DataSet ds = new DataSet();
SqlConnectionStringBuilder strcon = new SqlConnectionStringBuilder();
SqlConnection con = new SqlConnection("");
SqlDataAdapter da = new SqlDataAdapter();
SqlDataAdapter daOrders = new SqlDataAdapter();
public Form1()
{
InitializeComponent();
strcon.DataSource = "localhost";
strcon.InitialCatalog = "Northwind";
strcon.IntegratedSecurity = true;
con.ConnectionString = strcon.ToString();
da.SelectCommand = new SqlCommand();
da.SelectCommand.CommandText = "select * from customers";
da.SelectCommand.Connection = con;
da.FillSchema(ds, SchemaType.Source, "Customers");
da.Fill(ds, "Customers");
daOrders.SelectCommand = new SqlCommand();
daOrders.SelectCommand.CommandText = "select * from Orders";
daOrders.SelectCommand.Connection = con;
daOrders.FillSchema(ds, SchemaType.Source, "Orders");
daOrders.Fill(ds, "Orders");
}
private void Form1_Load(object sender, EventArgs e)
{
comboBoxCustomers.DataSource = ds.Tables ["Customers"];
comboBoxCustomers.DisplayMember = "CompanyName";
comboBoxCustomers.ValueMember = "CustomerID";
}
BENTALEB MOHAMED
Page 62
OFPPT TDI
TRAVAUX PRATIQUES
TP N 19
Objectifs :
Dans cet atelier vous allez ajouter une colonne combobox lie un champ
Travail demand :
using System.Data.SqlClient;
namespace TP9
{
public partial class Form1 : Form
{private static SqlConnection con = new SqlConnection
("Data Source=.;Initial Catalog=Northwind;Integrated Security=True" );
DataSet ds = new DataSet();
SqlDataAdapter daOrders = new SqlDataAdapter("select * from orders",con);
SqlDataAdapter daCustomers = new SqlDataAdapter("select CustomerId,
CompanyName from customers", con);
public Form1()
{
InitializeComponent();
}
BENTALEB MOHAMED
Page 63
OFPPT TDI
TRAVAUX PRATIQUES
TP N 20
Objectifs :
Dans cet atelier vous allez effectuer des mises jour sur un dataGridView
Travail demand :
BENTALEB MOHAMED
Page 64
OFPPT TDI
TRAVAUX PRATIQUES
using System.Data.SqlClient;
namespace TP10
{
public partial class Form1 : Form
{static String connectionString = "Data Source=.;Initial
Catalog=Gestionpersonne;Integrated Security=True";
static String sql = "SELECT * FROM Personne";
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd ;
SqlDataAdapter da ;
SqlCommandBuilder Builder ;
DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
cmd = new SqlCommand(sql, con);
da = new SqlDataAdapter(cmd);
Builder = new SqlCommandBuilder(da);
da.Fill(ds, "Personne");
dataGridView1.DataSource = ds.Tables["Personne"];
dataGridView1.ReadOnly = true;
this.btnEnregistrer.Enabled = false;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
BENTALEB MOHAMED
Page 65
OFPPT TDI
TRAVAUX PRATIQUES
{
this.dataGridView1.ReadOnly = false;//possibilit d'criture
this.btnEnregistrer.Enabled = true;
this.btnAddEdit.Enabled = false;
this.btnSupprimer.Enabled = false;
}
private void btnSupprimer_Click(object sender, EventArgs e)
{
//if (MessageBox.Show("Do you want to delete this row ?", "Delete",
MessageBoxButtons.YesNo) == DialogResult.Yes)
//{
//
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
//
da.Update(ds.Tables["Personne"]);
//}
//if( ! dataGridView1.CurrentRow.IsNewRow )
//{
//
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
//
da.Update(ds.Tables["Personne"]);
//}
foreach( DataGridViewRow row
in dataGridView1.SelectedRows)
{
dataGridView1.Rows.Remove(row);
}
// da.Update(ds.Tables["Personne"]);
}
private void btnEnregistrer_Click(object sender, EventArgs e)
{
da.Update(ds.Tables["Personne"]);
dataGridView1.ReadOnly = true;
btnEnregistrer.Enabled = false;
btnAddEdit.Enabled = true;
btnSupprimer.Enabled = true;
}
private void dataGridView1_UserDeletingRow(object sender,
DataGridViewRowCancelEventArgs e)
{
if (! e.Row.IsNewRow)
{ DialogResult response =
MessageBox.Show(
"Etes vous sure de vouloir supprimer cette ligne?",
"Suppression de ligne?",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);
if (response == DialogResult.No) {
e.Cancel = true;}
else
{dataGridView1.Rows.Remove(dataGridView1.CurrentRow);}
}
}
BENTALEB MOHAMED
Page 66
OFPPT TDI
TRAVAUX PRATIQUES
TP N 21
Objectifs :
Dans cet atelier vous allez effectuer une suppression multiple de plusieurs
enregistrements sur un dataGridView
Ajouter une colonne checkBox pour effectuer cette suppression
Travail demand :
using System.Data.SqlClient ;
namespace TP8
{
public partial class Form1 : Form
{SqlConnection con = new SqlConnection("Server=(local);Initial
Catalog=Gestionpersonne; Integrated Security=true");
DataSet ds = new DataSet();
SqlDataAdapter da ;
SqlCommandBuilder builder = new SqlCommandBuilder();
DataGridViewCheckBoxColumn check = new DataGridViewCheckBoxColumn();
public Form1()
{
BENTALEB MOHAMED
Page 67
OFPPT TDI
TRAVAUX PRATIQUES
InitializeComponent();
}
private void supprimer_Click(object sender, EventArgs e)
{
for(int i = this.DataGridView1.Rows.Count - 1 ; i>=0 ;i--){
//si la case cocher est true
if ( Convert.ToBoolean( DataGridView1.Rows[i].Cells[3].Value ))
{ Object rech
= DataGridView1.Rows[i].Cells[0].Value;
DataRow row
= ds.Tables[0].Rows.Find(rech);
row.Delete();
}
}
da.Update(ds.Tables[0]);
ds.Tables[0].AcceptChanges();
}
private void Form1_Load(object sender, EventArgs e)
{da = new SqlDataAdapter();
da.SelectCommand = con.CreateCommand();
da.SelectCommand.CommandText = "select * from personne";
da.FillSchema(ds, SchemaType.Mapped, "personne");
da.Fill(ds, "personne");
this.DataGridView1.DataSource = ds;
DataGridView1.DataMember = ds.Tables["personne"].ToString();
builder.DataAdapter = da;
check.HeaderText = "Action";
this.DataGridView1.Columns.Add(check);
}
}
}
TP N 22
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement les liaisons de donnes
(databinding)
Travail demand :
BENTALEB MOHAMED
Page 68
OFPPT TDI
TRAVAUX PRATIQUES
using System.Data.Common;
namespace bindings
{
public partial class Form2 : Form
{
DbConnection con;
DbConnectionStringBuilder cns;
DbProviderFactory dbf;
DbDataAdapter da;
DataTable dt = new DataTable();
DataSet ds = new DataSet();
BindingManagerBase bm;
DbCommandBuilder build;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
dbf = DbProviderFactories.GetFactory("System.Data.SqlClient");
cns = new DbConnectionStringBuilder();
cns.Add("SERVER", ".");
cns.Add("DATABASE", "Gclient");
cns.Add("Integrated Security", "true");
try
{
con = dbf.CreateConnection();
con.ConnectionString = cns.ConnectionString;
da = dbf.CreateDataAdapter();
}
catch (Exception ex)
{
MessageBox.Show("Erreur");
}
build = dbf.CreateCommandBuilder();
da.SelectCommand = dbf.CreateCommand();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = "SELECT * FROM Client";
da.SelectCommand.CommandType = CommandType.Text;
build.DataAdapter = da;
da.FillSchema(ds,SchemaType.Source,"Client");
da.Fill(ds, "Client");
BENTALEB MOHAMED
Page 69
OFPPT TDI
TRAVAUX PRATIQUES
dt = ds.Tables["Client"];
bm = this.BindingContext[dt];
this.codeTextBox.DataBindings.Add(new Binding("Text", dt, "Code"));
this.nomTextBox.DataBindings.Add(new Binding("Text", dt, "Nom"));
}
private void cmdPremier_Click(object sender, EventArgs e)
{
bm.Position = 0;
}
private void cmdPrecedent_Click(object sender, EventArgs e)
{
bm.Position -= 1;
}
private void cmdSuivant_Click(object sender, EventArgs e)
{
bm.Position += 1;
}
private void cmdDernier_Click(object sender, EventArgs e)
{
bm.Position = bm.Count -1;
}
private void cmdAjouter_Click(object sender, EventArgs e)
{
bm.AddNew();
}
private void cmdEnregistrer_Click(object sender, EventArgs e)
{
bm.EndCurrentEdit();
da.Update(ds, "client");
}
private void cmdSupprimer_Click(object sender, EventArgs e)
{
bm.RemoveAt(bm.Position);
da.Update(ds, "client");
}
}
}
TP N 23
BENTALEB MOHAMED
Page 70
OFPPT TDI
TRAVAUX PRATIQUES
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement les liaisons de donnes
(databinding)
Utiliser un dataset typ
Travail demand :
Crer la base de donnes
BENTALEB MOHAMED
Page 71
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 72
OFPPT TDI
TRAVAUX PRATIQUES
Page 73
OFPPT TDI
TRAVAUX PRATIQUES
using System.Data.SqlClient;
using System.IO;
namespace DATABindings
{
public partial class Form1 : Form
{static SqlConnection con = new SqlConnection("Data Source=.;Initial
Catalog=GestPersonnel;Integrated Security=True");
MyDataSet ds = new MyDataSet();
static SqlDataAdapter da = new SqlDataAdapter("select * from personnels",
con);
SqlCommandBuilder build = new SqlCommandBuilder(da);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{this.CmbSF.Items.AddRange(new string[] {"Clibataire", "Mari",
"Divorc", "Veuf"});
this.CmbSF.SelectedIndex = 0;
da.Fill(ds.Personnels);
da.FillSchema(ds, SchemaType.Mapped, ds.Personnels.ToString());
this.TxtMatricule.DataBindings.Add("text",
ds.Personnels, ds.Personnels.MatriculeColumn.ToString(), true);
this.TxtNom.DataBindings.Add("text",
ds.Personnels, ds.Personnels.NomColumn.ToString(), true);
this.Txtprenom.DataBindings.Add("text",
ds.Personnels, ds.Personnels.PrenomColumn.ToString(), true);
this.DTPNais.DataBindings.Add("value",
ds.Personnels, ds.Personnels.dateNaissColumn.ToString(), true);
this.DTPEmbauche.DataBindings.Add("value",
ds.Personnels, ds.Personnels.DateEmbaucheColumn.ToString(), true);
this.CmbSF.DataBindings.Add("SelectedItem",
BENTALEB MOHAMED
Page 74
OFPPT TDI
TRAVAUX PRATIQUES
ds.Personnels, ds.Personnels.situationFamilialeColumn.ToString(),
true);
this.ChkAssurance.DataBindings.Add("CheckState",
ds.Personnels, ds.Personnels.AssuranceColumn.ToString(), true);
}
private void Nouveau_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].AddNew();
}
private void MettreAjour_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].EndCurrentEdit();
da.Update(ds.Personnels.GetChanges());
ds.AcceptChanges();
}
private void Supprimer_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].RemoveAt(
this.BindingContext[ds.Personnels].Position);
da.Update(ds.Personnels.GetChanges(DataRowState.Deleted));
ds.AcceptChanges();
}
private void cmdPremier_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].Position = 0;
}
private void BtnSuivant_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].Position +=1;
}
private void BtnPrecedent_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].Position -= 1;
}
private void BtnDernier_Click(object sender, EventArgs e)
{
this.BindingContext[ds.Personnels].Position =
ds.Personnels.Rows.Count - 1;
}
private void writeXml_Click(object sender, EventArgs e)
{
if(File.Exists(Application.StartupPath+"\\"+"fichier.xml"))
{
File.Delete(Application.StartupPath + "\\" + "fichier.xml");
}
ds.WriteXml(Application.StartupPath + "\\" + "fichier.xml");
}
BENTALEB MOHAMED
Page 75
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 76
OFPPT TDI
TRAVAUX PRATIQUES
TP N 24
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement les liaisons de donnes
(databinding) et BindingManager
Utiliser un dataset Non typ
using System.Data.SqlClient;
using System.IO;
namespace databinGC
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommandBuilder build = new SqlCommandBuilder();
DataSet ds = new DataSet();
BindingManagerBase mb;
BENTALEB MOHAMED
Page 77
OFPPT TDI
TRAVAUX PRATIQUES
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string str = Properties.Settings.Default.constr;
con.ConnectionString = str;
da.SelectCommand = con.CreateCommand();
da.SelectCommand.CommandText = "select * from Personnels";
build.DataAdapter = da;
da.FillSchema(ds, SchemaType.Source, "Personnels");
da.Fill(ds, "Personnels");
mb = this.BindingContext[ds.Tables[0]];
this.CmbSF.Items.AddRange(
new string[] { "Clibataire", "Mari", "Divorc", "Veuf" });
this.CmbSF.SelectedIndex = 0;
this.TxtMatricule.DataBindings.Add("text",
ds.Tables[0], ds.Tables[0].Columns[0].ToString(),true);
this.TxtNom.DataBindings.Add("text",
ds.Tables[0], "Nom",true);
this.Txtprenom.DataBindings.Add("text",
ds.Tables[0], "Prenom",true);
this.DTPNais.DataBindings.Add("value",
ds.Tables[0], "dateNaiss",true);
this.DTPEmbauche.DataBindings.Add("value",
ds.Tables[0], "DateEmbauche",true);
this.CmbSF.DataBindings.Add("SelectedItem",
ds.Tables[0], "situationFamiliale",true);
this.ChkAssurance.DataBindings.Add("Checkstate",
ds.Tables[0], "Assurance",true );
}
private void cmdPremier_Click(object sender, EventArgs e)
{
mb.Position = 0;
}
private void BtnSuivant_Click(object sender, EventArgs e)
{
mb.Position += 1;
}
private void BtnPrecedent_Click(object sender, EventArgs e)
{
mb.Position -= 1;
}
private void BtnDernier_Click(object sender, EventArgs e)
{
mb.Position = ds.Tables[0].Rows.Count - 1;
}
private void Nouveau_Click(object sender, EventArgs e)
{
mb.AddNew();
}
private void Enregistrer_Click(object sender, EventArgs e)
BENTALEB MOHAMED
Page 78
OFPPT TDI
TRAVAUX PRATIQUES
{
mb.EndCurrentEdit();
da.Update(ds.Tables[0].GetChanges(DataRowState.Added));
ds.AcceptChanges();
}
private void Supprimer_Click(object sender, EventArgs e)
{
int currentPostion = mb.Position;
mb.RemoveAt(currentPostion);
da.Update(ds.Tables[0].GetChanges(DataRowState.Deleted));
ds.AcceptChanges();
}
private void Modifier_Click(object sender, EventArgs e)
{
mb.EndCurrentEdit();
da.Update(ds.Tables[0].GetChanges(DataRowState.Modified));
ds.AcceptChanges();
}
private void Writexml_Click(object sender, EventArgs e)
{
if(File.Exists(Application.StartupPath + @"\" + "fichier.xml"))
{
File.Delete(Application.StartupPath + @"\" + "fichier.xml");
}
ds.WriteXml(Application.StartupPath + @"\" + "fichier.xml");
}
private void readXml_Click(object sender, EventArgs e)
{
DataSet dsx = new DataSet();
dsx.ReadXml(Application.StartupPath + @"\" + "fichier.xml",
XmlReadMode.Auto);
this.DataGridView1.DataSource = dsx.Tables[0];
}
}
}
TP N 25
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement un DataView
Cration dune relation entre deux tables etexploitation de cette relation pour extraire
des donnes
BENTALEB MOHAMED
Page 79
OFPPT TDI
TRAVAUX PRATIQUES
using System.Data.SqlClient;
namespace DataRelationEssai
{
public partial class Form1 : Form
{
static string chaine = Properties.Settings.Default.strCon;
static
SqlConnection con = new SqlConnection(chaine);
SqlDataAdapter daCustomers = new SqlDataAdapter("select * from
customers", con);
SqlDataAdapter daOrders = new SqlDataAdapter("select * from Orders",
con);
//SqlDataAdapter da = new SqlDataAdapter("SELECT CustomerID, CompanyName
FROM Customers;" + "SELECT CustomerID, OrderID FROM Orders;", con);
DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
daCustomers.FillSchema(ds, SchemaType.Source, "Customers");
daOrders.FillSchema(ds, SchemaType.Source, "Orders");
daOrders.Fill(ds,"Orders");
daCustomers.Fill(ds,"Customers");
DataColumn parent = ds.Tables["Customers"].Columns["customerid"];
DataColumn enfant = ds.Tables["Orders"].Columns["customerid"];
DataRelation relation = new DataRelation("customer_order", parent, enfant);
ds.Relations.Add(relation);
this.comboBox1.DataSource = ds.Tables["customers"];
this.comboBox1.DisplayMember = "CompanyName";
this.comboBox1.ValueMember = "customerid";
//da.Fill(ds);
}
BENTALEB MOHAMED
Page 80
OFPPT TDI
TRAVAUX PRATIQUES
{
DataView dv = new DataView(ds.Tables["Customers"]);
DataRowView ligne = dv[this.comboBox1.SelectedIndex];
DataView resultat = ligne.CreateChildView("customer_order");
this.dataGridView1.DataSource = resultat;
}
}
}
Autre solution
using System.Data.SqlClient;
namespace DataRelationEssai
{
public partial class Form3 : Form
{
static string chaine = Properties.Settings.Default.strCon;
static SqlConnection con = new SqlConnection(chaine);
SqlDataAdapter daCustomers = new SqlDataAdapter("select * from
customers", con);
SqlDataAdapter daOrders = new SqlDataAdapter("select * from Orders",
con);
DataSet ds = new DataSet();
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
daCustomers.FillSchema(ds, SchemaType.Source, "Customers");
daOrders.FillSchema(ds, SchemaType.Source, "Orders");
daOrders.Fill(ds, "Orders");
daCustomers.Fill(ds, "Customers");
this.comboBox1.DataSource = ds.Tables["customers"];
this.comboBox1.DisplayMember = "CompanyName";
this.comboBox1.ValueMember = "customerid";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
DataView dv = new DataView();
dv.Table = ds.Tables["orders"];
dv.RowFilter = "customerId ='" + comboBox1.SelectedValue.ToString () + "'";
dataGridView1.DataSource = dv;
}
}
}
BENTALEB MOHAMED
Page 81
OFPPT TDI
TRAVAUX PRATIQUES
TP N 26
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement un DataView
Cration dune relation entre deux tables etexploitation de cette relation pour extraire
des donnes
using System.Data.SqlClient;
namespace DataRelationEssai
{
public partial class Form2 : Form
{
static string chaine = Properties.Settings.Default.strCon;
static SqlConnection con = new SqlConnection(chaine);
SqlDataAdapter daCustomers = new SqlDataAdapter("select * from
customers", con);
BENTALEB MOHAMED
Page 82
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 83
OFPPT TDI
TRAVAUX PRATIQUES
TP N 27
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement DisplayMember et
ValueMember et SelectedValue dun comboBox
using System.Data.SqlClient;
namespace les_clients_Meme_pays
{
public partial class Form1 : Form
{
string chaine = Properties.Settings.Default.constr;
string a = Properties.Settings.Default.Machaine;
SqlConnection con =new SqlConnection ();
SqlDataAdapter daCombo;
DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
con.ConnectionString = chaine;
daCombo = new SqlDataAdapter(
"select customerId ,country,CompanyName +' '+ContactName +'
'+ country as Disp from Customers", con);
daCombo.Fill(ds, "coustomers");
comboBox1.DisplayMember = "Disp";
comboBox1.ValueMember = "CustomerID";
comboBox1.DataSource = ds.Tables["coustomers"];
//dataGridView1.DataSource = ds;
BENTALEB MOHAMED
Page 84
OFPPT TDI
TRAVAUX PRATIQUES
//dataGridView1.DataMember = ds.Tables["coustomers"].ToString();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
DataSet ds1 = new DataSet();
SqlDataAdapter daCritere = new SqlDataAdapter();
daCritere.SelectCommand = new SqlCommand (
"select CustomerID , Country from Customers where Country=
(select country from customers where customerid like '" +
comboBox1.SelectedValue + "')", con);
daCritere.Fill(ds1,"resultats");
dataGridView1.DataSource = ds1;
dataGridView1.DataMember = ds1.Tables["resultats"].ToString();
}
}
}
TP N 28
Objectifs :
Dans cet atelier vous allez apprendre utiliser correctement DisplayMember et
ValueMember et SelectedValue dun comboBox
using System.Data.SqlClient;
namespace LiaisonCombobox
{
public partial class Form1 : Form
{
BENTALEB MOHAMED
Page 85
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 86
OFPPT TDI
TRAVAUX PRATIQUES
DataTable dt = new DataTable();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dt.Load(dr);
}
this.DataGridView1.DataSource = dt;
}
catch (Exception) { }
}
}
}
catch (SqlException)
{
}
}
}
}
BENTALEB MOHAMED
Page 87
OFPPT TDI
TRAVAUX PRATIQUES
TP N 29
Objectifs :
Dans cet atelier vous allez utiliser corectement un userControl
Proprits mthodes et vnements
1) Crer un nouveau projet
2) Ajouter un contrle utilisateur
BENTALEB MOHAMED
Page 88
OFPPT TDI
TRAVAUX PRATIQUES
MessageBox.Show("click sur " + this.Text2);
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("click sur " + this.Text3);
}
BENTALEB MOHAMED
Page 89
OFPPT TDI
TRAVAUX PRATIQUES
TP N 30
Objectifs :
Dans cet atelier vous allez utiliser corectement un userControl
Proprits mthodes et vnements
1) Crer un nouveau projet dans lequel vous ajouter un control utilisateur
BENTALEB MOHAMED
Page 90
OFPPT TDI
TRAVAUX PRATIQUES
[Category("Configuration"), Browsable(true),
Description("Le texte afficher pour le nom
d'utilisateur")]
public String LoginText
{
get
{
return this.lblLogin.Text;
}
set
{
this.lblLogin.Text = value;
}
}
[Category("Configuration"), Browsable(true),
Description("Le texte saisir par l'utilisateur")]
public String LoginValue
{
get
{
return this.textLogin.Text;
}
set
{
this.textLogin.Text = value;
}
}
[Category("Configuration"), Browsable(true),
Description("Le texte afficher pour le mot de passe")]
public String PasswordText
{
get
{
return this.lblPassword.Text;
}
set
{
this.lblPassword.Text = value;
}
}
[Category("Configuration"), Browsable(true),
Description("Le texte afficher pour le mot de passe")]
public String PasswordValue
{
get{ return this.textPassWord.Text; }
set
{
this.textPassWord.Text = value;
}
}
BENTALEB MOHAMED
Page 91
OFPPT TDI
TRAVAUX PRATIQUES
}
}
BENTALEB MOHAMED
Page 92
OFPPT TDI
TRAVAUX PRATIQUES
vnements
BENTALEB MOHAMED
Page 93
OFPPT TDI
TRAVAUX PRATIQUES
TP N 31
Objectifs :
Dans cet atelier vous allez utiliser corectement un userControl
Proprits mthodes et vnements
Crer le control utilisateur suivant :
namespace bas_donnees_user_control
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
static SqlConnection cnx = new SqlConnection("Data
Source=.;Database=GClient;Integrated Security=True");
SqlCommandBuilder build = new SqlCommandBuilder();
SqlDataAdapter da = new SqlDataAdapter("Select * from Client",
cnx);
public DataSet ds = new DataSet();
private void UserControl1_Load(object sender, EventArgs e)
{
build.DataAdapter = da;
da.Fill(ds);
da.FillSchema(ds, SchemaType.Source);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Rows[0].Selected = true;
}
BENTALEB MOHAMED
Page 94
OFPPT TDI
TRAVAUX PRATIQUES
int posi=0;
private void naviguer ()
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Selected)
{
dataGridView1.Rows[i].Selected = false;
}
}
dataGridView1.Rows[posi].Selected = true;
}
private void premier_Click(object sender, EventArgs e)
{
posi = 0;
naviguer();
}
private void prcdent_Click(object sender, EventArgs e)
{
try
{
posi--;
naviguer();
}
catch {}
}
private void Suivant_Click(object sender, EventArgs e)
{
try
{
posi++;
naviguer();
}
catch { }
}
private void dernier_Click(object sender, EventArgs e)
{
posi = ds.Tables[0].Rows.Count - 1;
naviguer();
}
}
}
BENTALEB MOHAMED
Page 95
OFPPT TDI
TRAVAUX PRATIQUES
TP N 32
Objectifs :
Dans cet atelier vous allez utiliser corectement un userControl
Proprits mthodes et vnements (voir Examen 2013 pour TP )
namespace EFF2013Q4
{
public partial class UCSession : UserControl
{
private string strCon;
private SqlConnection con = new SqlConnection();
private SqlDataAdapter daSession;
private SqlCommand cmd;
private DataSet ds = new DataSet();
public UCSession()
{
InitializeComponent();
strCon = Properties.Settings.Default.ConnexionString;
con.ConnectionString = strCon;
daSession = new SqlDataAdapter("select * from session", con);
daSession.FillSchema(ds, SchemaType.Source, "session");
daSession.Fill(ds, "session");
this.comboBox1.DataSource = ds.Tables["session"];
this.comboBox1.DisplayMember = "NumeroSession";
}
public event EventHandler boutonOkClick;
protected virtual void OnboutonOkClick(EventArgs e)
{
if (boutonOkClick != null)
{
boutonOkClick(this, e);
} }//fin mthode
BENTALEB MOHAMED
Page 96
OFPPT TDI
TRAVAUX PRATIQUES
string TextBoxText
return textBox1.Text; }
set { this.textBox1.Text = value; }
}
//Property
public string ComboText
{ get { return comboBox1.Text; }
set { this.comboBox1.Text = value; }
}
}
}
BENTALEB MOHAMED
Page 97
OFPPT TDI
TRAVAUX PRATIQUES
namespace EFF2013Q4
{
public partial class Form2 : Form
{
string strCon;
string requete;
SqlConnection con = new SqlConnection();
SqlDataAdapter da;
SqlCommand cmd = new SqlCommand();
DataSet ds = new DataSet();
public Form2()
{
InitializeComponent();
strCon = Properties.Settings.Default.ConnexionString;
con.ConnectionString = strCon;
cmd.Connection = con;
}
private void button1_Click(object sender, EventArgs e)
{
UCSession ucSession1 = new UCSession();
ucSession1.ComboText = textBox1.Text;
ucSession1.Calculer();
textBox2.Text = ucSession1.TextBoxText;
}
BENTALEB MOHAMED
Page 98
OFPPT TDI
TRAVAUX PRATIQUES
TP N 33
Objectifs :
Dans cet atelier
using System.Data.SqlClient;
namespace les_clients_Meme_pays
{
public partial class Form1 : Form
{
string chaine = Properties.Settings.Default.constr;
string a = Properties.Settings.Default.Machaine;
SqlConnection con =new SqlConnection ();
SqlDataAdapter daCombo;
DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
}
BENTALEB MOHAMED
Page 99
OFPPT TDI
TRAVAUX PRATIQUES
'+ContactName
comboBox1.DisplayMember = "Disp";
comboBox1.ValueMember = "CustomerID";
comboBox1.DataSource = ds.Tables["coustomers"];
}
BENTALEB MOHAMED
Page 100
OFPPT TDI
TRAVAUX PRATIQUES
TP N 34
Objectifs :
Dans cet atelier nous allons utiliser les objets le lespace de noms
System.Data.Common
BENTALEB MOHAMED
Page 101
OFPPT TDI
TRAVAUX PRATIQUES
con.Close();}
}
//Excution d'un Ordre qui renvoit une seule valeure
public Object ExecuteScalar(string commandtext ) {
DbConnection con
= null;
try{
con = getConnection();
DbCommand cmd
= createCommand(commandtext,
CommandType.Text);
cmd.Connection = con;
con.Open();
return cmd.ExecuteScalar();
}finally{
BENTALEB MOHAMED
Page 102
OFPPT TDI
TRAVAUX PRATIQUES
// if (con.State != ConnectionState.Closed) { con.Close();}
}
}
//crer un datareader
public DbDataReader getReader(string commandtext ) {
DbConnection con
= null;
DbCommand cmd ;
try{
con = getConnection();
cmd = createCommand(commandtext, CommandType.Text);
cmd.Connection = con;
con.Open();
} finally{
// if (con.State != ConnectionState.Closed ){ con.Close();}
}
return cmd.ExecuteReader();
}
//rcuprer une dataset
public DataSet getDataset(string tableName, string commandtext)
{
DbConnection con = null;
DbDataReader rd = null;
DataSet ds;
try
{
con = getConnection();
DbCommand cmd = createCommand(commandtext,
CommandType.Text);
cmd.Connection = con;
con.Open();
rd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
ds = new DataSet();
ds.Load(rd, LoadOption.PreserveChanges, tableName);
}
finally
{
// if (con.State != ConnectionState.Closed) { con.Close(); }
}
return ds;
}
}
}
Code du formulaire
using System.Data.Common;
namespace generique
{
public partial class Form1 : Form
{
DataAcces generique = DataAcces.getinstance();
public Form1()
{
BENTALEB MOHAMED
Page 103
OFPPT TDI
TRAVAUX PRATIQUES
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataSet ds = generique.getDataset("personne", "select * from personne");
DataGridView1.DataSource = ds.Tables["personne"];
}
private void ajouter_Click(object sender, EventArgs e)
{
generique.ExecuteNonQuery("insert into personne values (" +
TextBox1.Text + ",'" + TextBox2.Text + "','" + TextBox3.Text + "')");
Form1_Load(sender, e);
}
private void update_Click(object sender, EventArgs e)
{
generique.ExecuteNonQuery("update personne set matricule=" +
TextBox1.Text + ", nomp='" + TextBox2.Text + "', prenomp='" + TextBox3.Text
+ "' where matricule= " + TextBox1.Text);
Form1_Load(sender, e);
}
private void delete_Click(object sender, EventArgs e)
{
generique.ExecuteNonQuery("delete from personne where matricule
=" + TextBox1.Text);
Form1_Load(sender, e);
TextBox1.Clear();
TextBox2.Clear();
TextBox3.Clear();
}
private void NewRowIndex_Click(object sender, EventArgs e)
{
DataGridView1.Rows[DataGridView1.NewRowIndex].Cells[1].Value =
"Nbr Personnes";
DataGridView1.Rows[DataGridView1.NewRowIndex].Cells[2].Value =
generique.ExecuteScalar("select count(*) from personne");
}
private void Recherche_TextChanged(object sender, EventArgs e)
{
DataSet ds = new DataSet();
DbDataReader dr = generique.getReader("select * from personne
where nomp like '" + TextBox4.Text + "%'");
ds.Load(dr, LoadOption.PreserveChanges, "personne");
DataGridView1.DataSource = ds.Tables["personne"];
DataGridView1.Rows[0].Selected = true;
}
}
}
BENTALEB MOHAMED
Page 104
OFPPT TDI
TRAVAUX PRATIQUES
TP N 35
Objectifs :
Dans cet atelier nous allons utiliser les objets le lespace de noms
System.Data.Common
BENTALEB MOHAMED
Page 105
OFPPT TDI
private DbCommand cmd
// fin dclaration
TRAVAUX PRATIQUES
;
//Pattern Singleton"
static AdapterGeneric instance;
//constructeur doit etre priv
private AdapterGeneric() { }
//Rcuperation de l'instance "
public static AdapterGeneric getinstance(string comd = "")
{
instance = new AdapterGeneric();
//rcuprer la chaine de connexion
instance.ConStrCol = ConfigurationManager.ConnectionStrings;
//Rcuprer le nom du provider
instance.dbProvFact =
DbProviderFactories.GetFactory(instance.ConStrCol[1].ProviderName);
//creer le dataadapter
instance.da = instance.dbProvFact.CreateDataAdapter();
//integrer le commandbuilder
instance.getcommandbuilder(instance.da);
//si la commande est spcifi
if (comd != "") { instance.cmd = instance.CreateCommand(comd); }
return instance;
}
//Rcupration de la connexion"
private DbConnection CreateConnection() {
DbConnection con
= dbProvFact.CreateConnection();
con.ConnectionString = ConStrCol[1].ConnectionString;
return con;
}
// Rcupration de la commande"
public DbCommand CreateCommand(string commande ) {
DbConnection con
= CreateConnection();
cmd = con.CreateCommand();
cmd.CommandText = commande;
return cmd;
}
// #Region "la mthode Fill "
public void Fill( DataSet ds ){
da.SelectCommand = cmd;
da.Fill(ds);
}
//#End Region
//#Region "la mthode Update "
public void Update(DataSet ds
da.Update(ds);
}
//#End Region
BENTALEB MOHAMED
){
Page 106
OFPPT TDI
TRAVAUX PRATIQUES
Code du formulaire
namespace generique
{
public partial class Form2 : Form
{ AdapterGeneric da
= AdapterGeneric.getinstance();
DataSet ds = new DataSet();
public Form2()
{InitializeComponent();}
private void Ajouter_Click(object sender, EventArgs e)
{DataRow rw
= ds.Tables[0].NewRow();
rw[0] = TextBox1.Text;
rw[1] = TextBox2.Text;
rw[2] = TextBox3.Text;
ds.Tables[0].Rows.Add(rw);
da.Update(ds);}
private void Supprimer_Click(object sender, EventArgs e)
{ ds.Tables[0].Rows[DataGridView1.CurrentRow.Index].Delete();
da.Update(ds);}
private void modifier_Click(object sender, EventArgs e)
{ DataRow ligne =
ds.Tables[0].Rows[DataGridView1.CurrentRow.Index];
ligne.BeginEdit();
ligne[0] = this.TextBox1.Text;
ligne[1] = TextBox2.Text;
ligne[2] = TextBox3.Text;
ligne.EndEdit();
da.Update(ds);}
private void Form2_Load(object sender, EventArgs e)
{da.CreateCommand("select * from personne");
da.Fill(ds);
DataGridView1.DataSource = ds.Tables[0];}
private void DataGridView1_CellClick(object sender,
DataGridViewCellEventArgs e)
{
try{
DataGridView1.CurrentRow.Selected = true;
TextBox1.Text =
DataGridView1.CurrentRow.Cells[0].Value.ToString();
TextBox2.Text =
DataGridView1.CurrentRow.Cells[1].Value.ToString();
TextBox3.Text =
DataGridView1.CurrentRow.Cells[2].Value.ToString();
} catch (Exception ){
MessageBox.Show("Il s'agit d'une ligne vide");}}
}
}
BENTALEB MOHAMED
Page 107
OFPPT TDI
BENTALEB MOHAMED
TRAVAUX PRATIQUES
Page 108
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 1
LInstitut ISGI fait appel aux comptences des programmeurs pour informatiser le
processus de gestion de notes des stagiaires.
La base de donnes correspondante lapplication la structure suivante :
Table Module :
- Num_Mod : Le numro du module.
- Nom_Mod : Le nom du module.
Table Notes :
- Num_Sta : Le numro du stagiaire.
- Num_Mod : Le nom du module.
- Note : La note du module.
Table Stagiaire :
- Num_Sta : Le numro du stagiaire.
- Nom_Sta : Le nom du stagiaire.
- Pr_Sta : Le prnom du stagiaire.
- Date_Sta : La date de naissance du stagiaire.
1. Crer la base de donnes sous SQL SERVER
Au lancement de lapplication il prsente une feuille de dmarrage avec des menus et sous
menus.
2. Le choix du sous menu Gestion des stagiaires du menu Gestion permet dafficher
une feuille comme ci-dessous :
BENTALEB MOHAMED
Page 109
OFPPT TDI
TRAVAUX PRATIQUES
Programmer :
Nouveau stagiaire
Enregistrer stagiaire
Modifier stagiaire
Supprimer stagiaire
Boutons de navigation
Rechercher stagiaire par numro
Rechercher stagiaire par nom et prnom
le bouton Moyenne permet dafficher une boite de dialogue affichant la moyenne du
stagiaire.
3. Le sous menu Gestion des notes du menu Gestion permet dafficher une feuille
comme ci-dessous :
Le choix dun stagiaire permet dafficher dans une liste les modules passs par ce stagiaire
avec les notes et le moyenne gnrale.
Lorsquon choisie un module la note de ce module doit tre affich.
Lorsquon clique sur une ligne de la liste ses informations doivent tre affiches.
BENTALEB MOHAMED
Page 110
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 111
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 2
On veut dvelopper une application qui gre les rencontres des tournois de Tennis dune
saison donne.
Chaque joueur a un nom et un sexe. Deux joueurs peuvent former une quipe. Un tournoi est
identifi par son nom et se droule dans un pays donn une date prvue. la fin dun
tournoi, un joueur ou une quipe participant ce tournoi obtient un score qui reprsente le
nombre de tours passs dans le tournoi (1 er tour vaut 1 point, 2 me tour vaut 2 points, etc.).
On attribue chaque tournoi un coefficient selon son importance.
Le score final dun joueur (ou dune quipe) est obtenu de la manire suivante :
n
score coefficient
Pour les n tournois de lanne. Les joueurs (ou quipes) sont classs par ordre dcroissant de
leur score final.
Pour assurer cette gestion, le schma relationnel suivant a t tabli :
Joueur (NoJoueur, NomJoueur, Sexe, NoEquipe)
Equipe (NoEquipe)
Tournoi (NoTournoi, NomTournoi, Date, Coef, Pays)
Jeu_Simple (NoJoueur, NoTournoi, Score_Joueur)
Jeu_Double (NoEquipe, NoTournoi, Score_Equipe)
TRAVAIL FAIRE
I Cration de la base de donnes
1. Crer la base de donnes sous SQL SERVER
2. Crer trois enregistrements par table
II Application
1. Crer une application MDI avec menu qui permet dexcuter les traitements suivants :
2. Mise jour de la table Joueur. Prvoir les boutons : Ajouter, Modifier, Enregistrer,
Supprimer, Fermer et des boutons de dplacement entre les enregistrements.
3. Mise jour de la table Tournoi. Prvoir les boutons : Ajouter, Modifier, Enregistrer,
Supprimer, Fermer et des boutons de dplacement entre les enregistrements.
4. Former des quipes constitues de deux joueurs ; lutilisateur saisi le n dquipe et
slectionne les deux joueurs dans deux listes de choix
BENTALEB MOHAMED
Page 112
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 3
VARCHAR(10)
VARCHAR(20)
: nom de la salle
: nombre de postes de travail dans la salle
: code interne associ au poste (ex : p1)
: nom (ou alias) donn au poste
VARCHAR(20)
INT
VARCHAR(7)
VARCHAR(20)
BENTALEB MOHAMED
Page 113
OFPPT TDI
TRAVAUX PRATIQUES
AD
: dernier groupe de chiffre ip
TYPE_P
: type du poste (ex : UNIX, TX,....)
DATE_INS
: date dinstallation du logiciel sur le poste
N_LOG
: numro interne du logiciel
NOM_L
: nom du logiciel
DATE_ACH
: date dachat du logiciel
VERSION
: version du logiciel (ex : 8.0)
TYPE_L
: type du logiciel (ex : UNIX, PCWS...)
ICration de la base de donnes:
VARCHAR(2)
VARCHAR(6)
DATETIME
VARCHAR(5)
VARCHAR(20)
DATETIME
VARCHAR(7)
VARCHAR(6)
Client Serveur
a. Concevoir un formulaire qui permet denregistrer les Salles et de stocker les
informations dans la base de donnes.
i. Le programme doit vrifier lexistence dun enregistrement et renvoyer
un message utilisateur dans le cas contraire.
ii. Un combo box qui charge automatiquement les Segements.
b. Concevoir un deuxime formulaire qui permet la mise jour des
enregistrements et faire les programmes correspondants (Suppression,
Modification).
c. Concevoir un troisime formulaire qui permet dafficher les informations des
Postes par Salle.
d. Concevoir un quatrime formulaire qui permet dafficher les informations des
logiciels installs sur un poste choisi dans le troisime formulaire.
e. Concevoir un cinquime formulaire qui sert de menu pour appeler les diffrents
formulaires.
f. Crer un tat qui liste toutes les Salles et leurs Postes.
g. Crer un tat qui liste tous les postes et les logiciels qui y sont installs pour
une salle bien dfinie.
BENTALEB MOHAMED
Page 114
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 4
Page 115
OFPPT TDI
TRAVAUX PRATIQUES
3. Mise jour de la table PISCINE. Prvoir les boutons : Ajouter, Modifier, Enregistrer,
Supprimer, Quitter et des boutons de dplacement entre les enregistrements.
4. Enregistrer un entranement.
Tous les champs sont requis, le NumPiscine est choisir dans un combobox
5. Enregistrer un Plan_entranement. Le NumEntrainement,et le NumLicence sont
choisir dans deux combobox, toutes les donnes de lathlte choisi et lentranement
choisi sont affiches.
La distanceParcourue est toujours infrieure la DistanceAParcourir sinon envoyer un
message derreur
6. On veut tablir la liste des entranements suivis (date, heure dbut, heure fin, nom
piscine, distance parcourir, distance parcourue) par un athlte dont on choisi le n de
licence dans un combobox; cette liste est trier par ordre chronologique inverse
(l'entranement le plus rcent figurant en premier).
7. Imprimer la liste des Athltes trie par catgorie
8. Imprimer le plan dentranement dun athlte donn, la recherche se fait par le
NumLicence
9. utiliser dans toutes les procdures la gestion des exceptions pour intercepter les erreurs
10. Crer un programme dinstallation de votre application
Le programme dinstallation doit crer la base de donnes si elle nexiste pas, aprs avoir
demand le nom du serveur, le compte utilisateur SQL Server et le mot de passe
BENTALEB MOHAMED
Page 116
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 5
Il sagit de dvelopper une application de gestion dune bibliothque publique de prt des
ouvrages. Toute personne a le droit de sadhrer la bibliothque et bnficier de ses
services. On distingue plusieurs types dadhrents : des tudiants, des fonctionnaires . etc.
La bibliothque possde plusieurs types douvrages, on retrouve par exemple des livres, des
revues, des romans, des cassettes vido etc. Chaque adhrent na le droit demprunter quun
seul article la fois. Aprs ltude dtaille du systme dinformation de la mdiathque nous
avons pu dgager le schma relationnel suivant :
TABLE : ADHERENTS
CHAMPS
DESCRIPTION
CODADH Code de ladhrent
NOMADH Nom de ladhrent
ADRADH Adresse de ladhrent
TELADH
Tlphone de ladhrent
CINADH
C.I.N de ladhrent
DNADH
Date de naissance de ladhrent
TYPADH
Type de ladhrent
TYPE
Numrique
chane
chane
chane
chane
date
chane
TABLE : OUVRAGES
CHAMPS
DESCRIPTION
TYPE
CODOUV Code de louvrage
Numrique
TITOUV
Titre de louvrage
chane
NOMAUT Nom de lauteur
chane
TYPOUV Type ouvrage soit livre, roman
chane
RESOUV Rsume de louvrage
chane
THEME
Thme de louvrage
chane
NOMCOL Nom de la collection de
chane
louvrage
NOMEDIT Nom de lditeur de louvrage
chane
DATEDIT Date ddition de louvrage
date
DATACH Date dachat
date
NBPAGE Nombre de pages
Numrique
TABLE : EMPRUNTS
CHAMPS
NUMEMP
CODADH
CODOUV
DATEMP
DATRET
DESCRIPTION
TYPE
Numro demprunt
Numrique
Code de ladhrent
Numrique
Code
de
louvrage Numrique
emprunt
Date demprunt
Date
Date de retour
Date
BENTALEB MOHAMED
Page 117
OFPPT TDI
TRAVAUX PRATIQUES
1) La base de donnes
Crer la base de donnes sous SQL SERVER avec lensemble de ses tables selon le
descriptif prsent ci-dessus.
2) Gestion des adhrents :
2.1) Le code adhrent doit tre automatiquement incrmenter.
2.2) Crer des boutons de navigation entre les enregistrements.
2.3) Ajouter sur clique du bouton de commande Ajouter un nouvel adhrent tout en vrifiant
sil na pas t dj ajout. Choisir le champs qui convient pour cette vrification.
2.4) Cette interface doit permettre de filtrer les adhrents dont le nom commence par une
lettre choisie
Page 118
OFPPT TDI
TRAVAUX PRATIQUES
RABAT
le : ././
Amis Livres
Code
Nom
C.I.N
Date de
naissance
6.2) Prparer un tat avec la liste des ouvrages emprunts classs par date selon la
reprsentation suivante :
RABAT , le : ././
Amis Livres
LISTE DES OUVRAGES EMPRUNTES
Code
Titre
Editeur
Nom Adhrent
Date
Emprunt
BENTALEB MOHAMED
Page 119
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 6
Etude de cas :
On dsire informatiser la gestion des rservations et des sjours pour lhtel Ibis :
Pour les sjours, on enregistre la date dentre, le type de sjour (Journalier, Semaine, Weekend) et la dure
du sjour. Pour un sjour Semaine, la dure est 7j., pour type Weekend la dure est 3j., et pour le type
Journalier la dure est le nombre de jours souhaits par le client.
Le schma relationnel de la base de donnes est le suivant :
Client (IdClient, NomClient, AdresseClient, TelClient)
Rservation (CodeReservation, IdClient, Date, PensionComplete)
Sejour (NumSejour, CodeReservation, DateSejour, TypeSejour, DureeSejour)
ReservationAnnulee (CodeReservation, IdClient, DateAnnulation)
Travail faire :
1) Cration de la BD
a. Crer la base de donnes Sous SQL SERVER en respectant le schma relationnel ci-dessus, les
principales caractristiques des champs doivent tre dduites.
Raliser une interface utilisateur conviviale et ergonomique pour
rservations.
BENTALEB MOHAMED
Page 120
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 121
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 7
Etude de cas :
Une cole de formation utilise pour la gestion des notes des stagiaires, la base de donnes
GESNOTES sous Sql server et les traitements sous Visual studio .net
La base de donnes :
-Tables Stagiaires (NumSt, NomSt, PrenSt, NomFilire)
-Tables Modules (CodeModule, LibelleModule, masseHoraire)
-Tables Notation (NumSt, CodeModule, note)
1- crer la base de donnes sur le serveur Sql server 2000 ;
2- crer une feuille MDI pour laccs aux feuilles qui suivent ;
3- raliser le formulaire de gestion des stagiaires : ajout, modification, suppression ;
4- raliser le formulaire de gestion des modules : ajout, modification, suppression ;
5- raliser le formulaire pour lajout dune notation : le codemodule et le numSt doivent
tre choisis dans des contrles comboBox ;
6- raliser le formulaire consultation des stagiaires permettant dafficher la liste des
stagiaires ; il contient une grille, un bouton filtrer et un cadre (groupBox).
-Le cadre contient trois boutons doptions (Tous, Nom stagiaire, nom filire) et une
zone de texte
-Le bouton Filtrer permet dappliquer les filtres suivants la grille ;
-La grille est filtre selon le texte saisi dans la zone de texte et selon le choix dans les
boutons doptions :
*Si on slectionne le bouton doption nom stagiaire et on tape dans la zone de texte
F , par exemple, alors la grille affiche uniquement les stagiaires de nom commenant
par F
* Si on slectionne le bouton doption nom filire et on tape dans la zone
de texte TCE alors la grille affiche uniquement les stagiaires de la filire
TCE
*Pour afficher tous les stagiaire on choisi le bouton Tous.
Dtacher la base de donnes ; fermer toutes les applications et compresser votre dossier de
BENTALEB MOHAMED
Page 122
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 8
Etude de cas :
On se propose de grer les missions dun organisme public, lanalyse a abouti au modle
relationnel suivant :
Vehicule (ImmatVehicule, totalkm)
Mission (ImmatVehicule #, datemission, km, codeAgent#, numChantier#)
Agent (codeAgent, nomAgent)
Transporter (codeAgent #, (ImmatVehicule, datemission)#)
Chantier (numChantier, adresse)
Pour assurer cette gestion, le schma relationnel suivant a t tabli :
TRAVAIL FAIRE
I Cration de la base de donnes
3. Crer la base de donnes.
4. Crer trois enregistrements par table
II Application
13. Crer une application MDI avec menu qui permet dexcuter
les traitements suivants :
14. Crer un formulaire de mise jour de la table Vehicule. Prvoir les boutons : Ajouter,
Modifier, Enregistrer, Supprimer, Fermer et des boutons de dplacement entre les
enregistrements.
BENTALEB MOHAMED
Page 123
OFPPT TDI
TRAVAUX PRATIQUES
15. Mise jour de la table Mission. Prvoir les boutons : Ajouter, Modifier, Enregistrer,
Supprimer, Fermer et des boutons de dplacement entre les enregistrements. (chaque
cl trangre sera choisie partir dune liste modifiable)
16. Mise jour de la table type Transporter. Prvoir les boutons : Ajouter,
Modifier, Enregistrer, Supprimer, Fermer et des boutons de dplacement entre les
enregistrements. (chaque cl trangre sera choisie partir dune liste modifiable)
17. Crer un formulaire qui affiche, pour un Vehicule choisis dans
un combo box, la liste des Transports auxquels il a t utilis.
18. Crer un formulaire qui affiche, pour un Agent choisis dans
un combo box, la liste des missions quil a effectues.
19. Imprimer la liste des missions par agents ainsi que le nombre
de missions de chaque Agent
Imprimer la liste des missions entre deux dates donnes
BENTALEB MOHAMED
Page 124
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 9
Etude de cas :
Une socit compte dvelopper une application de gestion de son parc vhicule ;
elle consiste grer les vhicules, les conducteurs, les diffrents entretiens,
lassurance, suivre les dpenses qui sont spcifiques un vhicule prcis pour
dterminer sa rentabilit, lhistorique des pannes et des accidents concernant un
vhicule. Lapplication permet aussi de dterminer les vhicules dont lassurance est
sur le point dexpirer. Lapplication utilise la base de donnes base sur le modle
suivant :
N.B. Les champs marqus en gras et souligns reprsentent les cls primaires
des tables et les champs marqus par # reprsentent les cls trangres.
Vehicule (immat, marque, modele, puissance, carburant, dateAchat,
compteur, #idconducteur)
Conducteur (idconducteur, nomC, prenC, dateN, pass)
HistoConducteur (idHC, #immat, #idconducteur, dateDebut, dateFin)
AssVehicule (idAss, nomAssureur, dateAss, dateExpiration, #immat, montant)
Panne (idPanne, datePanne, dateReprise,descPanne, kilometrage, # immat)
Accident (idAccident, dateAccident, note, # immat)
BENTALEB MOHAMED
Page 125
OFPPT TDI
TRAVAUX PRATIQUES
Type
Alphanumrique
marque
modele
puissance
carburant
Alphabtique
Alphanumrique
Entier
Alphabtique
dateAchat
compteur
Date
Entier
#idConducteur
Entier
Colonne
idConducteur
nomC
prenC
dateN
Table Conducteur
Type
Entier
Alphabtique
Alphabtique
Date
pass
Alphanumrique
Signification
Ndimmatriculation du
vhicule
Marque du vhicule
Modle du vhicule
Puissance du vhicule
Carburant du
vhicule :Essence, Diesel
Date achat du vhicule
La valeur actuelle du
compteur du vhicule en km
Conducteur actuel du
vhicule
Signification
Identifiant du conducteur
Nom du conducteur
Prnom du conducteur
Date de naissance du
conducteur
Mot de passe du conducteur
dateFin
Table HistoConducteur
Type
Signification
Entier
Identifiant de lhistorique
des conducteurs du
vhicule
Alphanumrique
Nimmatriculation du
vhicule
Entier
Identifiant du conducteur
Date
Date dbut conduite
vhicule
Date
Date fin conduite vhicule
Colonne
Table AssVehicule
Type
Colonne
idHC
immat
idConducteur
dateDebut
BENTALEB MOHAMED
Signification
Page 126
OFPPT TDI
TRAVAUX PRATIQUES
idAss
nomAssureur
dateAss
Entier
Alphabtique
Date
dateExpiration
Date
immat
Alphanumrique
montant
Rel
Identifiant de lassurance
Nom de lassureur
Date de lassurance du
vhicule
Date dexpiration de
lassurance du vhicule
Nimmatriculation du
vhicule
Montant de lassurance
Table Accident
Colonne
idAccident
dateAccident
note
immat
Type
Entier
Alphabtique
Alphabtique
Alphanumrique
Signification
Identifiant de laccident
Date de laccident
Description de laccident
Nimmatriculation du
vhicule
Table Panne
Colonne
idPanne
descPanne
datePanne
dateReprise
Type
Entier
Alphabtique
Date
Date
Kilometrage
Entier
immat
Entier
Signification
Identifiant de la panne
Description de la panne
Date de la panne
Date de reprise aprs
panne
Valeur du compteur du
vhicule au moment de
la panne
Nimmatriculation du
vhicule
BENTALEB MOHAMED
Page 127
OFPPT TDI
TRAVAUX PRATIQUES
4) Crer une procdure stocke qui affiche, pour un vhicule donn comme
paramtre, la liste des pannes qui sont produites durant lanne 2011. Prvoir
dans le jeu dessai, des lignes dans la table Panne avec des dates comprises
dans lanne 2011. (1 pt)
5) Crer un trigger qui refuse lajout dune panne avec une valeur de la colonne
kilometrage infrieure la valeur de la colonne compteur de la table
Vehicule. (1 pt)
6) Pour tenir jour lhistorique des conducteurs dun vhicule, crer un trigger,
qui chaque modification du conducteur dans la table Vehicule, ajoute une
ligne la table HistoConducteur avec des donnes correspondantes au
vhicule et au nouveau conducteur du vhicule ; la colonne dateDebut prend
la date systme et la colonne dateFin reste nulle. (1 pt)
Dossier 2 (7 pts)
Crer une application client/serveur qui se base sur la base de donnes du
dossier 1 permettant dassurer les fonctionnalits suivantes :
1. Crer un menu pour cette application permettant de raliser les oprations
demandes par les questions qui suivent. (0,25 pt)
2. Crer un formulaire de mise jour des pannes avec les lments suivants :
(1,25 pt)
Des boutons de navigation.
Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
Le vhicule est choisi dans une liste droulante.
3. a- Crer un formulaire contenant une grille qui affiche lhistorique des
conducteurs dun vhicule donn; la grille affiche le nom et le prnom des
conducteurs, la date dbut et la date fin de conduite du vhicule. Le vhicule
est choisi dans une liste droulante. (1 pt)
b- Ajouter ct de chaque conducteur une case cocher. Ajouter en bas de
la grille, un bouton de commande qui permet de supprimer le ou les
conducteurs slectionns avec tous les enregistrements connexes. (1 pt)
4. Crer un formulaire permettant dafficher la liste des vhicules ayant fait des
accidents entre deux dates donnes ; les dates doivent tre saisies dans deux
zones de textes. (1 pt)
5. Crer un tat graphique de type secteur qui imprime le nombre de vhicules
par marque du parc. (1 pt)
6. Crer un tat qui imprime lensemble des vhicules avec les informations :
nom de la marque, le modle, le n du matricule, ainsi quun champ qui
donne le rendement du vhicule ; le rendement dun vhicule est
calcul comme suit : le nombre total des jours de pannes du vhicule divis
par le nombre total de jours couls depuis lachat du vhicule. (1,5 pt)
BENTALEB MOHAMED
Page 128
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 10
Etude de cas :
Un mdecin dsire informatiser son cabinet mdical, en particulier la gestion des
consultations et prescription de mdicaments. On utilise pour cela la base de donnes
GESTMED sous Sql server et les traitements sous Visual studio .net :
-Table Patients (codeP, nomP, adresse)
-Table Medicaments (ref, libelle, prixUnitaire)
-Table Consultation (numConsul, dateConsul, codeP)
-Table Prescription (numConsul, ref, NombreFois)
NombreFois est le nombre de prise par jour du mdicament
1- crer la base de donnes sur le serveur Sql server 2000 ; (3pts)
2- crer une feuille MDI pour laccs aux feuilles des questions qui suivent ; (2pts)
3- raliser le formulaire de gestion des patients : ajout, modification, suppression ; (3pts)
4- raliser le formulaire pour lajout dune prescription : le numConsul et le champs Ref
doivent tre choisis dans des contrles comboBox ; (3pts)
5- raliser une form avec une grille qui affiche toutes les prescriptions de mdicaments
dune consultation donne (n de consultation choisi dans un comboBox) ; (3pts)
6- raliser un tat qui imprime lordonnance (les prescriptions de mdicaments) pour un
patient correspondant la dernire consultation effectues (le code patient est choisi
dans un comboBox) ; (3pts)
7- raliser un tat semblable ltat de la question 6, mais on ajoutant le total payer
pour cette ordonnance ; (3pts)
8- Dtacher la base de donnes ; fermer toutes les applications et compresser votre
dossier de travail avec un outil de compression(winzip, winrar)
BENTALEB MOHAMED
Page 129
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 12
Enonc :
Une entreprise fait la location de matriel ses clients ; la location porte sur une dure
exprime en jours ; toute location donne lieu un contrat entre lentreprise et le client. On
utilise pour cela la base de donnes LOCATION sous Sql server et les traitements sous
Visual studio .net :
-Table Clients (codeCl, nomCl, adresse)
-Table Materiels (ref, designation, prixLocation)
-Table Contrats (numContrat, dateContrat, codeCl)
-Table LigneContrat (numContrat, ref, QuantitLoue)
1- crer la base de donnes sur le serveur Sql server ; (3pts)
2- crer une feuille MDI pour laccs aux feuilles qui suivent ; (2pts)
3- raliser le formulaire de gestion des clients : ajout, modification, suppression ; (3pts)
4- raliser le formulaire pour lajout dune ligne contrat : le numContrat et le champs Ref
doivent tre choisis dans des contrles comboBox ; (3pts)
5- ajouter une grille qui affiche tous les enregistrements de la table ligneContrat ; (3pts)
6- ajouter, en bas de la grille, une zone de texte qui calcule la somme du champ
QuantitLoue ; (3pts)
7- raliser un tat qui imprime les contrats effectus durant lanne 2005 regroups par
client ; (3pts)
8- Dtacher la base de donnes ; fermer toutes les applications et compresser votre
dossier de travail avec un outil de compression (winzip, winrar)
Etude de cas 13
Enonc :
Soit le modle relationnel suivant :
BENTALEB MOHAMED
Page 130
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 131
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 14
Enonc :
Le grant dune socit de commercialisation des pices lectroniques souhaite dvelopper
une application pour grer les ventes, pour cela, il a fait appel un dveloppeur en free lance
pour concevoir et mettre en uvre ce nouveau systme.
Le Dveloppeur a propos le schma relationnel suivant :
Page 132
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 15
Enonc :
Le centre cinmatographique Marocain souhaite grer la diffusion des films dans les salles
des cinmas de notre pays. Le Directeur du centre a fait appel un dveloppeur en free lance
pour concevoir et mettre en uvre le systme.
Le dveloppeur a propos le modle relationnel suivant :
Page 133
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 16
Enonc :
BENTALEB MOHAMED
Page 134
OFPPT TDI
TRAVAUX PRATIQUES
Soit dvelopper une application pour la gestion des notes des tudiants
(1 Pts)
Etude de cas 17
BENTALEB MOHAMED
Page 135
OFPPT TDI
TRAVAUX PRATIQUES
Enonc :
Le complexe de formation CFPX souhaite informatiser la gestion de son parc PC, il dispose
de plusieurs centres de formation.
Le directeur du complexe fait appel vous pour dvelopper ce systme, pour cela on vous
propose le modle relationnel suivant :
CENTRES( IdCentre, Titre, Capacite_accueil, dateCreation)
SALLE(CodeSalle, NomSalle, IdCentre)
ORDINATEURS(Numordinateur, Date achat, Capacit Ram, Capacit disque dur, vitesse,
NumSalle, NumCentre)
LOGICIELS(RefLogiciel, Nom logiciel, Version, Rle, NumOrdinateur, Licence)
Travail faire :
1. Crer la base de donnes sous SQL SERVER (2 Pts)
2. Faire quelques enregistrements pour le test
3. Crer une interface de mise jour des Centre (2 Pts)
a. Ajout (le contrle de saisie est obligatoire et confirmation dajout)
b. Modification
c. Suppression
d. Boutons de navigation
4. Crer une interface de mise jour des Salle (2 Pts)
5. Crer une interface de mise jour des Ordinateurs et Logiciels (2 Pts)
6. Crer une feuille de recherche :
a. Recherche Ordinateur (Afficher les informations relatives un ordinateur)
(2 Pts)
b. Recherche Logiciel :
i. Par numro ou nom de logiciel (2 Pts)
7. Crer un tat pour afficher linventaire pour chaque centre et afficher le nombre total
des ordinateurs (3 Pts)
8. Crer un tat permettant de lister les logiciels installs pour un ordinateur donn (2Pts)
BENTALEB MOHAMED
Page 136
OFPPT TDI
TRAVAUX PRATIQUES
9. Crer un tat pour lister les ordinateurs de chaque salle de formation (3Pts)
Etude de cas 18
Enonc :
Soit le modle relationnel suivant :
expert
ExpertId
nomExpert
prenomExpert
Tel
accomplir
numrapport
NumExpertise
ExpertId
DateDepot
expertise
NumExpertise
Datejugement
Frais
DossierId
Fax
Adresse
Email
GSM
designer
jugeid
expertid
DossierID
juge
datedesignation
dossier
DossierId
jugeid
Designation
nomjuge
dateD_Audiance
prenomjuge
BENTALEB MOHAMED
Page 137
OFPPT TDI
TRAVAUX PRATIQUES
Travail demand :
1. Crer la base de donnes (2points)
2. Ajouter trois enregistrements pour chaque table (2points)
3. Crer un menu pour cette application (2points)
4. Crer une classe Expert contenant toutes les proprits de cette classe (1point)
5. Crer une classe GestionExpert ayant les mthodes publiques suivantes : (2points)
a. Public Sub ajouter(ByVal obj As Expert)
b. Public Sub modifier(ByVal obj As Expert)
c. Public Sub supprimer(ByVal obj As Expert)
d. Public Function rechercher(ByVal num As Integer) As Expert
e. Dfinir les attributs et les mthodes
6.
7. Crer un formulaire permettant la mise jour de la table Accomplir. Toutes les cls
trangres doivent tre remplies partir dune liste (2points)
8. Crer un formulaire qui affiche pour un expert donn la liste des dossiers pour lesquels
il a accompli une expertise (1point)
9. Crer un formulaire contenant une grille et affichant tous les dossiers. A ct de
chaque dossier une case cocher qui va marquer les dossiers supprimer. Un bouton
supprimer permettra de supprimer tous les dossiers cochs (1point)
10. Crer un tat affichant la liste les dossiers (1.5points)
11. Crer un tat affichant les experts dsigns entre deux dates (1.5points)
12. Dployer votre application. (2points)
BENTALEB MOHAMED
Page 138
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 19
Enonc :
Une comptition culturelle est organise entre tablissements. Un stagiaire va passer des
preuves et chaque preuve on lui affectera une note de manire pouvoir calculer la fin
sa moyenne.
Sur un serveur SQL Server ServeurCentral, nous avons cr la base de donnes Comptition
qui a la structure suivante :
o
Stagiaire (NumSta, NomSta, PrnomSta, DateNaissanceSta, NumFil, NumEta)
o
Etablissement (NumEta, NomEta, NumReg)
o
Rgion (Numreg, NomReg)
o
Epreuve (NumEpr, NomEpr, CoefficientEpr,DateEpreuve)
o
Rsultat (NumSta, NumEpr, Note)
o
Filire (NumFil, NomFil)
Travail demand
1. Crer la base de donnes (2Pts)
2. Ajouter trois enregistrements pour chaque table (1Pt)
3. Crer un formulaire pour mettre jour la table Etablissement. (2Pts)
Prvoir les boutons : Ajouter, Modifier, Enregistrer, Supprimer, Fermer et des boutons de
navigation entre les enregistrements.
4. Crer une classe Stagiaire contenant toutes les proprits de cette classe (1Pt)
5. Crer une classe DAOStagiaire ayant les mthodes publiques suivantes : (2Pts)
Stagiaire)
modifier(ByVal obj As Stagiaire)
supprimer(ByVal obj As Stagiaire)
6. Crer un formulaire pour mettre jour la table Stagiaire en utilisant les deux classes
prcdemment Cres : Stagiaire et DAOStagiaire. (2 Pts)
Prvoir les boutons : Ajouter, Modifier, Enregistrer, Supprimer, Fermer .
BENTALEB MOHAMED
Page 139
OFPPT TDI
TRAVAUX PRATIQUES
7. Crer un formulaire qui affiche la table Epreuve dans une grille et ajouter un bouton qui
supprime toutes les preuves slectionnes. (2 Pts)
8. Mise jour de la table Rsultat. Prvoir les boutons : Ajouter, Modifier et Enregistrer.
(Utiliser un objet DatagridView pour effectuer cette opration) (2Pt)
9. Crer une feuille de recherche qui affiche :
9.1. Pour une Rgion donne tous les tablissements de cette dernire. (1Pt)
9.2. Pour une filire donne, tous les stagiaires qui ont une Moyenne suprieure 13.
(1Pt)
10. Crer un formulaire contenant une grille qui affiche la liste des stagiaires qui nont pas eu
la moyenne. (1Pt)
11. Crer ltat qui affiche pour une Filire donne les Stagiaire de cette dernire (1Pt)
12. Crer une feuille MDI avec menu un menu de navigation (1Pt)
13. Crer le dploiement de votre application (1Pt)
Etude de cas 20
Enonc :
Un Organisme de formation dsire grer les stages de formation de ces stagiaires, il a fait
appel un dveloppeur en free lance pour concevoir et mettre en uvre ce nouveau systme.
Le Dveloppeur a propos le schma relationnel suivant :
BENTALEB MOHAMED
Page 140
OFPPT TDI
BENTALEB MOHAMED
TRAVAUX PRATIQUES
Page 141
OFPPT TDI
TRAVAUX PRATIQUES
Travail faire :
1. Crer la base de donnes sous SQL SERVER (4 Pts)
2. Faire quelques enregistrements pour le test
3. Crer une interface de mise jour des Stagiaires (2 Pts)
a. Ajout (le contrle de saisie est obligatoire et confirmation dajout)
b. Modification
c. Suppression
d. Boutons de navigation
4. Crer une interface de mise jour des Professeurs permettant de lister tous les
enregistrements de la tables professeur dans une grille
linterface doit contenir galement un bouton Filter qui permet dafficher et de
masquer un cadre qui contient trois boutons doptions : Tous, Commenant Par, Se
terminant Par et une zone de texte qui contient le critre sur le champ NomProf
(2 Pts)
5. Crer une interface qui affiche, pour un stage donn, les modules de ce stage (2Pts)
6. Crer une feuille de recherche :
a. Recherche Prestation :
i. Avec le NumPrestation (Afficher les informations de la Prestation)
(2
Pts)
ii. Par date dbut (Afficher la liste des Prestations enregistres cette
date) (2 Pts)
iii. Entre deux dates de dbut (Afficher la liste des Prestations enregistres
entre deux dates) (2 Pts)
7. Crer un tat pour imprimer la liste les Prestations (2 Pts)
8. Crer un tat permettant de lister les Prestations entre deux dates (2 Pts)
BENTALEB MOHAMED
Page 142
OFPPT TDI
TRAVAUX PRATIQUES
Etude de cas 20
Enonc :
Les lections lgislatives au Maroc se droulent selon un dcoupage en
circonscriptions lectorales. Une province ou prfecture contient une ou plusieurs
circonscriptions lectorales ; une rgion contient plusieurs provinces et/ ou
prfectures. Un candidat appartient un seul parti politique et reprsente une seule
circonscription lectorale. Les lecteurs votent dans la circonscription lectorale o
ils sont inscrits. Une application de gestion des lections lgislatives utilise la base
de donnes suivante :
N.B. Les champs marqus en gras et souligns reprsentent les cls primaires
des tables et les champs marqus par # reprsentent les cls trangres.
Region (idRegion, nomRegion)
ProvincePrefecture (idProvPref, nomProvPref, #idRegion)
Circonscription (idCirconscription, nomCir, NombreSiege, #idProvPref)
Parti (idParti, nomParti)
Candidat (CINcandidat, nomCandidat, prenomCandidat, DateNC,
adrCandidat, #idCirconscription,# idParti)
Electeur (CINelecteur, nomElecteur, prenElecteur, dateNE, adrElecteur,#
idCirconscription)
BENTALEB MOHAMED
Page 143
OFPPT TDI
TRAVAUX PRATIQUES
Type
Entier
nomRegion
Alphabtique
Colonne
idProvPref
nomProvPref
idRegion
Colonne
idCirconscription
nomCir
NombreSiege
idProvPref
Colonne
idParti
nomParti
Signification
Identifiant (code) dune
rgion
Nom de la rgion
Table ProvincePrefecture
Type
Signification
Entier
Identifiant de la
province/prefecture
Alphabtique
Nom de la
province/prefecture
Entier
Identifiant de la rgion
Table Circonscription
Type
Signification
Entier
Identifiant de la
circonscription
Alphabtique
Nom de la circonscription
Entier
Nombre de siges affects
la circonscription
Entier
Identifiant de la
province/prefecture
Table Parti
Type
Entier
Alphabtique
Signification
Identifiant du Parti
Nom du Parti
Table Candidat
Colonne
CINcandidat
Type
Alphanumrique
nomCandidat
prenomCandidat
DateNC
Alphabtique
Alphabtique
Date
adrCandidat
idCirconscription
Alphanumrique
Entier
idParti
Entier
BENTALEB MOHAMED
Signification
Ncarte nationale du
candidat
Nom du candidat
Prnom du candidat
Date de naissance du
candidat
Adresse du candidat
Identifiant de la
circonscription
Identifiant du Parti
Page 144
OFPPT TDI
TRAVAUX PRATIQUES
Table Electeur
Colonne
CINelecteur
Type
Alphanumrique
nomElecteur
prenElecteur
dateNE
Alphabtique
Alphabtique
Date
adrElecteur
idCirconscription
Alphanumrique
Entier
Signification
N de la carte nationale
de llecteur
Nom de llecteur
Prnom de llecteur
Date de naissance de
llecteur
Adresse de llecteur
Identifiant de la
circonscription
Travail faire :
Enregistrer sur un fichier texte qui porte le nom dossier1.txt les requtes SQL qui
rpondent aux questions suivantes.
Donner les requtes qui permettent de :
7) Crer la base de donnes et remplir les tables par un jeu dessai.
(1 pt)
8) Crer une procdure stocke qui affiche la liste des candidats qui
reprsentent une circonscription donne comme paramtre et appartenant
un parti donn comme paramtre. (1 pt) (Le code de la procdure doit tre
sauvegard dans le fichier dossier1.txt)
9) Crer une procdure stocke qui affiche le nombre dlecteurs inscrits dans
chaque province dune rgion donne (idRegion transmis en paramtre). (1
pt)
10)Crer une procdure stocke qui affiche les partis politiques qui ne participent
pas dans une circonscription donne. (1 pt)
11)Crer un trigger qui empche lajout dune circonscription avec une valeur de
la colonne NombreSiege infrieure 0 ou suprieure 6. (1 pt)
12)Crer un trigger, qui lors de lajout dun candidat la table candidat, ajoute
galement ce candidat la table Electeur : en effet un candidat est aussi un
lecteur qui va voter dans la mme circonscription. (1 pt)
Dossier 2 (7 pts)
Crer une application client/serveur qui se base sur la base de donnes du
dossier 1 permettant dassurer les fonctionnalits suivantes :
7. Crer un menu pour cette application permettant de raliser les oprations
demandes par les questions qui suivent. (0,25 pt)
8. Crer un formulaire de mise jour des circonscriptions avec les lments
suivants : (1,25 pt)
BENTALEB MOHAMED
Page 145
OFPPT TDI
TRAVAUX PRATIQUES
BENTALEB MOHAMED
Page 146
OFPPT TDI
TRAVAUX PRATIQUES
Une socit compte dvelopper une application de gestion de son parc vhicule ;
elle consiste grer les vhicules, les conducteurs, les diffrents entretiens,
lassurance, suivre les dpenses qui sont spcifiques un vhicule prcis pour
dterminer sa rentabilit, lhistorique des pannes et des accidents concernant un
vhicule. Lapplication permet aussi de dterminer les vhicules dont lassurance est
sur le point dexpirer. Lapplication utilise la base de donnes base sur le modle
suivant :
N.B. Les champs marqus en gras et souligns reprsentent les cls primaires
des tables et les champs marqus par # reprsentent les cls trangres.
Vehicule (immat, marque, modele, puissance, carburant, dateAchat,
compteur, #idconducteur)
Conducteur (idconducteur, nomC, prenC, dateN, pass)
HistoConducteur (idHC, #immat, #idconducteur, dateDebut, dateFin)
AssVehicule (idAss, nomAssureur, dateAss, dateExpiration, #immat, montant)
Panne (idPanne, datePanne, dateReprise,descPanne, kilometrage, # immat)
Accident (idAccident, dateAccident, note, # immat)
BENTALEB MOHAMED
Page 147
OFPPT TDI
TRAVAUX PRATIQUES
Type
Alphanumrique
marque
modele
puissance
carburant
Alphabtique
Alphanumrique
Entier
Alphabtique
dateAchat
compteur
Date
Entier
#idConducteur
Entier
Colonne
idConducteur
nomC
prenC
dateN
Table Conducteur
Type
Entier
Alphabtique
Alphabtique
Date
pass
Alphanumrique
Signification
Ndimmatriculation du
vhicule
Marque du vhicule
Modle du vhicule
Puissance du vhicule
Carburant du
vhicule :Essence, Diesel
Date achat du vhicule
La valeur actuelle du
compteur du vhicule en km
Conducteur actuel du
vhicule
Signification
Identifiant du conducteur
Nom du conducteur
Prnom du conducteur
Date de naissance du
conducteur
Mot de passe du conducteur
dateFin
Table HistoConducteur
Type
Signification
Entier
Identifiant de lhistorique
des conducteurs du
vhicule
Alphanumrique
Nimmatriculation du
vhicule
Entier
Identifiant du conducteur
Date
Date dbut conduite
vhicule
Date
Date fin conduite vhicule
Colonne
Table AssVehicule
Type
Colonne
idHC
immat
idConducteur
dateDebut
BENTALEB MOHAMED
Signification
Page 148
OFPPT TDI
TRAVAUX PRATIQUES
idAss
nomAssureur
dateAss
Entier
Alphabtique
Date
dateExpiration
Date
immat
Alphanumrique
montant
Rel
Identifiant de lassurance
Nom de lassureur
Date de lassurance du
vhicule
Date dexpiration de
lassurance du vhicule
Nimmatriculation du
vhicule
Montant de lassurance
Table Accident
Colonne
idAccident
dateAccident
note
immat
Type
Entier
Alphabtique
Alphabtique
Alphanumrique
Signification
Identifiant de laccident
Date de laccident
Description de laccident
Nimmatriculation du
vhicule
Table Panne
Colonne
idPanne
descPanne
datePanne
dateReprise
Type
Entier
Alphabtique
Date
Date
Kilometrage
Entier
immat
Entier
Signification
Identifiant de la panne
Description de la panne
Date de la panne
Date de reprise aprs
panne
Valeur du compteur du
vhicule au moment de
la panne
Nimmatriculation du
vhicule
BENTALEB MOHAMED
Page 149
OFPPT TDI
TRAVAUX PRATIQUES
16)Crer une procdure stocke qui affiche, pour un vhicule donn comme
paramtre, la liste des pannes qui sont produites durant lanne 2011. Prvoir
dans le jeu dessai, des lignes dans la table Panne avec des dates comprises
dans lanne 2011. (1 pt)
17)Crer un trigger qui refuse lajout dune panne avec une valeur de la colonne
kilometrage infrieure la valeur de la colonne compteur de la table
Vehicule. (1 pt)
18)Pour tenir jour lhistorique des conducteurs dun vhicule, crer un trigger,
qui chaque modification du conducteur dans la table Vehicule, ajoute une
ligne la table HistoConducteur avec des donnes correspondantes au
vhicule et au nouveau conducteur du vhicule ; la colonne dateDebut prend
la date systme et la colonne dateFin reste nulle. (1 pt)
Dossier 2 (7 pts)
Crer une application client/serveur qui se base sur la base de donnes du
dossier 1 permettant dassurer les fonctionnalits suivantes :
13. Crer un menu pour cette application permettant de raliser les oprations
demandes par les questions qui suivent. (0,25 pt)
14. Crer un formulaire de mise jour des pannes avec les lments suivants :
(1,25 pt)
Des boutons de navigation.
Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
Le vhicule est choisi dans une liste droulante.
15. a- Crer un formulaire contenant une grille qui affiche lhistorique des
conducteurs dun vhicule donn; la grille affiche le nom et le prnom des
conducteurs, la date dbut et la date fin de conduite du vhicule. Le vhicule
est choisi dans une liste droulante. (1 pt)
b- Ajouter ct de chaque conducteur une case cocher. Ajouter en bas de
la grille, un bouton de commande qui permet de supprimer le ou les
conducteurs slectionns avec tous les enregistrements connexes. (1 pt)
16. Crer un formulaire permettant dafficher la liste des vhicules ayant fait des
accidents entre deux dates donnes ; les dates doivent tre saisies dans deux
zones de textes. (1 pt)
17. Crer un tat graphique de type secteur qui imprime le nombre de vhicules
par marque du parc. (1 pt)
18. Crer un tat qui imprime lensemble des vhicules avec les informations :
nom de la marque, le modle, le n du matricule, ainsi quun champ qui
donne le rendement du vhicule ; le rendement dun vhicule est
calcul comme suit : le nombre total des jours de pannes du vhicule divis
par le nombre total de jours couls depuis lachat du vhicule. (1,5 pt)
BENTALEB MOHAMED
Page 150
OFPPT TDI
BENTALEB MOHAMED
TRAVAUX PRATIQUES
Page 151