Le langage Dbase
Vocabulaire et Opérations élémentaires
Le texte des exercices statistiques élémentaires en Dbase pour la licence MASS est disponible ainsi que l'archive des fichiers et programmes cités.
Le logiciel DBASE version " III plus " appelé plus
couramment DBASEIII Plus est un système de gestion de base
de données quasi-relationnelle muni d'un langage
de programmation structuré orienté gestion. Il fonctionne en
mode interactif et/ou en mode programmé - interprété.
Toutes les commandes utilisables au niveau interactif sont
programmables. Le mode interactif peut être utilisé à
deux niveaux : le niveau " assisté " qui propose une
utilisation par menus déroulants, le niveau interactif
sans assistance pour les utilisateurs qui peuvent lancer
les commandes DBASE en mode direct ou les programmes.
Remarque : Ce langage peut se compiler grâce notamment à
CLIPPER. La version IV de DBASE dispose d'un compilateur
intégré. Des clones, tel FOXBASE sont compatibles et plus
rapides que DBASE.
Une base de donnée est par exemple l'ensemble des
informations contenues dans un carnet d'adresses, ou
celles contenues dans le fichier d'une bibliothèque,
l'ensemble des informations concernant une classe.
Techniquement, c'est un tableau rectangulaire à double
entrée. Ces informations peuvent se répartir en fiches
ou cartes et correspondent à l'ensemble des
renseignements concernant un individu. Elle sont donc
regroupées en entités unificatrices, fédératrices du
tableau (du fichier). Chaque fiche contient le même
type d'informations pour l'entité fédératrice.
Le fichier de la bibliothèque permet le classement
alphabétique des informations , l'ajout ou le retrait
d'une fiche... Il est à ce titre plus facile, plus
efficace dans son utilisation qu'un carnet d'adresses.
Mais ce type de fichier ne permet pas d'accéder aisément
aux informations secondaires, c'est à dire celles qui ne
sont pas reconnues comme critères de classement.
Il est difficile de rechercher un livre en fonction de
l'année d'édition ou de la maison d'édition si le
fichier n'a pas été organisé, classé en fonction de ce
critère ou de cet autre. Encore plus difficile de faire
une recherche sur deux critères simultanément.
Une base de données informatisée permettra en outre ce
genre de recherches, mais aussi des classements multi-
critères, des comptages, des mises à jour ... .
Chaque ligne du carnet d'adresses
+-------------------------------------------------------------+
! nom ! prénom ! adresse ! téléphone !
+-------------------------------------------------------------+
---> ! TOTO ! Lulu ! 12 rue du vin ! 11 11 11 11 !
---> ! LOULOU ! Machin ! 75 avenue J. JAURES ! 23 45 67 89 !
est un enregistrement ou ligne (RECORD, LINE)
Chaque fiche du fichier de la bibliothèque
+------------------------------------------------+
! !
! Titre : L'HOMME DE PAROLES !
! Nom de l'auteur : Claude HAGEGE !
! Maison d'édition : Fayard !
! Année d'édition : 1985 !
! Nombre de pages : 315 !
! !
est aussi un enregistrement ou ligne (RECORD, LINE).
Une base travaille sur des spécifications de lignes
plutôt que sur des numéros de lignes. Au lieu de parler
des lignes 17, 15 et 28, on essaiera de trouver une
relation qui définit ces lignes. Ce sera par exemple la
relation : "dont l'année d'édition est 1985" ou " dont
le nombre de page est inférieur à 300 ET dont la maison
d'édition est Grasset".
Chaque colonne du carnet d'adresses +------------------------+
! adresse !
+-------+--+---------------------+
! prénom ! 12 rue du vin !
+-------+-+--------+ 75 avenue J. JAURES !
! nom ! Lulu !
+---------+ Machin !
! TOTO !
est un champ ou colonne ( FIELD , COLUMN )
Chaque type d'informations de la fiche de bibliothéque
+---------------------------------------------+
! !
----> ! Titre : L'HOMME DE PAROLES !
----> ! Nom de l'auteur : Claude HAGEGE !
----> ! Maison d'édition : Fayard !
est aussi un champ ou colonne ( FIELD , COLUMN )
Le type d'informations contenu dans le carnet d'adresse
+----------+
! prénom !
+------+--+-------+
! nom ! !
+---------+
! !
ou dans le fichier de la bibliothèque
+----------------------
! Titre
! Nom de l'auteur
! Maison d'édition
est toujours le même. Son cadrage (format) a été choisi
comme grille de construction. Cette grille est
communément appelée : STRUCTURE de la base de données.
*** Pour charger DBASE à partir du DOS il suffit de taper
suivant la configuration :
DO <rc>
ou DBASE <rc>
*** On arrive sous l'espace de travail de DBASE, à partir
duquel nous pourons passer des commandes à DBase qui
seront exécutées de manière interactive. Cet espace se
reconnait par son prompt, le "." , en début de ligne (en
colonne 1).
On y distingue trois espaces différents
- l'espace de travail interactif.
- l'environnement " assist ".
- l'éditeur (dans lequel on écrit les programmes).
*** Pour sortir de DBASE il suffit de taper :
. QUIT <rc>
On se retrouve alors sous DOS.
*** Au chargement de Dbase, certains paramètres sont
activés. Ils sont affichables par : . LIST STATUS
et modifiables par des commandes : . SET ... ON/OFF ... TO
*** Il n'est pas besoin de donner une extension aux
fichiers qui seront créés sous DBase. Le logiciel s'en
charge lui même en donnant les extensions suivantes :
.DBF pour une base de données.
.MEM pour un fichier contenant des variables.
.NDX pour un fichier d'indices de tri.
.PRG pour un programme.
QUELQUES COMMANDES UTILES
*** Consulter le fichier d'aide :
. HELP
. HELP < mot_clé >
*** Adresser par défaut une unité ou un
sous-répertoire :
. SET DEFAULT TO < unité: >
. SET DEFAULT TO < unité:\sous-répertoire >
*** Lister tous les fichiers d'une unité ou ceux
spécifiés par ABC*.XYZ ( équivalent de DIR sous
DOS , DBase accepte d'ailleurs les mêmes notions
anbiges que le DOS ) :
. LIST FILES
. DIR
. ou LIST FILES ON < unité >
. LIST ABC*.XYZ
*** Revenir au mode commande reconnaissable à son
point "." de "prompt" , par exemple en cas de
programme qui boucle :
. appuyer sur La touche ESC
("Escape" ou "Sortie")
*** Ecrire à l'écran :
. ? "bonJour"
bonJour
CREATION DE BASES
La création d'une base de données supose en amont un
travail de réflexion sur la structuration des
informations. De cette réflexion dépend la bonne
utilisation et la bonne maintenance de la base de données.
Les thèmes de cette réflexion doivent éclairer les points
qui sont présentés ici.
1. Le public (les utilisateurs) :
A qui va servir la ou les bases de données créées pour
déterminer éventuellement les problèmes des niveaux
d'interface. Il faut une définition des besoins exacts
des utilisateurs, en termes de manipulations, de
spécifications d'actions précises. Ici on doit bien se
mettre d'accord avec l'utilisateur pour construire le
cahier des charges.
12 : CREATION DE BASES (2)
2. Les manipulations (les requêtes) :
A quoi va servir la ou les bases de données créées ? Il
faut indiquer les spécifications précises des traitements,
et/ou manipulations même les plus minimes avec toutes les
retombées que cela supose sur la base de données.
Remarque : bien des bases de données ne sont pas
utilisables ou de maniements très difficiles faute de
cette analyse.
3. Les données (forme et stockage) :
Sera-t-il nécessaire de coder les données ? en ce cas
comment les coder ? Y a t' il des données manquantes ou
aberrantes ? en ce cas comment en tenir compte dans le
codage pour qu' elles ne faussent pas les traitements ?
Une fois fait cet important travail de réflexion, munis
d'un cahier des charges qui nous indique clairement la
marche à suivre, il reste à créer la base sur la machine
avec Dbase. Pour le logiciel toute création de base de
données commence par la construction de la structure du
tableau. Pour reprendre des exemples d'actions que nous
connaissons bien, ce que nous savons déjà faire c'est
construire un tableau sur le papier. Pour cela il faut
a) - donner un nom aux différentes colonnes qui le
composent,
b) - dimensionner les colonnes pour que
l'information ne déborde pas.
*** Pour accéder à la création de la structure il
suffit de taper : . CREATE < nom de fichier >
Le logiciel Dbase demande pour chaque champ ( colonne ):
- son nom ---> identificateur du champ ( nom
de colonne )
- son type ---> N pour numérique,
C pour caractère,
L pour logique ( vrai/faux )
M pour mémo ( champs de type
texte )
D pour date
- sa taille ---> dimensionnement du champ nombre
de caractères ou chiffres, avec
éventuellement le nombre de
décimales, virgule comprise. )
Limites de Dbase IIIplus
Restrictions : au plus 128 champs par base, 10 bases avec
chacune 7 fichiers d'indices et 4 kO par
enregistrement.
Précision maximale : 19 décimales, avec des nombres entre
1.E-307 et 1.E+308 .
La suite logique de l'opération de création de la
structure de la base de données consiste bien entendu à
SAISIR le contenu ( remplir le tableau ). La première
posibilité qui vous est offerte de le faire, est de
répondre O (oui) à la question :
" Voulez-vous commencer la saisie des données ? ",
qui nous est posée à la "sortie" du mode de création .
Une autre posibilité vous est offerte avec la commande :
. APPEND
exécutable à tout moment.
Le logiciel s'occupe seul de sauvegarder structure et
données. En fait Dbase sauvegarde au fur et à mesure de
la saisie de l'information, il fonctionne avec des zones
mémoire spécifiques pré-dimensionnées ou buffers qu'il
va écrire sur le disque ou la disquette à chaque fois
qu'elles sont pleines. Il est alors extrèmement
important de sortir du logiciel en respectant la
procédure de sortie c'est à dire en tapant QUIT car
avant de rendre la main au DOS, Dbase fait toutes les
sauvegardes nécessaires et ferme les fichiers.
OUVERTURE DE BASES et GESTION DES DONNEES
La fois suivante c'est à dire la prochaine fois que vous
utiliserez Dbase si vous voulez travailler sur la base
de données que vous aviez créée il vous faudra la
charger en mémoire après bien entendu avoir chargé
DBase. Pour ce faire il vous faudra taper la commande :
. USE <nom de base de données>
Remarque : Ne pas oublier la spécification d'unité et
éventuellement le chemin ( path ) si besoin est.
Il peut être important de modifier la structure de la base
de données. On poura faire 2 types de modifications au
niveau de la structure :
- les corrections au niveau de la structure déjà
créée, noms des champs, longueur, type ...
- les ajouts ou retraits de champs.
L'ordre est : . MODIFY STRU(cture)
On arrive alors sous le mode de création de structure avec
à l'écran celle de la base de données active.
MODIFICATIONS DES DONNéES
*** On peut afficher en mode plein écran le contenu de la
base de données en ayant en même temps la possibilité de
corriger les données ainsi listées : . BROWSE
*** On peut aller chercher une fiche dont on connait le
numéro d'enregistrement ( c'est à dire son numéro d'odre
dans la base de données ) :
. EDIT <nĝ d'enregistrement>
*** On peut ajouter un ou plusieurs enregistrements à la
base de données :
. APPEND
*** Le mode "append" ressemnble au mode de saisie des
données tant au niveau de la présentation qu' à celui des
manipulations.
20 : DESTRUCTION DES DONNéES
*** On peut évidement détruire des enregistrements dans
une base de données. Cette destruction se passe en 2
temps : tout d'abord on pose des marques devant les
enregistremnts que l'on désire effacer :
. DELETE [étendue] FOR <condition(s)>
Ceci est considéré comme l'effacemnt logique des données.
Il reste donc à effacer physiquement les enregistrements :
. PACK
Cependant - et ceci avant que l'ordre PACK soit taper et
validé - on peut revenir en arrière c'est à dire enlever
les marques d'effacement posé par DELETE avec l'ordre :
. RECALL [étendue] FOR <conditions>
ETENDUES ET REPERES
Remarque : L'éttendue désigne le nombre d'enregistrments
consernés par le commande à partir de la position du
pointeur dans la base.
Pointeur
Dbase repère les enregistrements par rapport à un 'index'
qui se dépalce en fonction des actions. Cet index
s'appelle le pointeur. L'enregistremnt qui est désigné
par le pointeur est dit actif.
Fonctions
AFFICHAGE DE LA STRUCTURE
Le premier et le plus utile, l' affichage de la structure
de la base de données en cours d'utilisation :
. LIST STRUcture
*** On obtient alors le descriptif comme par exemple
Structure de la base de données : A:ESSAI2.DBF
Nombre total d'enregistrements : 12
Date de la dernière mise à jour : 02/06/87
Champ Nom champ Type Dim Dec
1 NOMS Caractère 25
2 NOTE_F Numérique 5 2
3 REDOUBLE Logique 1
** Total ** 32
On peut aussi utiliser la commande
. DISPlay STRUcture
L'affichage est le même ; la seule différence est que
l'ordinateur s'arrête dès que l'écran est rempli et
demande confirmation avant d'aficher la suite.
AFFICHAGES DES DONNEES
Cet affichage se fait sans aucune présentation. les
enregistrements trop longs pour l'écran sont affichés sur
plusieurs lignes. L'ordre est :
. LIST . DISP all (si on veut un défilement par page écran)
L'affichage brut des données est très difficile à lire,
aussi quand une base de données est très grande il est
plus aisé de ne faire apparaître que les champs que l'on
veut consulter, ce qu'on appelle un affichage "sélectif".
. LIST <nom(s) de champs>
Remarque : Si il y a plus d'un champ à afficher les noms
des champs doivent être séparés par des virgules. On peut
aussi utiliser des formules sur champ. Exemple :
. list ampoule, durée, durée/60," minutes"
Enreg. Nĝ AMPOULE DUREE
1 1 1300
2 2 1200
3 3 1300 etc.
AFFICHAGES DES DONNEES et OPERATIONS SUR CHAMPS
L'affichage des données peut être présenté de manière à
faciliter leur lecture. Exemple :
. list "l' ampoule nommée " , AMPOULE , " dure ", DUREE ," minutes "
Enreg. Nĝ "l' ampoule nommée " AMPOULE " dure " DUREE " minutes "
1 l' ampoule nommée 1 dure 1300 minutes
2 l' ampoule nommée 2 dure 1200 minutes
3 l' ampoule nommée 3 dure 1300 minutes
4 l' ampoule nommée 3bis dure 1100 minutes
AFFICHAGES "CONDITIONNELS"
Cet affichage est encore plus précis que le précédent il
permet la présentation de données qui répondent à une ou
plusieurs conditions spécififiées par l'utilisateur.
. LIST FOR <condition(s)>
ou . LIST <nom(s) de champs> FOR <condition(s)>
Exemple 1 : . list for duree > 1250 Exemple 2 : . list ampoule for duree > 1250
Enreg. Nĝ AMPOULE DUREE Enreg. Nĝ ampoule
1 1 1300 1 1
3 3 1300 3 3
Exemple 3 : . list noms for noms = "D"
Enreg. Nĝ NOMS
1 DURAND
4 DE SAINT VINCENT
8 DUVAL
12 DURAND
ENCHAINEMENT DE CONDITIONS
Pour aller plus loin dans l'affichage et dans la précision
notre solution est d'employer l'enchaînnement de
conditions. Nous disposons de 3 outils logiques pour le
faire : .AND; .OR. et .NOT.
Exemple avec .AND.
. list nom, prenom, note_fran for redouble .and. note_fran >10
Enreg. Nĝ nom prenom note_fran
7 AVIATEUR Jean-Daniel 15.00
11 DURAND Claude 10.50
13 CHRETIEN Claudette 12.00
19 FROMAN Michelle 15.00
Exemple avec .OR. :
. list nom, prenom, note_fran for redouble .OR. note_fran <0
Enreg. Nĝ nom prenom note_fran
1 DURAND Joel 10.00
3 RATUIS Voncent 3.00
7 AVIATEUR Jean-Daniel 15.00
11 DURAND Claude 10.50
Exemple avec .NOT. :
. list nom, prénom, redouble for .not. redouble
Enreg. Nĝ nom prénom redouble
2 MERLOT Danielle .F.
4 DE SAINT VINCENT Marie-Claude .F.
5 XORBA Anatole .F.
6 THOUPROV Mickael .F.
8 DUVAL Jean-luc .F.
9 HUN Marcel .F.
10 CONSTANT Daniel .F.
12 DURAND Frédérique .F.
15 KADO François .F.
16 GIBBRAN Khalil .F.
17 OCTAVE Thérèse .F.
20 ROBERT anne .F.
COMPTAGES
Nous passons maintemnant à d' autres types de
manipulations : les comptages. Nous considérerons ici
deux sortes de travaux sur les données : les comptages,
les additions. Le résultat de ces comptages pourra
toujours être affecté dans une variable, c'est à dire
stocké dans une boite portant un nom et qui comtiendra la
valeur trouvée par la machine. Nous en reparlerons
ultérieurement au cours de l'étude de la commande STORE et
du moyen de conserver l'ensemble de ces boites dans des
fichiers de variables.
Les comptages n'intéressent que les enregistrements de la
base de données, autrement dit ils ne touchent que les
lignes du tableau. On comptera le nombre d'élèves de la
classe, ou le nombre de redoublants, ou le nombre d'élèves
qui ont plus de 10 en français, ou le nombre d'élèves qui
ont plus de 10 en français et plus de 10 en maths...
Un comptage se fait grâce à l'instruction
. COUNT
*** Avec affectation du résultat dans une variable :
. COUNT TO <nom de variable>
On peut aussi déterminer un nombre d'enregistrements de la
base de données par des condition(s)
. COUNT FOR <conditions>
*** Avec affectation du résultat dans une variable :
. COUNT FOR <condition(s)> TO <nom de variable>
Enchaînement de conditions
Comme nous avons pu enchaîner des conditions pour
"perfectionner" un affichage, nous pourrons le faire pour
les comptages qu'ils soient ou nom affectés dans des
variables. Nous disposons des mêmes outils que pour
l'affichage : .AND. .OR. .NOT.
. COUNT FOR <condition> .enchaînement. <condition logique>
*** Avec affectation du résultat dans une variable :
. COUNT FOR <condition> .enchaînement. <condition> to <variable>
Additions
Nous allons maintenant additionner des champs, colonnes.
Il va sans dire que ces champs doivent être de type
NUMERIQUE, le logiciel ne sachant pas faire d'addition sur
un autre type de champs.
Total d'un champ numérique pour toute la base de données :
Pour que Dbase puisse additionner un champ ( numérique )
il faut toujours lui indiquer le nom du champ sur lequel
porte l'opération. On utilise l'instruction :
. SUM <nom de champ>
SOMMES DE CHAMPS
Addition d'un champ numérique :
.SUM <nom de champ>
*** Avec affectation du résultat dans une variable :
. SUM <nom de champ> TO <nom de variable>
Addition " conditionnelle " d'un champ numérique :
. SUM <nom de champ> FOR <condition(s)>
*** Avec affectation du résultat dans une variable :
. SUM <nom de champ> FOR <condition(s)> TO <nom de variable>
Enchaînement de conditions
Comme nous avons pu enchaîner des conditions pour
"perfectionner" un comptage, nous pourrons le faire pour
les additions qu'elles soient ou nom affectées dans des
variables. Nous disposons des mêmes outils que pour le
comptage : .AND. .OR. .NOT.
. SUM <nom de champ> FOR <condition> .enchaînement. <condition>
*** Avec affectation du résultat dans une variable :
. SUM <nom_champ> FOR <cond> .enchaînement. <cond> TO <variable>
STOCKAGE DANS UNE VARIABLE ET SAUVEGARDE DE VARIABLES DANS UN FICHIER
Nous avons testé , au tout début du cours, la posibilité
qu'avait le logiciel d'écrire sur l'écran le résultat
d'une opération :
+----------------------+
! . ? 2+2 !
. ? 2+2 ---> ! 4 !
! !
â----------------------Ù
(sur écran)
Nous avons aussi vu au cours des comptages que nous
pouvions affecter le résultat d'un comptage ou d'une
addition dans une variable, c'est à dire le stocker dans
une boite par les ordres COUNT TO <nom de variable> ou SUM
<nom de champ> TO <nom de variable>.
STOCKAGE ET SAUVEGARDE
Nous pourrons donc maintenant stocker le résultat d'un
opération quelconque dans une variable dont nous
indiquerons le nom au logiciel.
. STORE <opération(s)> TO <nom de variable>
Exemple :
. STORE 2 + 2 TO TOTAL
Si l'on regarde le contenu de la variable total il sera
égal à 4. Nous pourrons aussi stocker des chaine de
caractères dans un variable.
. STORE "bonjour" TO HELLO
Si l'on regarde le contenu de la variable hello il sera
égal à bonjour.
REMARQUES SUR LES AFFICHAGES ET LES OPERATIONS
Remarques : Les chaînes de caractères doivent toujours
être mises entre " ". L'affichage par ? ne correspond pas
toujours au stockage ; ainsi 1/3 peut être calculé comme
0.333333333 et affiché comme 0.33 seulement.
Les opérations standard utilisent les symboles classiques :
- addition ---> + - soustraction ---> -
. ? 2+2 . ? 9-5
4 4
- multiplication ---> * - division ---> /
. ? 12*3 . ? 12/3
36 4.00
*** Pour avoir plus de décimales :
. ? 12/3.000
4.000
On peut aussi effectuer des opérations logiques : (T
signifie TRUE, soit vrai et F veut dire FALSE, soit faux.
- egalité ---> = - Différence ---> <>
. ? 2 = 2 . ? 2 <> 2
.T. .F.
- Plus grand que ---> > - Plus petit que ---> <
. ? 2 > 8 . ? 2 < 8
.F. .T.
Remarque : Attention les opérations de comparaisons et
l'addition peuvent aussi s'effectuer sur les chaines de
caractères. AInsi :
. ? "bon" + "jour"
bonjour
*** Vous testerez vous-mêmes les comparaisons de chaîne de
caractères. Sachez seulement qu'elles se font en fonction
du codage ASCII.
Affichage du contenu des variables stockées en mémoire
Les variables qui sont créées par l'utilisateur sont
stockées en mémoire vive par le logiciel qui peut donc
nous indiquer l'état des variables qu'il a en mémoire :
. DISPLAY MEMO(ry)
AFFICHAGE DES VARIABLES
On effectue les affectations suivantes :
. store 12*3 to totmuult
36
. store 2+3 to totmuult
5
. store 2+3 to totadd
5
. store 12*3 to totmuult
36
. store 9-5 to totmin
4
. store 12/3 to totdiv
4.00
. store "bonjour" to hello
bonjour
. store 2>8 to peut_etre
.F.
. store 2<8 to surement
.T.
. display memo
TOTMUULT pub N 36 (36.00000000)
TOTADD pub N 5 ( 5.00000000)
TOTMIN pub N 4 ( 4.00000000)
TOTDIV pub N 4.00 ( 4.00000000)
HELLO pub C "bonjour"
PEUT_ETRE pub L .F.
SUREMENT pub L .T.
7 variable(s) définie(s),
49 octet(s) utilisé(s)
249 variable(s) disponible(s),
5951 octet(s) disponible(s)
- la première colonne correspond au nom des varaibles
(pas plus de 10 caractères pour les nommer).
- La seconde colonne indique si ces variables sont
publiques ou privées
- La troisème colonne correspond au type d'informations
stocké dans la variable.
- La quatrième colonne correspond à la valeur affichée
pour cette variable.
- La cinquième colonne donne la valeur exacte stockée
pour cette variable est stockée (seulement
pour les variables numériques).
SAUVEGARDE DES VARIABLES
Toutes les variables qui sont créées à un moment donné de
la session de travail le sont en mémoire vive ( RAM ) donc
elles sont volatiles c'est à dire qu'elles vont
disparaître lorsqu'on éteindra la machine. Il est souvent
intéressant de conserver les résultats d'opérations
pratiquées sur la base de données dans un fichier. Ainsi
tout le travail fait pourra être conservé et utilisé
ultérieurement.
Dbase permet de le faire grace à la commande :
. SAVE TO <nom de fichier>
Remarque : Ne pas oublier la spécification d'unité et
éventuellement le chemin (path) si besoin est.
Regénération des variables
Inversement lorsqu' on aura besoin au début d'une session
d'utiliser un fichier de variables il suffira de le
charger en mémoire avec la commande :
. RESTORE FROM <nom de fichier>
TRIS ET INDEXATIONS
Jusqu'à présent nous avons travaillé sur les données dans
l'ordre où elles étaient entrées (ce qu'on appellle
l'ordre historique) . D'ailleurs au moment de leur saisie
nous n'avons pas fait attention au fait qu'elle soient ou
non classées en fonction de l'ordre alphabétique sur le
nom des élèves ou leur prénom, ou encore en fonction de
leur notes ou même de leur moyenne ...
Cependant ce type d'informations, ces données sont par
essence celles qu'on cherche à classer ou à trier en
fonction de tel ou tel critère . Dbase permet de faire ce
genre de travail sur les données selon 2 modes : le tri
et l'indexation. Le(s) critère(s) de classement est
(sont) toujours celui (ceux) que l'on fait porter sur un
ou plusieurs champs de la base de données. En fonction de
la "nature" , du type du champ un certain nombre de
critères seront ou non acceptables.
TRI PHYSIQUE
Cette méthode va nous permettre de recopier la base de
données originale dans une autre organisée, classée sur
le(s) critère(s) que nous aurons entré(s). L'ordre est :
. SORT ON <nom(s) de champ> TO <nom de la base cible>
A la suite de cette opération on dispose de 2 bases de
données sur le disque : une qui contient les données
telles qu'elles ont été saisies et l'autre qui contient
les données classées en fonction du critère de tri. En
mémoire cependant on n'a que la base de données originale.
Pour obtenir la base classée il faut la charger avec USE.
Remarque : Si on ajoute une ou plusieurs fiches dans la
base de données triée, elles seront ajoutées à la fin de
cette dernière et non intégrés en fonction du tri.
OPTIONS DE TRI PHYSIQUE
Dbase vous propose plusieures options de tri qui
permettent de choisir l'ordre de croissant [/A], ou
décroissant [/B], de faire en sorte que la machine ignore
la distinction majuscule minuscule [/C]. Syntaxe :
. SORT ON <nom de champ> [option] TO <nom de base cible>
Exemple :
. sort on age /D, nom /C to clastan
Ici on obtient la base de données classeée par âge en
ordre décroissant ( critère primaire ), et en cas
d'égalité sur l'âge en fonction de l'ordre alphabétique
croissant. Il n'y a pas de majuscules et de minuscules
donc l'option [/C] qui fait que la machine ignore la
différence entre majuscules et minuscules est ici inutile.
Remarque : Pour Dbase il n'y a pas de lettres comme nous
avons l'habitude de l'entendre mais des codes ASCII. Dans
ce code les numéros des majuscules sont inférieurs à ceux
de minuscules.
TRI PAR INDEXATION
L'indexation est l'autre mode de tri d'une base ; il ne
consiste pas en la création d'une autre base copie de la
base originale mais en la création d'un fichier qui donne
les numéros d'ordre des enregistrements en fonction du ou
des critères choisis. Ce fichier d'index est associé à la
base de données. l'ordre est :
. INDEX ON <expression clef> TO <nom du fihier d'index>
L'expression clef peut être un nom de champ ce qui est le
cas lorsqu'on fait l'indexation sur un seul critère. Si
cette indexation doit être multi-critères on ne peut pas
comme pour le tri donner les noms des champs supportant
les critères séparés par des virgules. Il faut alors
transformer cette suite de noms en une expression de même
type, c'est à dire une expression de type Caractère ou de
type Numérique. Nous ferons des exemples en cours pour
illustrer les difficultés de cette transformation.
EXEMPLES D'INDEXATION
Pour trier la base CLASSE par ordre croissant de notes
d'Anglais :
. index on note_angl to indangl
On veut indexer sur le nom et sur l'âge :
. index on str(age,2) + nom to indagn
L'expression qui sert de support à l'indexation n'est en
fait que la transforamtion de de champs de type différents
en une seule expression concaténée par la + qui elle est
de type carractère.
Les notes sont classées en ordre croissant c'est seulement
lorsqu'il y a égalité d'âge que le nom de l'élève est pris
en compte.
MISES A JOUR D'UNE BASE
Nous avons créé dans la base de données CLASSE deux champs
qui sont jusqu'à présent vides : les champs TOTAL et
MOYENNE. Comment faire pour les mettre à jour. Dbase va
vous permettre faire ces mises à jours avec la commande :
. REPLACE <nom de champ> WITH <expression> FOR <condition(s)>
Exemple : pour mettre à jour le champ TOTAL de la base
CLASSE. : on effectue l'addition des champs contenant
les notes de français, les notes d'anglais, les notes de
maths, pour chaque élève de la classe. Sauf pour les
élèves qui ont une de leurs notes inférieures à 0.
Commande :
. REPLACE total WITH (note_fran+note_angl+note_math)
for note_fran>=0 .and. note_angl>=0 .and. note_math>=0
COMMANDES DE CONFIGURATION
Redirection des sauvegardes : en chargeant Dbase le
logiciel prévoit de faire les sauvegardes,les actions
d'écriture sur fichiers sur l'unité à partir de laquelle
il a été lancé, quelque soit l'unité ou la sous directory
qui contient les fichiers du programme Dbase. On peut
bien sûr spécifier au moment de la création de chaque
fichier l'unité de sauvegarde. Mais alors il sera par la
suite toujours nécessaire de l'indiquer lors d'une
sauvegarde ou d'un chargement ... sans oublier le chemin
d'accès au fichier si nécessaire. Toutes ces manoeuvres
sont longues et dangeureuses parce qu'elles sont sources
d'erreurs de frappe.
Dbase prévoit une commande qui permet de diriger les
sauvegardes vers une unitée désigné et/ou une
sous-directory spécifique :
. SET DEFAULT TO <nom de l'unité >
Vous pouvez faire ne sorte que la machine soit bruyante,
c'est à dire qu'elle emette un BIP à la fin de chaque
saisie ou non avec l'option : (par défaut l'option est
ON)
. SET BELL on/off
Aussi vous pouvez la rendre bavarde c'est à dire qu'elle
peut se mettre à vous donner plus ou moins de détails
quand elle execute des opérations. Dbase met à votre
disposition 2 commandes : (par défaut OFF)
. SET ECHO on/off
Lors qu'il est en ON affiche la commande qui est executé
avant de donner le résultat : (par défaut ON)
. SET TALK on/off
Nous ne verrons pas en détail toutes les commandes de
configuration modifiables par SET vous pouvez savoir
comment est configuré Dbase au moment du chargement de
Dbaseen tapant la commande :
. SET
Les options sont listées ci-dessous :
Alternate OFF Dohistory OFF
Bell ON Escape ON
Carry OFF Exact OFF
Catalog Fields OFF
Century OFF Fixed OFF
Confirm OFF Heading ON
Deleted OFF Help ON
Delimiters OFF History ON
Device SCREEN Intensity ON
De même la commande :
. DISPLAY STATUS
donne la configuration de tout le logiciel ainsi que tous
les paramètres. A vous de les tester au fur et à mesure
de vos besoins.
Elle affcihe notamment :
Chemin d'accès:
Unité de disque par défaut: C:
Destination de l'impression: PRN:
Marge = 0
Zone de travail sélectionnée = 1
ALTERNATE - OFF DELETED - OFF FIXED - OFF SAFETY - ON
BELL - ON DELIMITERS - OFF HEADING - ON SCOREBOARD - ON
CARRY - OFF DEVICE - SCRN HELP - ON STATUS - OFF
CATALOG - OFF DOHISTORY - OFF HISTORY - ON STEP - OFF
CENTURY - OFF ECHO - OFF INTENSITY - ON TALK - ON
CONFIRM - OFF ESCAPE - ON MENU - ON TITLE - ON
CONSOLE - ON EXACT - OFF PRINT - OFF UNIQUE - OFF
DEBUG - OFF FIELDS - OFF
Touches de fonction programmables:
F1 - help F6 - display status;
F2 - assist; F7 - display memory;
F3 - list; F8 - display;
F4 - dir; F9 - append;
F5 - display structure; F10 - edit;