Académique Documents
Professionnel Documents
Culture Documents
—i
Etudiant.dbf
MWSKi
Base de données : Etudiant
Table 1 Table2
•
•
. ...i :
Section.dbf
J
Base de données : Etudiant
Gestionnaire d'alias
S E n t r e z l a c o m p o s i t i o n d e s c h a m p s d e l a première t a b l e t e l l e q u e l e m o n t r e l a
fenêtre s u i v a n t e :
p Aljm public Définition d'un nouvel aBa* de base de
données. Effectuez les changements, puis,
|AliasEtuof choisissez Provisoire. Création de la table dBASE pour Windows : ( S a m titre )
Alias de la base
OK
Provisoire
Annulei
fletiret
• Création des tables : La colonne Type représente les types des données associées aux.
•
champs CTÇJ C comme alphabétique (caractère) ou N comme
•S F a i r e F i c h i e r / N o u v e a u / T a b l e p u i s c h o i s i r u n p i l o t e d e b a s e d e données, p a r numérique.
exemple, D B A S E p o u r Windows Vous pouvez voir tous les types disponibles en cliquant avec le
Bouton droit dans la colonne Type. "Dans cet exemple, le champ
1 Création de table
N U M _ E T U D servira dindex primaire (clé) à notre base. Ce champ
Type de table :
permet de distinguer les enregistrements les uns des autres.
jIdBASE pout W i n d o w s (Par défaut la Base sera triée selon cette clé.
OK Annutef | Aide | La taille représente le nombre de caractères que pourra avoir le
contenu des champs (exj ici, les noms pourront être entrés sur un
maximum de 20 caractères).
Tour le type numérique, si on ne spécifie pas le nombre de
décimales la valeur par défaut sera zéro, si nécessaire indiquez te
nombre de chiffres après la virgule.
Enregistrât dans :
A p p l i c a t i o n
SjgssfeaAJS {Wtfara
Nouveau | ActiveX MuW-tweaux ; Ouvrages | Fiches ; Dialogues i Projets ! Expert fiche base de données
Modules de données Affaires ; WebSnap • WebSetvicet I Corba
Choisissez une table h utiliser avec la fiche
Ç^y GestEtud
•* Copier •'
Aide <. Précédent Suivant > Annuler j
OK Annuler J Aide
U n e b o i t e d e d i a l o g u e s ' o u v r e v o u s d e m a n d a n t Quel type de fiée voulez-vous créer S D a n s l a case Lecteur ou nom d'alias, c h o i s i s s e z l'alias q u e n o u s a v o n s créé
avec l'expert fiche ? ( A l i a s E t u d ) . C l i q u e z a l o r s s u r l e n o m d e v o t r e table ( E t u d i a n t ) , p u i s
c l i q u e z s u r le b o u t o n Suivant.
NUM.SECT JEdttNIJM.
V V o t r e p r o g r a m m e e s t terminé !! L a n c e z - l e a v e c i'O
êide < Précédent Suivant > Annuler
S V o u s d e v e z a l o r s i n d i q u e r q u e l s s o n t les c h a m p s d e l a b a s e q u e v o u s s o u h a i t e z
u t i l i s e r . V o u s p o u v e z les sélectionner t o u s e n c l i q u a n t s u r l e b o u t o n " » " . U n e Ce que D e l p h i a f u i t automatiquement pour vous :
f o i s l e s c h a m p s d e l a table sélectionnés c l i q u e z s u r l e b o u t o n Suivant. P o u r S D e l p h i a placé u n c o m p o s a n t l U Tïable s u r l a t i c h e . C e c o m p o s a n t n o u s
c h o i s i r l a d i s p o s i t i o n d e s c h a m p s s u r l a fenêtre à générer, u t i l i s e z les b o u t o n s d o n n e u n accès à n o t r e b a s e d e données. S a propriété DatabaseName
• et « c o n t i e n t n o t r e a l i a s A l i a s E t u d e t s a propriété TableName contient le n o m
S C h o i s i s s e z a l o r s u n e d i s p o s i t i o n p o u r les c h a m p s : d e n o t r e b a s e d e données ( E t u d i a n t . d b f ) .
S D e l p h i a également inséré u n C o m p o s a n t T D a t a S u w c c * C ' composant
i e
0 ® © ® <8>
4.Exploitation d'une base de d o n n é e s par
H
i.
M •
A . . 1 .. ! .
+ -
. 1
programme
Y " 4 . 1 . C r é a t i o n d'un programme exploitant une base de
CD (D @
données déjà créée :
F a i t a p p e l à l a méthode F / r s r / d e l ' e n s e m b l e d e données p o u r
© N o u s a l l o n s d a n s c e q u i s u i t écrire u n e a p p l i c a t i o n q u i p e r m e t d ' e x p l o i t e r
q u e l e p r e m i e r e n r e g i s t r e m e n t d e l ' e n s e m b l e d e données
n o t r e b a s e d e données q u ' o n a crée, o n v a créer a l o r s d e s procédures p o u r c h a q u e
Premier I devienne l'enregistre!nent e n cours.
événement.
! F a i t a p p e l à l a méthode P r i o r d e l ' e n s e m b l e d e données p o u r
q u e l ' e n r e g i s t r e m e n t précédent d e v i e n n e l ' e n r e g i s t r e m e n t e n S D a n s l ' o n g l e t B D E , p r e n e z u n c o m p o s a n t Table e t p l a c e z - l e s u r v o t r e f i c h e
1
©
cours. ( F o r m l ) . C e c o m p o s a n t n o u s p e r m e t d'accéder à n o t r e b a s e d e données.
Précédent
F a i t a p p e l à l a méthode Next d e l ' e n s e m b l e d e données p o u r
CD S E n t r e z d a n s s a propriété DatabaseName le n o m d e votre alias ( A l i a s E t u d
que l'enregistrement suivant devienne l'enregistrement e n
s i v o u s a v e z s u i v i l a création d e l a b a s e t e l q u e décrite d a n s c e t o u v r a g e ) .
Suivant cours.
F a i t a p p e l à l a méthode Last d e l ' e n s e m b l e d e données p o u r S D a n s s a propriété TableName, entrez le n o md e votre table
que l e dernier enregistrement devienne l'enregistrement e n (Etudiant.dbf)
®
cours. S R e n d e z a c t i f l e c o m p o s a n t Tàblel e n m e t t a n t s a propriété Active à True.
Dernier
F a i t a p p e l à l a méthode Insert d e l ' e n s e m b l e d e données p o u r
(D
insérer u n n o u v e l e n r e g i s t r e m e n t a v a n t l ' e n r e g i s t r e m e n t e n / D a n s l ' o n g l e t AccèsBD, p r e n e z u n c o m p o s a n t DataSource et placez le sur
Insertion
c o u r s e t p l a c e r l ' e n s e m b l e d e données e n m o d e I n s e r t i o n ^ v o t r e f i c h e . C e c o m p o s a n t s e r t d e c a n a l (d'intermédiaire) e n t r e l e c o m p o s a n t
S u p p r i m e l ' e n r e g i s t r e m e n t e n c o u r s . S i l a propriété TTable e t d'autres composants. C e s derniers permettent p a r e x e m p l e d e
C o n f i r m D e l e t e e s t à True, i l e s t demandé c o n f i r m a t i o n a v a n t v i s i o n n e r l e c o n t e n u d e l a t a b l e : c e s o n t p a r e x e m p l e TDBEdit et
Suppression
la suppression. TDBNavigator. ,
© P l a c e l ' e n s e m b l e d e données e n m o d e E d i t i o n a f i n d e p o u v o i r S E n t r e z T a b l e l d a n s s a propriété DataSet. Cela assure sa liaison avec l e
Edition modifier l'enregistrement en cours. composant Tablel.
E c r i t les m o d i f i c a t i o n s d a n s l ' e n r e g i s t r e m e n t e n c o u r s d a n s l a
Ecriture b a s e d e données. Il faut maintenant ajouter les composants q u i vont nous permettre d e
® A n n u l e l'édition d e l ' e n r e g i s t r e m e n t e n c o u r s , e t r e p l a c e v i s u a l i s e r e t m o d i f i e r n o t r e b a s e d e données.
l ' e n s e m b l e d e données à l'état V i s u a l i s a t i o n . * D a n s l ' o n g l e t ContrôleBD, p r e n e z u n c o m p o s a n t D B N a v i g a t o r e t p l a c e z - l e
Annulation V i d e l e s t a m p o n s d ' a f f i c h a g e d u contrôle orienté données, s u r l a fiche. C e c o m p o s a n t p e r m e t d e p a r c o u r i r l e s e n r e g i s t r e m e n t s d e l a b a s e
p u i s l e s rafraîchit à p a r t i r d e l a t a b l e o u d e l a requête d e données e t même d ' e n r a j o u t e r o u d ' e n r e t i r e r .
® p h y s i q u e . U t i l e s i l e s données s o u s - j a c e n t e s o n t p u être
Rafraîchissement modifiées p a r u n e a u t r e a p p l i c a t i o n . S R e l i e z c e c o m p o s a n t D B N a v i g a t o r à n o t r e DataSource e n affectant
D a t a S o u r c e l à s a propriété DataSource.
N . B : I 'anspouve^ ajouter cinq (OS) composants L a b e l pour étiqueter les cinq champs. S L a n c e z v o t r e p r o g r a m m e p o u r le tester...
4 . 2 Modifier le contenu des champs p a r p r o g r a m m a t i o n : L'inconvénient de cette méthode est q u ' i l f a u t connaître
f'empfacetnent des champs. Si on modifie Tordre des champs, notre
I l e x i s t e d e u x façons d'accéder ( l i r e o u écrire) a u c o n t e n u d e s c h a m p s : p a r
programme ne fonctionnera plus correctement. If est donc
le n°du champ o u p a r s o n nain.
préférable d'accéder par Ce nom du champ.
a. A c c è s p a r le n ° du c h a m p :
L e s o b j e t s TTable possèdent u n t a b l e a u d e c h a m p s F i e l d s . A t t e n t i o n , c e
b . A c c è s par le nom du c h a m p :
tableau c o m m e n c e à l'indice 0 .
L a f o n c t i o n F i e l d B y N a m e n o u s p e r m e t u n accès p a r l e n o m d u c h a m p :
D a n s cet e x e m p l e , si o n fait :
function FieldByNameconst(FieldName:string):TField;
Variable:«Tablel.Fields[Qj.AsString ;
C e t t e f o n c t i o n n o u s p e r m e t d'accéder d i r e c t e m e n t a u x propriétés e t méthodes
Alors V a r i a b l e contiendra lavaleur du premier champ.
spécifiques d ' u n c h a m p d o n t o n connaît l e n o m .
A s S t r i n g e s t u n e propriété q u i p e r m e t d e c o n v e r t i r l e t y p e d u c h a m p e n O n p e u t d o n c m o d i f i e r l'implémentation d e l'événement O n C l i c k d u p r e m i e r
String. bouton :
I l e x i s t e d ' a u t r e s possibilités d e c o n v e r s i o n : A s l n t e g e r , A s B o o l e a n , procédure T F o r m 2 . B u t t o n l C l i c k ( S e n d e r : T O b j e c t ) ;
AsFloat, AsCurrency. AsDateTimeetA s V a r i a n t . begin
ShowMessage(Tablel.FieldByName('Nom').AsString);
Si o n m e t par e x e m p l e V a r i a b l e : = T a b l e l . F i e l d [ 0 ] . A s F l o a t e t s i end;
le c h a m p c o n t i e n t u n S t r i n g , c e l a déclenche u n e e x c e p t i o n .
E t l'implémentation d e -l'événement O n C l i c k d u s e c o n d b o u t o n : 4 . 4 . Se d é p l a c e r dans la base de d o n n é e s afin d'effectuer
un t r a i t e m e n t dans un champ :
procédure T F o r m 2 . B u t t o n 2 C l i c k ( S e n d e r : TObject);
begin L e s m o d e s d e déplacement expliqués c i - d e s s u s p e r m e t t e n t également
Tablel.Edit; d ' e x a m i n e r t o u s les e n r e g i s t r e m e n t s a f i n d'en effectuer u n t r a i t e m e n t .
Tablel.FieldByName('Nom').AsString:= 'Mameri*;
end; Exemple :
N o u s a l l o n s m e t t r e e n m a j u s c u l e t o u s l e s caractères d e s c h a m p s N o m . P o u r
S L a n c e z v o t r e p r o g r a m m e p o u r le tester...
c e l a , n o u s a l l o n s n o u s s e r v i r , e n p l u s d e s méthodes c i - d e s s u s , d e s méthodes
suivantes :
4.3. Se d é p l a c e r dans une base de d o n n é e s : P e r m e t d e r e n d r e i n a c t i f s l e s contrôles branchés à c e t t e
R e p r e n e z l ' e x e m p l e créé précédemment à l ' a i d e d e l ' e x p e r t ( a v e c a j o u t d u DisableControls t a b l e (accélère d o n c l e t r a i t e m e n t e n évitant d e s
DBGrid). affichages i n u t i l e s dans les D B E d i t
EnableControls L e s rend actifs
L e b u t d e c e p a r a g r a p h e e s t d e découvrir l e s procédures q u i s e r v e n t à s e i ( E n d O f F i l e ) r e n v o i e t r u e s i l a t a b l e e s t v i d e , après u n
déplacer d a n s u n e b a s e d e données s a n s p a s s e r p a r l e c o m p o s a n t D B N a v i g a t o r . ; a p p e l à L a s t , o u s i u n a p p e l à l a méthode N e x t
Eof i échoue d u f a i t q u e l ' o n e s t déjà a u d e r n i e r
L e c o m p o s a n t TTable d i s p o s e d e p l u s i e u r s méthodes p e r m e t t a n t d e se j e n r e g i s t r e m e n t . C ' e s t c e d e r n i e r p o i n t q u i n o u s intéresse
déplacer d a n s l a b a s e : [dans notre exemple ( I l existe aussi B O F : B e g i n O f F i l e )
Edit i P l a c e l a t a b l e e n m o d e édition
First V a a upremier enregistrement FieldByName ('Nom • , • ,
Last i V a a u dernier enregistrement champ').AsString I ° P W
V , r, e a P h e r e c e d e n t
S Voilà, c'est t o u t . C o m p i l e z e t t e s t e z . . .
4.5. C r é a t i o n d'un index secondaire et t r i de la base : O n n ' a pas besoin de c o m p i l e r le p r o g r a m m e pour v o i r l'effet o b t e n u : l'effet
e s t immédiat s i l a propriété Active d u c o m p o s a n t Tablel e s t à T r u e e t c e , dès l a
R e p r e n e z l ' e x e m p l e créé précédemment à l ' a i d e d e l ' e x p e r t . P a r défaut, v o t r e m o d i f i c a t i o n dans l'inspecteur d'objet. O n r e m a r q u e que s i o n affecte une v a l e u r
b a s e d e données e s t triée d a n s l ' o r d r e donné p a r n o t r e i n d e x p r i n c i p a l c ' e s t à d i r e à IndexFieldNames, l a v a l e u r d e IndexName e s t m i s e à b l a n c . Réciproquement s i
dans notre e x e m p l e , par NumEtud. o n a f f e c t e u n e v a l e u r à IndexName. IndexFieldNames est m i s e à b l a n c .
L a création d ' u n i n d e x s e c o n d a i r e vous permettra de trier les
enregistrements selon u n autre ordre e t d e faciliter les recherches a u sein de la
b a s e d e données. Ici nous avons choisi un t r i par un seuC champ (C\[OfM), si on a
spécifié une expression d'index, par exemple 9>{pfM et T'K^TOOd, Us
champs indexés étant dans lordre ^ O ' M puis 'F^L'HO'M, par
a. L ' i n d e x ( A j o u t d ' u n index secondaire) : i conséquent, Ce t r i obtenu est un t r i selon le nom. Tour les
L ' a j o u t d ' u n i n d e x s e c o n d a i r e v a s e f a i r e à p a r t i r d u Module de base de enregistrements ayant le même'HOM,on a un t r i par TS^L9iQM.
données ( l e p r o g r a m m e q u i n o u s a p e r m i s d e créer n o t r e b a s e d e données).
A v a n t d e r e n t r e r d a n s l e Module de base de données, i l f a u t m e t t r e à F a l s e
O n p e u t définir p l u s i e u r s index secondaires e t p a r conséquent o b t e n i r
l a propriété Active d e Tablel d e n o t r e p r o g r a m m e ( s i c e n ' e s t p a s déjà f a i t ) s o u s différents tris e n f o n c t i o n d e l'index utilisé.
p e i n e d e n e p o u v o i r m o d i f i e r l a b a s e d e données.
O n p e u t , b i e n s u r , fixer c e s propriétés p a r p r o g r a m m a t i o n .
/ O u v r e z l e Module de base de données ( m e n u O u t i l s / M o d u l e b a s e d e
données) p u i s d a n s l e m e n u F i c h i e r d e c e m o d u l e c h o i s i r O u v r i r / T a b l e .
Exemple :
/ D a n s l a c a s e alias, choisissez A l i a s E t u d e t d a n s Nom choisissez
S A j o u t e z u n b o u t o n e t implémentez s a méthode OnClick d e l a façon s u i v a n t e :
Etudiant.dbf.
procédure T F o r m 2 . B u t t o n l C l i c k ( S e n d e r : TObject);
V Choisissez le m e n u Table/Restructurer.
T a b l e l . i n d e x N a m e := ' N o m ' ;
V D a n s l a l i s t e déroulante propriétés de l a table sélectionnez index.
{tri p a r nom et u t i l i s a t i o n d e i n d e x N a m e }
E n f a i t , l a façon d e créer u n i n d e x s e c o n d a i r e dépend d u t y p e d e l a b a s e d e end;
données ( P a r a d o x , D B A S E , e t c . )
L a définition d e Y index secondaire dans ce cas se fait exactement c o m m e o n A j o u t e z u n a u t r e b o u t o n e t implémentez s a méthode OnC Tick d e l a façon
l ' a f a i t a v e c l a création d ' u n i n d e x . suivante :
a j o u t e z u n b o u t o n e t u n 7 E d i t p u i s implémentez s o n événement O n C l i c k :
• find%e.y est une fonction qui renvoie True si Venregistrement
t
Exercice d'application :
Créez u n e i n t e r f a c e a v e c l e s b o u t o n s s u i v a n t s :
• Rechercher : r e c h e r c h e r u n étudiant e n f o u r n i s s a n t s o n n o m .
• Pi/trer: afficher uniquement les étudiants dont le n o m
c o m m e n c e p a r "d'.
.r
• Trier : t r i e r l e s étudiants s e l o n l e n o m .
C e t t e a p p l i c a t i o n u t i l i s e l a b a s e d e données créée précédemment e t
a f f i c h e s e s e n r e g i s t r e m e n t s s u r u n DBGrid