13. Traitement des données
Deux méthodes sont utilisables dans MUIbase pour le traitement des données :
par programmation ou l'éditeur de requetes.
La méthode par programmation vous permet de créer des boutons dans les masques
de tables qui, sur pression, appeleront des fonctions programmées.
L'utilisation de cette méthode est décrite dans le chapître concernant l'éditeur de
structure (voir Éditeur de structure) et dans le chapitre à propos de la programmation
dans MUIbase (voir Programmation de MUIbase).
Ce chapitre décrit l'utilisation de l'éditeur de requêtes, une fenêtre où
vous pouvez entrer des requêtes et consulter le résultat dans une fenêtre défilante.
13.1 Requêtes Select-from-where
MUIbase utilise un systême de requête du type select-from-where comme dans les bases de données SQL.
La requête vous permet d'afficher le contenu des enregistrements d'une ou plusieurs tables.
Seuls les enregistrements qui correspondent à un certain critère se retrouvent dans le résultat.
La syntaxe (incomplète) d'une reqête select-from-where est
| SELECT exprlist FROM tablelist [WHERE test-expr]
[ORDER BY orderlist]
|
où exprlist est une liste des expressions, séparées par des virgules, à afficher
(souvent les noms d'attributs) ou une simple étoile * qui correspond à tous les
attributs des tables spécifiées, tablelist est une liste de nom de tables, séparées
par des virgules, desquelles les enregistrements sont examinés, test-expr
est l'expression qui est testée pour chaque groupe d'enregistrements qui doit être inclu
dans le résultat, et orderlist est une liste d'attributs, séparés par des virgules, qui
déterminent l'ordre pour afficher le résultat.
Notez que les champs WHERE et ORDER BY sont optionnels ; ce qui est indiqué par les crochets [].
Par exemple, la requête
affiche le contenu des attributs de tous les enregistrements de la table spécifiée.
| SELECT attr1 FROM table WHERE (LIKE attr2 "*Madonna*")
|
affiche les valeurs du champ attr1 dans tous les enregistrements de table
dans laquelle le contenu du champ attr2 contient le mot `Madonna'.
Pour plus d'informations à propos des requêtes select-from-where et notamment sa syntaxe complète,
voir Programming MUIbase, pour plus d'exemples voir Query examples.
13.2 Éditeur de requêtes
Pour saisir et exécuter des requêtes, ouvrez l'éditeur de requêtes en sélectionnant le choix de menu
`Program - Queries'. L'éditeur de requêtes peut gérer plusieurs requêtes mais une seule est
est affichée. La fenêtre de l'éditeur de requêtes contient les éléments suivants :
- un champ de saisi de texte avec un bouton attaché. Le champ texte indique le nom de la requête en cours.
En pressant le bouton, apparaissent une liste avec d'autres noms de requêtes ainsi que d'autres boutons.
Vous pouvez sélectionner une des requêtes affichées pour la rendre en faire la requ^te en cours, pressez le bouton
`Nouveau' pour créer une nouvelle requête, pressez le bouton `Dupliquer' pour faire une copie de la
requête sélectionnée, cliquez sur le bouton `Trier' pour trier la liste des requêtes,
ou pressez le bouton `Delete' pour effacer la requête en cours.
Pour quitter la fenêtre sans rien modifier, cliquez de nouveau sur le bouton des requetes.
- un bouton `Run' qui compile et exécute le programme de requête et affiche le résultat
dans le fenêtre déroulante.
- un bouton `Imprimer' qui ouvre une requête (voir Printing queries)
pour imprimer les résultats.
- deux boutons `Load' et `Save' pour charger et enregistrer le programme de requête courant.
Si vous enregistrez une requête, le texte du programme est écrit au format ASCII et la première ligne
contient le nom de la requête. La fonction de chargement utilise le même format au chargement d'un fichier.
Il est aussi possible de charger et enregistrer des requêtes en utilisant les choix de menu dans le menu
contextuel du champ de saisie. Cependant, ces éléments de menu enregistrent seulement le texte du programme
et n'incluent pas le nom d'une requête.
- un champ de saisie pour tapper le programme de requête.
Vous saisissez ici une requête de type select-from-where. Cependant, it is also possible to enter any
expression of MUIbase' programming language. This can be useful if you want
to do simple computations or update some fields of a table by using a simple program.
Veuillez noter que MUIbase entoure automatiquement votre expression avec une paire de parenthèses. Vous pouvez donc
ne pas utiliser les deux les plus éloignées.
- un affichage en liste qui montre les résultats de la requête en cour.
L'affichage est formaté en lignes et colonnes.
La ligne de titre contient les noms des champs de la requête select-from-where (le plus souvent les noms d'attribut).
Sur Les lignes suivantes est affiché le résultat de la requête, un jeu d'enregistrement par ligne.
Chaque valeur est affichée dans sa propre colonne.
Si vous double-cliquez un élément de la liste, et que cet élément était généré directement à partir d'un enregistrement,
alors cet enregistrement est affiché dans le masque de table correspondant.
C'est une façon simple de d'aller à un certain enregistrement dans son masque de table.
L'éditeur de requête est non-modale. Cela signifie que vous pouvez laisser l'éditeur de requête ouvert alors
que vous travaillez avec le reste de l'application. Vous pouvez à tout moment fermer l'éditeur de requête, en cliquant sur
le bouton de fermeture sur la barre de titre.
13.3 Impression de requêtes
Après avoir exécuté une requête, vous pouvez imprimer le résultat dans un fichier ou sur une imprimante en cliquant
sur le bouton `Imprimer' dans l'éditeur de requêtes.
Cela ouvre une requête d'impression qui contient les éléments suivants:
- un champ `Délimiteur' où vous précisez comment les colonnes doivent être séparées.
`Espaces' place des caractères espaces entre chaque champs. La justification est faite à gauche ou à droite
en fonction du type du champ (les nombres sont justifiés à gauche, le texte à droite).
`Tabulations' insère un caractère tabulation entre les colonnes.
Cela peut être utile si vous voulez utiliser la fenêtre d'impression pour exporter des enregistrements (voir ci-dessous).
`Personnaliser' vous permet de préciser un délimiteur personnalisé à afficher entre les champs.
- un champ `Police' où vous précisez quelle police de caractère doit être utilisée pour imprimer
l'affichage. `NLQ' signifie « qualité proche d'une lettre » qui doit imprimer dans une meilleure qualité que `Brouillon'.
- un champ `Taille' où vous définissez la taille des caractères.
`Pica' imprime avec une police large (10 cpi), `Elite' avec une police de taille moyenne (12 cpi) et `Condensé' avec
une petite police (17 cpi).
- un champ texte `Séquence d'initialisation' qui vous permet de préciser votre imprimante.
Le contenu de ce champ est directement envoyé à l'impreimante à l'ouverture de celle-ci. Par exemple, vous pouvez utiliser
`\33c' comme séquence d'initialisation qui réinitialise votre imprimante.
- un champ `Indentation' où vous pouvez préciser le nombre d'espaces qui seront utilisés pour indenter chaque
ligne en sortie.
- un champ `Entête' qui, s'il est coché, imprime les noms de champs sur la première ligne.
- un champ `Codes d'échappement'. S'il n'est pas coché l'impression de tous les codes d'échappement est
supprimé, donc les paramétrages des champs `Police' et `Taille' sont ignorés et le contenu de
la `Séquence d'initialisation' ne sont pas imprimés. Supprimer l'impression de tous les codes d'échappement
est utile si vous voulez générer un fichier ASCII, par exemple pour exporter des enregistrements.
- un champ `Guillemets' qui, s'il est coché, entoure chaque champ par des guillemets.
- un champ `Après impression' où vous choisissez comment doit se terminer l'extraction. `Saut de page' imprime
un caractère saut de page \f. `Saut de ligne' imprime un nombre de sauts de ligne \n.
Le nombre de sauts de ligne peut être saisi dans le champ texte à la droite du bouton `Sauts de ligne'.
`Rien' n'imprime rien sur l'imprimante.
- un champ texte `Sortie' avec un bouton attaché.
Vous pouvez utiliser le bouton pour ouvrir une requête de fichier pour choisir un nom de fichier ou saisissez
un nom de fichier dans le champ texte.
Pour envoyer la sortie vers l'imprimante entrez `|lpr' (Linux) ou `PRT:' (Amiga).
Pour d'autres noms de fichiers spéciaux, voir Fichier de sortie.
- deux boutons `Ok' et `Annuler' pour fermer la fenêtre d'impression.
Quand vous en avez terminé avec tous les paramètres, cliquez sur le bouton `Ok' pour lancer le travail d'impression.
La fenêtre d'impression peut aussi être utilisée pour exporter des enregistrements dans un fichier ASCII.
Pour cela, précisez `Tabulations' (ou `Personnalisé') dans le champ `Délimiteur', mettez à 0 le
nombre d'espaces dans le champ `Indentation', cochez `Entête', décochez `Codes d'échappement' pour supprimer
les paramètres de police, taille et séquence d'initialisation, éventuellement cochez `Guillemets' si vous voulez
que les champs soient entourés de guillemets, cochez `Rien' dans le champ `Après impression', et entrez un
nom de fichier dans le champ `Sortie'.
Il se peut qu'utiliser l'éditeur de requête avec la fenêtre d'impression soit plus puissant pour exporter
des enregistrements que la fonction import/export de MUIbase (voir Import et Export). C'est dû au fait
que n'importe quelle requête peut être utilisée dans l'éditeur alors que la fenêtre d'export utilise seulement une
requête fixe.
13.4 Exemples de requêtes
Voici plusieurs exemples de requêtes pour vous donner une idée de la puissance des requêtes select-from-where.
Supposez que nous ayons deux tables `Personne' et `Chien'.
`Personne' a les attributs suivants : `Nom', un attribut entier `Age', et deux attributs de référence
`Père' et `Mère' qui se réfèrent aux enregistrements père et mère de la table `Personne'.
La table contient les enregistrements suivants :
| Nom Age Père Mère
--------------------------------
p1: Steffen 26 p2 p3
p2: Dieter 58 NIL NIL
p3: Marlies 56 NIL NIL
p4: Henning 57 NIL NIL
|
`Chien' a un attribut texte `Nom', un attribut de type choix `Couleur' et un attribut de
référence `Propriétaire' qui se réfère au propriétaire dans la table `Personne'.
La table contient les enregistrements suivants :
| Nom Coleur Propriétaire
-----------------------
d1: Boy blanc p3
d2: Streuner gris NIL
|
Avec ces données, on peut exécuter les requêtes select-from-where suivantes :
donne :
| Name Age Père Mère
--------------------------
Steffen 26 Dieter Marlies
Dieter 58
Marlies 56
Henning 57
|
(Pour les attributs de référence le champ `Nom' de l'enregistrement référencé est affiché.)
| SELECT Nom "Enfant", Age,
Père.Nom "Père", Père.Age "Age",
Mère.Nom "Mère", Mère.Age "Age"
FROM Personne WHERE (AND Père Mère)
|
donne :
| Enfant Age Père Age Mère Age
----------------------------------
Steffen 26 Dieter 58 Marlies 56
|
| SELECT Nom, Couleur,
(IF Propriétaire Propriétaire.Nom "Pas de propriétaire") "Propriétaire"
FROM Chien
|
donne :
| Nom Couleur Propriétaire
------------------------
Boy blanc Marlies
Streuner gris Pas de propriétaire
|
| SELECT a.Nom, a.Age, b.Nom, b.Age FROM Personne a, Personne b
WHERE (> a.Age b.Age)
|
donne :
| a.Nom a.Age b.Nom b.Age
---------------------------
Dieter 58 Steffen 26
Marlies 56 Steffen 26
Henning 57 Steffen 26
Dieter 58 Marlies 56
Henning 57 Marlies 56
Dieter 58 Henning 57
|
This document was generated
on May, 27 2010
using texi2html