0% ont trouvé ce document utile (0 vote)
49 vues8 pages

Modèle de données pour gestion de stock

Le document décrit la création d'une application Delphi/InterBase pour gérer des articles, clients, fournisseurs et commandes. Il inclut le modèle de données, la création des tables et des requêtes, ainsi que le code des boutons pour insérer, modifier, supprimer et naviguer entre les enregistrements.

Transféré par

radia gana
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues8 pages

Modèle de données pour gestion de stock

Le document décrit la création d'une application Delphi/InterBase pour gérer des articles, clients, fournisseurs et commandes. Il inclut le modèle de données, la création des tables et des requêtes, ainsi que le code des boutons pour insérer, modifier, supprimer et naviguer entre les enregistrements.

Transféré par

radia gana
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP Delphi/InterBase

 Soit le modèle de données suivant :

Client Article Fournisseur


Num_Client C (5) Code_Art C (3) Num_Four C(5)
Nom_ClientVA (15) Designation VA (15) Nom_FourVA (15)
1,N Qtt_Stock SI Prenom_FourVA (15)
Prenom_Client VA (15)
Adresse_Client VA (25) Stock_Min SI Adresse_FourVA (25)
Tel_Client C(10) Tel_FourC (10)
1,N
1,N Concerner2
Concerner1 1,N
Qtt_Cmd SI
Qtt_LivSI
Prix_UV N
Passer Prix_UAN Livrer

1,1 1,N

Commande Livraison
Num_Cmd SI Num_LivSI
1,N 1,1
Date_CmdD Date_LivD
Nom_LivreurVA (30)
 Création des Tables :

/* Table : Client */
CREATE TABLE CLIENT
(
Num_Client CHAR(5) not null,
Nom_Client VARCHAR(15) not null,
Prenom_Client VARCHAR(15) not null,
Adresse_Client VARCHAR(15),
Tel_Client CHAR(10),
Constraint PK_CLIENT PRIMARY KEY (Num_Client)
);

/* Table : ARTICLE */
CREATE TABLE ARTICLE
(
Code_Art CHAR(3) not null,
Designation VARCHAR(15) not null,
Qtt_Stock SMALLINT,
Stock_Min SMALLINT,
Constraint PK_ARTICLE PRIMARY KEY (Code_Art)
);

/* Table : FOURNISSEUR */
CREATE TABLE FOURNISSEUR
(
Num_Four CHAR(5) not null,
Nom_Four VARCHAR(15) not null,
Prenom_Four VARCHAR(15) not null,
Adresse_Four VARCHAR(15),
Tel_Four CHAR(10),
Constraint PK_FOURNISSEUR PRIMARY KEY (Num_Four)
);

1
/* Table : LIVRAISON */
CREATE TABLE LIVRAISON 
(
Num_Liv SMALLINT not null,
Date_Liv Date not null,
Nom_Livreur VARCHAR (30) not null,
Constraint PK_LIVRAISON PRIMARY KEY (Num_Liv)
);

/* Table : COMMANDE */
CREATE TABLE COMMANDE 
(
Num_Cmd SMALLINT not null,
Date_Cmd Date not null,
Constraint PK_COMMANDE PRIMARY KEY (Num_Cmd)
);

/* Table : CONCERNER1 */
CREATE TABLE CONCERNER1
(
Num_Liv SMALLINT not null,
Code_Art CHAR(3) not null,
Qtt_Liv SMALLINT not null,
Prix_UA NUMERIC (8,2) not null,
Constraint PK_CONCERNE1 PRIMARY KEY (Num_Liv, Code_Art)
);

/* Table : CONCERNER2 */
CREATE TABLE CONCERNER2
(
Num_Cmd SMALLINT not null,
Code_Art CHAR(3) not null,
Qtt_Cmd SMALLINT not null,
Prix_UV NUMERIC (8,2) not null,
Constraint PK_CONCERNE2 PRIMARY KEY (Num_Cmd, Code_Art)
);

 Modification des tables (Ajout de la clé étrangère) :

ALTER TABLE LIVRAISON


ADD Num_Four CHAR(5) Not Null;

ALTER TABLE LIVRAISON


ADD FOREIGN KEY (Num_Four)
REFERENCES FOURNISSEUR (Num_Four) ON UPDATE CASCADE;

ALTER TABLE COMMANDE


ADD Num_Client CHAR(5) Not Null;

ALTER TABLE COMMANDE


ADD FOREIGN KEY (Num_Client)
REFERENCES CLIENT (Num_Client) ON UPDATE CASCADE;

2
 Création du Projet Delphi/InterBase :

 Fiche Article :

 Boutton + :

procedure TFArticle.SpeedButton1Click(Sender: TObject);


begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit1.SetFocus;
SpeedButton2.Enabled:=False;
SpeedButton3.Enabled:=False;
SpeedButton9.Enabled:=True;
SpeedButton4.Enabled:=True;
end;

 Bouton - :
Procedure TFArticle.SpeedButton2Click(Sender: TObject);
begin
if MessageDlg(' Voulez Vous vraiment Supprimer cet Enregistrement !' ,mtconfirmation,
[mbyes,mbno],0)=mryes then
begin
DM.IBDB.Open;
with DM.IBQ1 do
begin
Close;
with Sql do
begin
Clear;
Add('DELETE FROM Article ');
Add('where Code_Art='''+Edit1.Text+'''');
end; // with Sql
Try
if not DM.IBTrans.InTransaction
then DM.IBTrans.StartTransaction;
// ExecQuery;
ExecSql;
DM.IBTrans.Commit;
Showmessage ('Suppression OK');
except
on e: Exception do
Showmessage ('Pb Suppretion'+e.Message);
end; // Try...Except
end; // with IbQuery1
DM.IBQ2.Active:=True;
end
end;

 Bouton  :

3
procedure TFArticle.SpeedButton3Click(Sender: TObject);
begin
Up:=True;
end;

 Bouton  :
Procedure TFArticle.SpeedButton4Click(Sender: TObject);
begin
DM.IBDB.Open;
if up=False then
begin
with DM.IBQ1 do
begin
Close;
with Sql do
begin
Clear;
Add('INSERT INTO Article');
Add('(Code_Art, Designation, Qtt_Stock, Stock_Min)');
Add('VALUES ('''+Edit1.Text+''','''+Edit2.Text+''','''+Edit3.Text+''','''+Edit4.Text+''')');
end;
Try
if not DM.IBTrans.InTransaction
then DM.IBTrans.StartTransaction;
ExecSql; // ExecQuery;
DM.IBTrans.Commit;
Showmessage ('insertion OK');
except
on e: Exception do
Showmessage ('Pb insertion');
end;
end; // with IbQuery1
end // end if
else
begin
DM.IBDB.Open;
with DM.IBQ1 do
begin
Close;
with Sql do
begin
Clear;
Add('UPDATE Article SET Code_Art='''+Edit1.Text+''', Designation='''+Edit2.Text+''',
Qtt_Stock='''+Edit3.Text+''',Stock_Min='''+Edit4.Text+'''');
Add('where Code_Art='''+Code+'''');
end; // with Sql
Try
if not DM.IBTrans.InTransaction
then DM.IBTrans.StartTransaction;
ExecSql; // ExecQuery;
DM.IBTrans.Commit;
Showmessage ('Modification OK');
except
on e: Exception do

4
Showmessage ('Pb Modification'+e.Message);
end; // Try...Except
end; // with IbQuery1
end;
DM.IBQ2.Active:=True;
SpeedButton2.Enabled:=True;
SpeedButton3.Enabled:=True;
end;
 Bouton X :
Procedure TFArticle.SpeedButton9Click(Sender: TObject);
begin
Edit1.Text:=DM.IBQ2.FieldValues['Code_Art'];
Edit2.Text:=DM.IBQ2.FieldValues['Designation'];
Edit3.Text:=DM.IBQ2.FieldValues['Qtt_Stock'];
Edit4.Text:=DM.IBQ2.FieldValues['Stock_Min'];
end;

 Bouton << :
procedure TFArticle.SpeedButton5Click(Sender: TObject);
begin
DM.IBQ2.First;
SpeedButton6.Enabled:=False;
SpeedButton5.Enabled:=False;
SpeedButton7.Enabled:=True;
SpeedButton8.Enabled:=True;
Edit1.Text:=DM.IBQ2.FieldValues['Code_Art'];
Edit2.Text:=DM.IBQ2.FieldValues['Designation'];
Edit3.Text:=DM.IBQ2.FieldValues['Qtt_Stock'];
Edit4.Text:=DM.IBQ2.FieldValues['Stock_Min'];
end;

 Bouton < :
Procedure TFArticle.SpeedButton6Click(Sender: TObject);
begin
DM.IBQ2.Prior;
if DM.IBQ2.RecNo=1 then
begin
SpeedButton6.Enabled:=False;
SpeedButton5.Enabled:=False;
end;
SpeedButton7.Enabled:=True;
SpeedButton8.Enabled:=True;
Edit1.Text:=DM.IBQ2.FieldValues['Code_Art'];
Edit2.Text:=DM.IBQ2.FieldValues['Designation'];
Edit3.Text:=DM.IBQ2.FieldValues['Qtt_Stock'];
Edit4.Text:=DM.IBQ2.FieldValues['Stock_Min'];
end;

 Bouton > :
Procedure TFArticle.SpeedButton8Click(Sender: TObject);
begin
DM.IBQ2.Next;
if DM.IBQ2.RecNo=DM.IBQ2.RecordCount then
begin
SpeedButton7.Enabled:=False;

5
SpeedButton8.Enabled:=False;
end;
SpeedButton5.Enabled:=True;
SpeedButton6.Enabled:=True;
Edit1.Text:=DM.IBQ2.FieldValues['Code_Art'];
Edit2.Text:=DM.IBQ2.FieldValues['Designation'];
Edit3.Text:=DM.IBQ2.FieldValues['Qtt_Stock'];
Edit4.Text:=DM.IBQ2.FieldValues['Stock_Min'];
end;

 Bouton >> :
procedure TFArticle.SpeedButton7Click(Sender: TObject);
begin
DM.IBQ2.Last;
SpeedButton7.Enabled:=False;
SpeedButton8.Enabled:=False;
SpeedButton5.Enabled:=True;
SpeedButton6.Enabled:=True;
Edit1.Text:=DM.IBQ2.FieldValues['Code_Art'];
Edit2.Text:=DM.IBQ2.FieldValues['Designation'];
Edit3.Text:=DM.IBQ2.FieldValues['Qtt_Stock'];
Edit4.Text:=DM.IBQ2.FieldValues['Stock_Min'];
end;

 FArticle.Show :
procedure TFArticle.FormShow(Sender: TObject);
begin
Edit1.Text:=DM.IBQ2.FieldValues['Code_Art'];
Edit2.Text:=DM.IBQ2.FieldValues['Designation'];
Edit3.Text:=DM.IBQ2.FieldValues['Qtt_Stock'];
Edit4.Text:=DM.IBQ2.FieldValues['Stock_Min'];

if not ((DM.IBQ2.Bof) or (DM.IBQ2.Eof)) then


begin
SpeedButton7.Enabled:=True;
SpeedButton8.Enabled:=True;
SpeedButton5.Enabled:=True;
SpeedButton6.Enabled:=True;
end;

if DM.IBQ2.Eof then
begin
SpeedButton7.Enabled:=False;
SpeedButton8.Enabled:=False;
SpeedButton5.Enabled:=True;
SpeedButton6.Enabled:=True;
end;

if DM.IBQ2.Bof then
begin
SpeedButton5.Enabled:=False;
SpeedButton6.Enabled:=False;
SpeedButton7.Enabled:=True;
SpeedButton8.Enabled:=True;
end

6
end;

POST_EVENT
SET TERM ^;
CREATE TRIGGER TR_Customer_Balance
FOR Customer
ACTIVE AFTER UPDATE
AS
BEGIN
IF ( CustomerBalance > 10000 ) THEN
POST_EVENT "High_Customer_Balance";
END^
SET TERM ;^

SET TERM^;
CREATE TRIGGER VERIF_ARTICLE_QTT_CMD FOR CONCERNE2
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE Q_Stock SMALLINT;
BEGIN

7
SELECT Qtt_Stock FROM ARTICLE WHERE Code_Art=New.Code_Art INTO : Q_STOCK ;
IF (:Q_STOCK < New.Qtt_Cmd) THEN
EXECUTE PROCEDURE MSG_STK_INS;
END^
SET TERM;^

Vous aimerez peut-être aussi