1. Présentation d’Open Office Base :
Open Office
Base (OOB) est un SGBD qui permet la création et la
manipulation des bases de données. Il fournit également un certain nombre
d’outils d’assistance au développement des BDD (assistant
de création de tables, assistant de création de requêtes, etc.).

L’interface
d’Open Office Base se présente en quatre zones. La Zone A « colonne Base
de données » regroupe les différents modes de travail (Tables, Requêtes,
Formulaires et Rapports). La zone B « tâches» propose les différents choix
possibles pour le mode de travail actif. La zone C liste les différents objets
crée dans chaque mode. Enfin, la zone D
permet de visualiser le contenu de l’objet sélectionné dans la zone C.
2. Objectif du TP
Dans ce TP,
nous allons voir comment utiliser une base de données SQL à partir d’Open
Office Base. L’objectif est de bénéficier des fonctionnalités fournies par OOB qui facilitent la manipulation des Bases de données (BDD). Deux types de fonctionnalités seront abordés :
·
les
formulaires facilitant la saisie et la modification d'enregistrements;
·
les
rapports permettant la mise en forme de résultats de requêtes.
Attention :
·
Avant
de commencer le TP, il est essentiel d’effectuer les étapes de préparation de
la machine : Lien vers la page de préparation (Aller sur ce lien : Préparation).
3. Formulaires
Les
formulaires servent à la saisie d'enregistrement dans des tables existantes.
Ils sont utilisés pour orienter la saisie de manière à éviter des données
incohérentes ainsi que pour améliorer l'apparence et l'ergonomie des interfaces
de saisie. Il existe deux manières de créer des formulaires sous OO Base :
Lorsque
le formulaire a pour objectif d'éditer les enregistrements d'un table ou
résultant d'une requête, il est préférable d'utiliser l'assistant qui permet
une création plus rapide d'un formulaire, quitte à le modifier ensuite.
3.1. Édition
des enregistrements d'une table
Nous
allons créer un premier formulaire en utilisant l'assistant d'OO Base.
Lancez
l'assistant de création de formulaires. La création du formulaire se déroule en 8 étapes.
Vous pouvez ensuite ouvrir le
formulaire pour consulter les enregistrements de la table. Un champ de texte en
bas du formulaire indique le nombre total d'enregistrements et celui que vous
consultez. Vous pouvez vous déplacer dans ces enregistrements en cliquant sur
les flèches situées à côté. Pour insérer un nouvel enregistrement vous pouvez
vous déplacer jusqu'à l'enregistrement suivant le dernier existant où cliquer
sur la flèche verte.

Consultez
les enregistrements existant et ajouter une nouvelle Agence. Vérifiez que cet
ajout est bien effectué dans la table Agence. Pour enregistrer une nouvelle insertion, cliquez sur l'icône
représentant une flèche verte sur une disquette.
3.2. Modification d'un formulaire
Le
formulaire généré peut ensuite être modifié en sélectionnant le menu
"Modifier" après un click droit sur le formulaire. La position des
contrôles peut ainsi être modifiée. La configuration des contrôles et du
formulaire peut aussi être modifiée après un click droit sur l'objet concerné.
Dans
le formulaire généré, chaque objet de contrôle (les champs de texte) est lié à
un champ d'étiquette. Pour ne sélectionner que l'un des deux objets cliquez
dessus en appuyant sur la touche Ctrl. Sélectionnez le champ de texte
correspondant au code de l’agence puis ouvrez la boîte de dialogue d'édition
des paramètres de ce contrôle (click droit -> contrôle...). La boîte de
dialogue dispose de 3 onglets pour paramétrer le contrôle.

1. Données. Cet onglet
fait le lien entre le contrôle et les données de la base. Ici aussi, la nature
du champ détermine les paramètres. Au minimum, on retrouve deux paramètres :
·
Champ de
donnée qui associe un champ de la table ou
de la requête au contrôle.
·
Saisie
requise qui oblige ou non à saisir une
valeur.

2. Événements. Cet onglet associe des actions à
effectuer avec certains événements. Cette partie n'est pas détaillée dans ce
TP.
Réalisez un formulaire
permettant l’ajout dans la table modele puis les contrôles
correspondant à la date de sortie (Année) pour passer le paramètre
"Déroulante" à la valeur "Oui". Cela aura pour effet de
pouvoir choisir une date dans une boîte de dialogue.
3.3.
Restriction des saisies
Parmi
les paramètres d'un contrôle liés aux données, il est possible de restreindre
les saisies possibles, par exemple en limitant les choix possibles dans une
liste. Les contrôles proposant des listes disposent ainsi d'un paramètre
"Contenu de liste" qui détermine les choix possibles. Ce paramètre est
souvent une requête SQL renvoyant l'ensemble des valeurs possibles. Dans
l'exemple ci-dessous la liste consiste en l'ensemble des identifiants des
agences.

Créez
un nouveau formulaire pour saisir de nouveaux stocks (sans que ce formulaire ne
permette de visualiser les services déjà existants). Testez ce formulaire en
essayant de créer un stock faisant référence à un numéro d’agence, de model ou
de finition qui n'existe pas.
Est-ce que
cet ajout fonctionne ? Comprenez-vous pourquoi ?
Modifiez
le formulaire pour remédier à ce problème :
Option
1 :
Modifiez le formulaire créé et supprimer le contrôle de saisie du
numéro d’agence (attention, ne supprimez pas le champ d'étiquette associé).
Ajoutez à sa place un contrôle de type "Boîte (ou zone) combinée " (les
contrôles disponibles sont dans la barre d'outils des contrôles sur la gauche).
Une boîte de dialogue s'ouvre alors pour vous assister dans cette
création.
Option
2 :
Modifiez
le formulaire créé en remplaçant le contrôle de saisie du code agence par un
contrôle de type "Boîte combinée".
1. Sélectionnez
le champ de contrôle
2. Cliquez sur
le bouton droit de la souris
3. Choisissez
"Boîte combinée" dans la liste remplacer par.
4. Allez dans
les propriétés de la "Boîte combinée" et éditez dans la section
le champ contenu de liste de l’onglet "Données".
3.4. Sous-formulaires
Un formulaire n'est associé au plus qu'à une table
ou une requête. Il est cependant possible de lui attacher des sous-formulaires
associés à d'autres tables ou requêtes pour visualiser ou éditer des données
jointes. Le principe général est que la valeur saisie dans le formulaire
principal est utilisée pour effectuer une jointure avec une autre table (ou
résultat de requête) dont les données sont affichées dans un sous-formulaire.
Toujours avec l'assistant, créez un nouveau formulaire pour insérer
de stocks. À l'étape "Paramétrer un sous-formulaire", sélectionnez
"Ajoutez un sous-formulaire".

OO
Base vous propose un ensemble de sous-formulaires correspondant aux tables
possédant des clés étrangères vers la table du formulaire principal. Ici,
aucune table n’est proposée car aucune table
n’a de clé étrangère qui vers l’identifiant de la table
"Atelier".
Comme nous souhaitons afficher des informations sur les agences.
Nous allons sélectionnez l'option demandant une saisie manuelle des champs et
passez à l'étape suivante.
Les
champs du sous-formulaire doivent alors être sélectionnés. Choisissez la table Agence et ces champs CodAg,
Dpt et Ville.
La
quatrième étape demande de définir manuellement la jointure à appliquer. Définissez une jointure entre les champs CodeAg
et Cd_ag.

Nous
souhaitons ici utilisez le sous-formulaire uniquement pour visualiser le
département et la ville de l'agence sélectionnée pour l’atelier à ajouter. Il
ne faut pas pouvoir modifier la valeur de ces champs.
Modifiez le formulaire pour utiliser des boîtes combinées comme
précédemment pour que les champs liés à l'agence ne soit pas modifiable. Vous
pouvez aussi supprimer les composants affichant le nom de l'agence qui sont ici
redondants.

4. Rapports
Les
rapports sont utilisés pour présenter une information issue de la base de
données aux utilisateurs. En ce sens, leur rôle est similaire à celui des requêtes.
Cependant le rôle du rapport n'est pas de présenter un résultat brut mais mis
en forme pour affichage ou impression. Il existe deux types de rapports :
Dans
ce TP, nous ne considérerons que des rapports dynamiques.
4.2. Rapport dynamique fondé sur une table
Le
premier rapport à créer va afficher les coordonnées de toutes les agences du
concessionnaire. Sélectionnez la partie
"Rapports" et cliquez sur "Utiliser l'assistant pour créer un
rapport...". La création d'un rapport passe par 6 étapes.
1.
Sélection
de champ où vous
devez sélectionner la source du rapport et les champs concernés. Sélectionnez tous les champs de la table Agence.
2.
Étiquetage
des champs où vous
devez choisir un nom d'étiquette pour chaque champ. Définissez
vos étiquettes de champ.
3.
Groupement pour définir des groupes dans les
informations à produire sur le rapport en fonction de la valeur de certains
champs. Pour l'instant, ne faites pas de groupement.
4.
Options
de tri pour choisir
les champs qui seront utilisés pour trier les résultats. Triez selon le numéro de département d'abord puis par ville
dans un même département.
5.
Composition pour choisir l'apparence du rapport. Mettez en forme selon votre goût.
6.
Créez
un rapport où vous
choisissez un nom et le type de rapport. Choisissez
un rapport dynamique.
Comme
pour les formulaires il est possible de modifier la structure du rapport après
sa génération par un click droit sur le rapport et en sélectionnant
"Modifier".

4.3. Rapport dynamique fondé sur une
requête simple
Un
rapport peut être généré à partir d'informations provenant de plusieurs tables.
Pour cela, il faut préalablement écrire une requête qui récupère l'ensemble des
informations requises en effectuant les jointures et sélections nécessaires.
Écrivez une requête qui effectue une jointure entre les tables Modele, Finition et Stock. La requête doit renvoyer les
valeurs des champs gamme, sigle, moteur et pack de tous les véhicules en
supprimant les doublons (l'objectif est de connaître toutes les combinaisons
existantes). Vérifiez que la requête fonctionne correctement.
Créez un nouveau rapport dynamique fondé sur cette requête. Dans ce
rapport, regrouper les résultats selon le nom de la finition de manière à faire
apparaître pour chaque finition les modèles qui la propose.
3.4.
Rapport dynamique fondé sur une requête paramétrée
Les
requêtes paramétrées sont des requêtes incomplètes qui nécessitent une saisie
de l'utilisateur pour leur exécution. Certaines parties de la requête sont en
effet non définis et remplacés par des paramètres dont la valeur sera demandée
à chaque exécution.
Un
paramètre est indiqué dans une requête en SQL par : suivi du nom du paramètre
qui sera utilisé pour demander une saisie à l'utilisateur. Par exemple, la
requête :
SELECT
CodeMo, Gamme FROM modele WHERE
Sortie > :Entrer_année_de_sortie
Demander
d'abord à l'utilisateur de rentrer une valeur pour le paramètre "Entrez_année_de_sortie" puis se servira de cette
valeur pour effectuer une sélection sur les modèles dont la date de sortie est
supérieure à une date donnée.
Écrivez
en SQL une requête paramétrée renvoyant le numéro, la ville et le numéro de
téléphone des agences d'un département donné, où le numéro de département est
le paramètre de la requête.


Un rapport
peut s'appuyer sur une requête paramétrée et ainsi nécessiter la saisie d'un
paramètre pour générer le rapport.
Créez un rapport dynamique fondé sur la requête précédente.
Un rapport
peut s'appuyer sur une requête paramétrée et ainsi nécessiter la saisie d'un
paramètre pour générer le rapport.
Créez un rapport dynamique fondé sur la requête précédente.
Partie
facultative (s'il vous reste du temps)
4. Liaisons entre formulaires et rapports
Il
est possible d'ajouter aux formulaires et rapports des contrôles qui n'ont pas
pour objectif de saisir des informations mais de déclencher une action. Ici par
exemple nous allons nous intéresser à l'action qui consiste à passer d'un
formulaire à un autre en cliquant sur un bouton.
Créez un nouveau formulaire en choisissant cette fois-ci l'option
"Créer un formulaire en mode Ebauche...". Ajoutez-y 3 boutons pour
(i) créez une nouvelle Agence, (ii) créez un nouveau ², (iii) voir la liste des
agences. Mettez-le formulaire en forme pour ressembler à peu près à l'image
ci-dessous. Pour cela, vous devrez éditer les propriétés des contrôles pour
modifier notamment l'étiquette des boutons.

Les
actions à effectuer suite à l'apparition d'un événement sur un contrôle sont
regroupées dans des macros écrites dans un langage propre : OpenOffice Basic.
L'objectif
de ce cours ne va pas jusqu'à la programmation en OpenOffice
Basic, aussi nous vous donnons ici les portions de code à ajouter pour réaliser
les actions souhaitées. Ouvrez le menu "Outils
-> Macros -> Gérer les Macros -> OpenOffice.org Basic". Pour
insérer un nouveau module de macros à la base, sélectionner le nom de votre
fichier puis cliquez sur Nouveau. Une boîte de dialogue s'ouvre pour éditer ce
module, pour le moment vide. Remplissez-le en copiant/collant les fonctions qui
vous sont données ici : macro-TP-CSI-5.txt.

Vous
allez vous servir des ces fonctions pour écrire une procédure permettant
d'ouvrir le formulaire d'insertion d'Agence, réalisé en début de TP. Une telle
procédure s'écrit :
Sub OuvrirNomFormulaire
(pEvenement As Variant)
OpenForm(pEvenement, "NomFormulaire")
End Sub
Où
NomFormulaire doit être remplacé par le nom
réel du formulaire à ouvrir. Pour ouvrir un rapport la syntaxe est similaire :
Sub OuvrirNomRapport
(pEvenement As Variant)
OpenReport(pEvenement, "NomRapport")
End Sub
Écrivez une procédure à la suite des fonctions fournies pour ouvrir
votre formulaire d'insertion d'Agence.
Il
ne reste plus qu'à associer cette procédure au bouton qui doit ouvrir ce
formulaire. Ouvrez le formulaire contenant les 3
boutons en mode modification. Ouvrez la boîte de dialogue des propriétés du
premier bouton et sélectionnez l'onglet Événements. En cliquant sur le bouton à
droite de l'événement "Lors du déclenchement", associer la procédure
que vous venez de créer à cet événement.
Vous
pouvez maintenant sauvegardez le tout et vérifiez que le bouton fonctionne
correctement. Terminez ce TP en créant les
procédures permettant d'ouvrir le formulaire d'insertion d’Atelier et le
rapport affichant la liste des agences et en les associant aux boutons
concernés.
_________________________________________________________________________________________________________________________________________