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" bonJourCREATION 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;