[ << ] | [ >> ] | [Sommaire] | [Table des matières] | [Index] | [ ? ] |
Création d'une base généalogique.
Ce chapitre contient une brève formation décrivant l'utilisation basique de BeeBase. Au fil de ces travaux dirigés un petit projet permettant la gestion de son arbre généalogique est développé. Après avoir appliqué toutes les étapes de ce cours, vous pourrez trouver le projet qui en résulte `FamilyTree.bbs' dans le répertoire `Demos' de votre installation de BeeBase.
On peut dire que BeeBase fonctionne dans deux modes différents : l'édition d'enregistrements et l'édition de structure.
Le mode d'édition d'enregistrements vous permet d'ajouter, de changer ou de supprimer des enregistrements.
Le mode d'édition de structure vous permet de modifier la mise en page de votre base de données ainsi que les tables et champs qu'elle contient.
En outre, il y a l'éditeur de programme où vous saisissez les fonctions du programme qui seront exécutées automatiquement lors de l'entrée des données ou explicitement lors d'un clic sur un bouton du programme.
Pour créer une base de données, vous devez d'abord définir son contenu. Pour cela, il faut ouvrir l'éditeur de structure en choisissant `Éditeur de structure' dans le menu `Projet'. Voici les trois différentes sections que vous y trouverez :
Tout d'abord nous avons besoin d'une table, appuyez sur le bouton `Nouveau' situé sous la liste de la section `Table'. Vous verrez alors une fenêtre s'ouvrir pour vous demander de saisir quelques données :
Quand c'est fait, cliquez juste sur le bouton `OK' et vous aurez votre première table, `Personne'.
Maintenant nous avons besoin d'un champ de type chaîne pour cette table, appuyez sur le bouton `Nouveau' dans la section Champs. Les champs ont également besoin de quelques réglages :
Après avoir cliqué sur le bouton `OK' vous pourrez noter quelques changements dans la section d'affichage. Choisissez `Fenêtre Principale' dans la liste déroulante en haut de la section d'affichage. Vous verrez ce que la fenêtre principale propose : actuellement seulement la table `Personne'. Si vous revenez de nouveau sur `Fiche de table', vous pourrez voir comment la table `Personne' se présente. Actuellement elle affiche un onglet avec un champ.
Double-cliquez maintenant sur l'`Personne' en haut de la liste, dans la section d'affichage ; une fenêtre doit s'ouvrir vous permettant de définir la façon dont cet onglet doit être affiché :
Appuyez sur le bouton `OK' et double-cliquez sur `Nom' dans la liste de la section d'affichage. La fenêtre `affichage du champ' apparaît, elle contient les réglages sur la façon dont le champ `Nom' va être affiché.
Quittez l'éditeur de structure (choisissez `Quitter l'éditeur de structure' dans le menu `Projet') et vous serez de nouveau en mode édition d'enregistrements où vous verrez à quoi ressemble vraiment la base de données. Vous verrez le titre qui correspond à la chaîne que vous avez choisie dans la section d'affichage de l'onglet. Le compteur d'enregistrement devrait indiquer `#0/0' puisque nous n'avons pas encore ajouté d'enregistrement. À la suite, se trouve un bouton filtre et deux boutons flèches. Au-dessous, vous devriez avoir le champ `Nom' avec le texte que vous avez pu écrire dans la section d'affichage de ce champ. Si dans la section d'affichage, vous n'avez changé aucun texte, alors l'onglet devrait s'appeler `Personne', et le champ de type chaîne `Nom'. Déplacez la souris au-dessus de la chaîne champ `Nom' et laissez-la pendant quelques secondes. Si vous avez écrit quelque chose dans la bulle d'aide, ce texte devrait paraître dans une fenêtre flottante.
Maintenant nous ajouterons deux champs référence. Les champs référence sont un peu différents des autres champs. Car leur nom pourrait impliquer qu'ils se réfèrent à des enregistrements. Ce sera plus compréhensible, lorsque dans un moment vous l'essayerez par vous-même.
Entrez dans l'éditeur de structure et ajoutez deux autres champs à la table `Personne'. Cliquez sur le bouton `Nouveau' dans la section champ, la fenêtre nouveau champ s'ouvre, nommez le `Pere', et changez le type en `Référence'. Un champ Référence ne dispose que d'un réglage :
Ajoutez un autre champ en cliquant sur le bouton `Nouveau' dans la section Champs, la fenêtre `Nouveau champ' s'ouvre. Nous nommons ce champ `Mere'. Positionnons son type de champ à une référence vers la table `Personne'.
Comme vous avez pu le noter, il y a maintenant trois champs dans la section Affichage. Cliquez sur `Pere' puis sur les boutons haut et bas placés juste à gauche. Ce qui aura pour effet de changer l'affichage et le positionnement de `Pere' dans le mode édition d'enregistrements. Mettez `Pere' en haut, `Nom' au milieu, et `Mere' en bas.
Après, nous indiquerons quel contenu les champs référence `Pere' et `Mere' devraient afficher dans les enregistrements référencés. Double-cliquez sur `Pere' dans la section d'affichage puis cliquez sur `Extras'. Ici nous choisissons d'afficher le champ `Nom', appuyez sur le bouton `Ok' et répétons le procédé pour le champ `Mere'.
Maintenant nous devons ajouter quelques enregistrements. Quittez l'éditeur de structure et entrez dans le mode édition d'enregistrements. Pour ajouter un nouvel enregistrement, choisissez `Nouvel enregistrement' dans le menu `Table' (sur Linux et Windows vous trouverez ce menu en maintenant pressé le bouton droit de la souris à l'intérieur de la fiche de table). Le curseur devrait maintenant sauter automatiquement au champ que nous avons placé un peu plus tôt comme étant au `Début' dans la section d'affichage de l'éditeur de structure. Ajoutez deux enregistrements, un avec le nom de votre père dans `Nom' et un autre avec le nom de votre mère dans `Nom'. Ensuite, vous ajoutez un autre enregistrement avec votre propre nom dans `Nom'.
Maintenant il est temps de comprendre les champs Référence. Cliquez sur le bouton de sélection dans `Pere' et vous obtiendrez la liste de tous les enregistrements auquel ce champ Référence pourrait se rapporter. Choisissez le nom de votre père puis, suivre le même cheminement pour le bouton de sélection dans mère.
Maintenant, vous devriez avoir trois enregistrements, vous, votre père et votre mère. Dans votre enregistrement, le nom de votre père devrait être évidemment visible en haut dans `Pere' et le nom de votre mère devrait être en bas dans `Mere'. Vous pouvez passer en revue les enregistrements en appuyant sur Alt ainsi que sur les touches Haut et Bas.
Vous vous dîtes : « Mais hé, mes parents aussi ont/avaient des parents ! » Aussi, ajoutons encore quatre enregistrements, la troisième génération. Ajoutez juste les enregistrements un par un en écrivant leurs noms dans `Nom'. Si vous ne vous rappelez pas leurs noms écrivez juste `le père de mon père', `le père de ma mère' ou toute autre formule équivalente du même style. Vous pourrez alors naviguer dans tous les enregistrements et placer dans `Pere' et `Mere' les valeurs adéquates. Une fois cela fait, vous devriez avoir au moins sept enregistrements, votre enregistrement, l'enregistrement de vos parents et l'enregistrement de vos grands-parents.
Puisque nous avons maintenant quelques enregistrements avec lesquels nous pouvons travailler, nous pourrions essayer la fonction de filtrage. Le filtre peut trier les enregistrements que vous ne voulez pas montrer, ils resteront dans la base de données mais ils ne seront simplement pas affichés.
Pour éditer le filtre choisissez `Changer le filtre' dans le menu `Table'. Une fenêtre comportant des opérateurs apparaîtra, vous permettant de définir les conditions qu'un enregistrement doit remplir pour être affiché.
Dans ce petit exemple, nous utiliserons la commande LIKE
,
qui vous laisse comparer un champ avec un motif.
Appuyez une fois sur le bouton LIKE
vers la droite et double-cliquez sur `Nom'
dans la liste à gauche et le (LIKE Nom )
devrait apparaître dans la chaîne juste
au-dessus des boutons `Ok' et `Annuler'.
Ensuite vous écrivez "*a*"
de manière à ce que le texte entier devienne (LIKE Nom "*a*")
.
Ceci signifie que BeeBase devrait afficher tous les enregistrements qui
contiennent la lettre `a' n'importe où dans le `Nom'.
Appuyez sur le bouton `Ok' et vous pourrez noter que les enregistrements ne contenant pas de `a' dans leur `Nom', ne seront plus visibles. Puisque la lettre `a' est très courante dans la plupart des langues et noms, tous les enregistrements pourraient encore être affichés, mais vous pouvez essayer d'autres lettres pour faire fonctionner le filtre de façon plus visible.
Comme expliqué précédemment, le bouton `F' sur l'onglet indique si le filtre est actif ou pas. Enfin, lorsque vous aurez fini vos essais, quittez le filtre de sorte que tous les enregistrements soient visibles.
Maintenant que nous avons un peu joué avec la fonction de filtrage, nous nous tournons vers le dispositif de requête de BeeBase. Des requêtes peuvent être utilisées pour afficher les données d'une base selon certains critères.
Choisissez `Requêtes' dans le menu `Programme' ; l'éditeur de requête s'ouvre. Maintenant une fenêtre avec quelques boutons en haut et deux plus grandes zones au-dessous apparaissent. La chaîne en haut à gauche permet d'écrire le nom de la requête que vous voulez créer.
La première grande zone permet d'écrire la requête. La deuxième grande zone permet d'afficher le résultat.
Maintenant produisons une liste de toutes les personnes que nous avons filtrées précédemment. Écrire : `Personnes avec un A dans leur nom' dans la chaîne en haut à gauche. C'est le titre pour cette requête. Dans la grande zone supérieure, taper :
SELECT Nom FROM Personne WHERE (LIKE Nom "*a*") |
Maintenant si vous lancez cette requête en appuyant sur le bouton `Exécuter' il produira une liste de toutes les personnes avec la lettre `A' dans leur nom. Essayez de changer la lettre pour voir différents résultats.
Il est temps de présenter la commande AND
.
Appuyez sur le bouton de sélection juste à gauche du bouton `Exécuter'
dans l'éditeur de requêtes.
Choisissez alors `Nouveau' et nommez-la `Personnes dont le nom contient les lettres A et S'.
Écrivez alors
SELECT Nom FROM Personne WHERE (AND (LIKE Nom "*a*") (LIKE Nom "*s*")) |
Notez que nous employons toujours la commande LIKE
pour
le choix des enregistrements contenants les lettres `A' ou `S' dans leurs noms, mais
la commande AND
exige que LES DEUX critères LIKE
soient vérifiés.
Par conséquent, seuls les enregistrements comportant les DEUX lettres `A' et `S'
dans leur nom sont affichés lorsque la requête est exécutée.
Il y a deux manières de choisir et de montrer la base de données. Une autre manière d'afficher les données consiste à écrire un programme. Pour afficher les données, nous pouvons utiliser un type de champ appelé Mémo.
Entrez dans l'éditeur de structure et appuyez sur le bouton `Nouveau' dans la section table. Nommez la nouvelle table `Controle' et placez son nombre d'enregistrements à `Exactement un'. Pressez et maintenez le bouton de la souris sur la nouvelle table, puis déplacez le curseur juste un peu au-dessus du milieu de la table `Personne' et enfin relâchez le bouton de la souris. Dans la section table, `Controle' devrait maintenant être en haut, suivi de `Personne'.
Assurez-vous que la table `Controle' est sélectionnée, et appuyez sur le bouton `Nouveau' dans la section Champs. Placez le type du nouveau champ sur `Mémo' et donnez-lui le nom `Resultat'. Cliquez sur le bouton `Ok' puis ajoutez un autre champ à la table `Controle' en appuyant de nouveau sur le bouton `Nouveau' dans la section Champs. Cette fois, choisissez le type `Bouton' et appelez le `Ascendance'.
Pour améliorer l'aspect de la base de données, dans la section d'affichage, cliquez une fois sur `Ascendance' ainsi que sur le bouton `haut'.
Maintenant nous avons un bouton qui peut exécuter un programme et un mémo pour y afficher des données. Il est donc temps d'entrer dans l'éditeur de programme. Pour cela, il faut choisir `Editer' à partir du menu `Programme'. L'éditeur de programme à trois boutons :
Toutes les fonctions de programme que vous écrirez
résideront dans cette fenêtre, nous devrons les distinguer. Dans BeeBase c'est la commande
DEFUN
qui le fait. Tout ce qui est entre les deux parenthèses
fera partie, dans cet exemple,
de la fonction ascendance
:
(DEFUN ascendance () ; C'est la parenthèse de la fin de DEFUN ) |
À cet effet nous écrivons maintenant la première fonction qui produira, dans la
base de données, un arbre généalogique de la personne courante et plaçons le
résultat dans le champ `Resultat'.
Cette fonction ascendance
comporte en fait trois fonctions :
ascendance
qui remplit `Controle.Resultat'
avec le résultat de l'appel à une autre fonction.
getascendance
qui rassemble l'ascendance dans une liste.
ascendance2memo
qui convertit cette liste en mémo.
; Le programme ascendance (DEFUN ascendance () (SETQ Controle.Resultat (ascendance2memo (getascendance Personne NIL) 0 3)) ) ; Le programme getascendance (DEFUN getascendance (personne:Personne niveau:INT) (IF (AND personne (OR (NULL niveau) (> niveau 0))) (LIST personne.Nom (getascendance personne.Pere (1- niveau)) (getascendance personne.Mere (1- niveau)) ) ) ) ; Le programme ascendance2memo (DEFUN ascendance2memo (ascendance:LIST indent:INT niveau:INT) (IF (> niveau 0) (+ (ascendance2memo (NTH 1 ascendance) (+ indent 8) (1- niveau)) (IF pedigree (SPRINTF "%*s%s\n" indent "" (FIRST ascendance)) "\n") (ascendance2memo (NTH 2 ascendance) (+ indent 8) (1- niveau)) ) "" ) ) |
En écrivant ce programme, assurez-vous que toutes les parenthèses se trouvent où elles devraient être. Un nombre de paranthèses inexact est l'erreur la plus commune lorsque BeeBase compile votre programme. Le message d'erreur de BeeBase serait alors probablement `Erreur syntaxique' . Cliquez sur le bouton `Compiler & fermer' et la fenêtre se ferme, ce qui signifie qu'il n'y a eu aucune erreur lors de la compilation.
Ne vous inquiétez pas trop si au début, vous ne comprenez pas toutes les fonctions. Il y a un chapitre complet (voir Programmation de BeeBase) contenant la liste de toutes les fonctions avec leur description détaillée.
Maintenant nous avons un programme à exécuter, mais d'abord nous
devons assigner la fonction programmée au bouton `Ascendance'.
Pour cela, il faut entrer dans l'éditeur de structure, choisir `Controle'
dans la section Table et double-cliquer sur le champ `Ascendance'
dans la section Champs.
Cliquez alors le bouton de sélection `Déclencheur'.
Dans cette liste, toutes les fonctions de votre programme seront énumérées,
à ce moment, il devrait y avoir trois fonctions :
ascendance
, getascendance
et ascendance2memo
.
Double-cliquez sur ascendance
pour que le bouton `Ascendance' déclenche cette fonction, puis appuyez sur le bouton `Ok'
et quittez l'éditeur de structure.
Maintenant si tout est fait correctement, un clic sur le bouton `Ascendance' affichera l'ascendance de la personne sélectionnée. Essayez de changer la personne pour voir différentes ascendances.
Le prochain ajout sur cette base de données exige encore plus d'enregistrements, vous devriez ajouter vos frères et soeurs. Si vous n'en avez pas, écrivez `Ma soeur fictive 1', `Mon frère fictif 1' qui naturellement devront être placés de façon à avoir les mêmes parents que vous.
Après cela, allez dans l'éditeur de programme et écrivez le nouveau programme :
; Le programme enfants compte le nombre d'enfants d'une personne. ; D'abord nous définissons les variables, p. ex. « noms » pour les noms des enfants. (DEFUN enfants () (LET ( (noms "") (count 0) (parent Personne) ) ; Pour tous les enregistrements de la table Personne, faire : ; Si la variable parent apparaît comme père ou mère ; dans un ou plusieurs enregistrements alors : ; ajoutez le nom à la variable noms ; incrémentez le compte de 1. (FOR ALL Personne DO (IF (OR (= parent Pere) (= parent Mere)) ( (SETQ noms (+ noms Nom "\n")) (SETQ nombre (1+ nombre)) ) ) ) ; Ensuite nous écrivons le résultat dans Controle.Resultat. ; Si la personne sélectionnée n'a aucun enfant, écrire une chaîne. ; Si elle a des enfants alors écrire une autre chaîne. (SETQ Controle.Resultat (+ Personne.Nom (IF (> nombre 0) (+ " est fier d'être le parent de " (STR nombre) " enfant(s).") " n'a aucun enfant (pour le moment :-)." )) ) ; Si les parents ont des enfants alors ajouter leurs noms. (IF (<> nombre 0) (SETQ Controle.Resultat (+ Controle.Resultat "\n\n" (IF (= nombre 1) "Le nom de l'enfant est :" "Les noms des enfants sont :" ) "\n\n" noms ) ) ) ; Parenthèse de fin de la commande LET. ) ; Parenthèse de fin de DEFUN enfants ) |
Pour créer des variables, nous utilisons la commande LET
.
Les variables créées avec la commande LET
sont locales et
seulement visibles entre les parenthèses ouvrante et fermante de
cette commande `LET'. Ainsi, toutes les commandes voulant
accéder à ces variables doivent être placées à l'intérieur des
parenthèses.
Tout ce dont nous avons besoin pour exécuter notre programme
est un nouveau bouton programme. Par conséquent, entrez dans
l'éditeur de structure et ajoutez un champ de type bouton dans
la table `Controle'. Appelez-le `Enfants' et choisissez
enfants
comme fonction à déclencher.
Pour apporter un certain ordre dans la fiche de la table `Controle' il est maintenant temps de présenter les groupes. Tous les objets peuvent être ordonnés dans des groupes alignés verticalement ou horizontalement.
Dans la section d'affichage, cliquez sur `Ascendant' et Maj-cliquez sur `Enfants'. Ensuite cliquez sur le bouton `Groupe' sur la gauche. Maintenant les deux boutons de programme seront rassemblés et alignés verticalement dans un groupe. Cependant, comme nous voulons qu'ils soient alignés horizontalement, double-cliquez sur `VGroup' qui est apparu dans la section d'affichage. Une fenêtre s'ouvrira qui vous permettra modifier les réglages de ce groupe. Saisissez `Programmes' comme titre et cochez le bouton `Horizontal'.
À ce moment nous pouvons cacher le nom du champ `Resultat' dans la table `Controle'. Double-cliquez sur `Resultat' dans la section d'affichage et videz le champ titre. Ceci affichera le champ `Resultat' sans aucun titre.
Pour rendre les choses plus faciles, si nous ajoutons plus de programmes ou de champs dans la table `Controle', nous devrions placer `Resultat' et le groupe `Programmes' dans un groupe vertical. Soyez certain que vous avez seulement sélectionné `Programmes' et `Resultat' avec de cliquer sur `Groupe'. Cela place `Programmes' et `Resultat' dans un groupe vertical.
Quittez l'éditeur de structure et jetez un coup d'oeil au résultat. Appuyez sur le bouton `Enfants' pour voir le nombre et le nom des enfants de la personne courante.
Cet exemple peut très bien être étendu dans un programme généalogique complet. Les seules vraies limites sont votre imagination et la taille de votre disque dur.
[ << ] | [ >> ] | [Sommaire] | [Table des matières] | [Index] | [ ? ] |
Ce document a été généré le 28 Septembre 2024 par texi2html