Vous êtes sur la page 1sur 10

Accès aux données des fichiers

I. Affichage des données

I.1 Affichage d’une rubrique de la base de données

L’affichage de la valeur peut se faire à l’aide :

- D’un champ lié automatiquement aux données. Pour cela, il suffit sous l’éditeur de faire glisser
les rubriques de la base des données vers la fenêtre. Le programme doit ensuite effectuer une
lecture du fichier pour se positionner sur l’enregistrement voulu (ordres HLitRecherche ou
HLitPremier, HLitSuivant, ...) et demander l’affichage des données (FichierVersEcran).
- D’un champ quelconque qui, après lecture du fichier concerné est rempli par une affectation
classique (Nom_champ = Nom_Fichier.Nom_rubrique)

Déjà traité dans un exercice

I.2 Affichage de plusieurs enregistrements dans un champ

L’affichage des données peut se faire à l’aide :

- D’une table (reliée au fichier),


- D’une zone répétée contenant des champs liés,
- D’une liste (liste textuelle ou liste d’images),
- D’une combo (liste déroulante).
Cf. Exercice 1 (page 5)

Les données peuvent être affichées en totalité ou faire l’objet d’une sélection (et tri). Pour n’afficher que
certains enregistrements, il y a plusieurs possibilités.

Tout d’abord, pour les tables : la présence du menu contextuel (clic droit sur l’entête des colonnes) permet
aussi à l’utilisateur de filtrer l’affichage (et de mémoriser le filtre) afin que la table soit adaptée à ses besoins.
Tester…

Autres méthodes pour filtrer les enregistrements :

- Appliquer un filtre sur le fichier (fonction HFiltre) puis redemander l’affichage du champ lié
(ordres : TableAffiche, ListeAffiche, ZoneRépétéeAffiche selon le type du champ).
Cf. Exercice 2 (page 6)

- Créer une requête puis créer un des 4 champs (table, liste, zone répétée, combo) basé sur la
requête.
Cf. Exercice 3 (page 7)

1
L’utilisation de paramètres dans une requête permet d’adapter la visualisation des données aux
besoins : pour cela, il faut ré-exécuter la requête avec le (ou les) paramètre(s) voulu(s) avec la
fonction HExécuteRequête puis redemander l’affichage du champ lié (TableAffiche, ListeAffiche,
ZoneRépétéeAffiche selon le type du champ).
Cf. Exercice 4 (page 7)

- Il est possible aussi de créer une table (ou une liste ou une zone répétée) non reliée (ni à un
fichier, ni à une requête), c’est-à-dire, remplie par programmation. Le code devra alors
parcourir le fichier concerné (ordre POUR TOUT) et, utiliser l’ordre TableAjoute (ou ListeAjoute
ou ZoneRépétéeAjoute) pour les enregistrements voulus.

I.3 Affichage de données provenant de plusieurs fichiers

L’affichage peut se faire de trois façons différentes :

- de façon automatique :
 Pour une table basée sur un fichier, il suffit qu’une colonne soit définie comme liaison multi-
fichier pour que la table affiche les données correspondant aux fichiers reliés).
 Pour une zone répétée basée sur un fichier, il suffit qu’un champ utilise la liaison multi-
fichier pour que les données correspondant aux fichiers reliés soient affichées).
Cf. Exercice 5 (page 8)

Pour autoriser la saisie et la modification des données, il faut cocher ‘Enregistrer en sortie de
ligne’ dans l’onglet détail. Remarque : il est souvent utile de n’autoriser la saisie que sur certains
éléments affichés (colonnes ou champs en les mettant en affichage uniquement).

- par requête : il faut créer une requête affichant des rubriques de plusieurs fichiers (les jointures
sur se font automatiquement). Il suffit alors de créer une table ou une zone répétée sur cette
requête.
Cf. Exercice 6 (page 9)

- par programme (pas abordé ici).

2
II. Modification des données

II.1 Modification de rubriques de la base de données par des valeurs affichées dans des champs

Deux cas :

- Pour chaque champ qui doit être sauvegardé après saisie ou modification, il faut donner sa
valeur à la rubrique concernée (Nom_Fichier.Nom_rubrique =Nom_champ)
- Pour tous les champs liés aux données : l’ordre EcranVersFichier permet en une seule fois
d’effecteur l’affectation des valeurs.

Puis dans tous les cas, il faut écrire dans le fichier concerné : HModifie(Nom_Fichier)
Attention : c’est l’enregistrement courant qui est modifié (le dernier qui a été lu).

II.2 Modification de rubriques de la base de données par des valeurs affichées dans des tables ou des
zones répétées liées à des fichiers ou des requêtes

Pour autoriser la saisie et la modification des données, il faut cocher ‘Enregistrer en sortie de ligne’ dans
l’onglet détail. Remarque : il est souvent utile de n’autoriser la saisie que sur certains éléments affichés
(colonnes ou champs en les mettant en affichage uniquement).

III. Ajout de données

III.1 Ajout d’un enregistrement contenant des valeurs affichées dans des champs

Deux cas :

- Pour chaque champ qui doit être sauvegardé après saisie ou modification, il faut donner sa
valeur à la rubrique concernée (Nom_Fichier.Nom_rubrique =Nom_champ)
- Pour tous les champs liés aux données : l’ordre EcranVersFichier permet en une seule fois
d’effecteur l’affectation des valeurs.

Puis dans tous les cas, il faut écrire dans le fichier concerné : ordre HAjoute(Nom_Fichier)

Si le fichier possède une rubrique qui sert d’identifiant automatique, sa valeur sera
automatiquement donnée. Dans le cas où l’identifiant n’est pas automatique, il faut veiller à lui
donner une valeur unique (et tester les erreurs).
Cf. Exercice 7

3
III.2 Ajout d’un enregistrement à partir de la saisie dans une table ou une zone répétée liée à des fichiers
ou des requêtes

Pour autoriser l’ajout de données, il faut cocher ‘Saisie en cascade’ dans l’onglet détail.

Cependant cette possibilité n’est souvent pas optimale car il est rare que l’ensemble des rubriques figurent
dans la table ou la zone répétée. La meilleure façon étant le III.1.

IV. Suppression de données

IV.1 Suppression d’un enregistrement contenant des valeurs affichées dans des champs

Tout d’abord, il faut être sûr que les données affichées sont synchronisées avec l’enregistrement du fichier
(aucune lecture du fichier depuis l’affichage des données). Il suffit alors de placer dans le code (souvent dans
un bouton intitulé ‘Supprimer…’) l’ordre : HSupprime(Nom_fichier).

Attention : Si les données ont étés affichées et qu’une lecture a eu lieu dans le fichier (par exemple après
l’utilisation d’un autre champ lié au fichier comme une liste ou autre), la suppression va concerner le dernier
enregistrement lu et non pas celui qui est affiché à l’écran. Il en est de même pour la modification (ordre
HModifie).

IV.2 Suppression d’un enregistrement affiché dans une ligne d’une liste ou d’une table ou dans une
cellule d’une zone répétée liée à des fichiers ou des requêtes

Il est important de savoir que la liste, la table ou la zone répétée est toujours synchronisée avec
l’enregistrement du fichier. En d’autres termes, la sélection d’une ligne ou d’une cellule entraîne que
l’enregistrement courant dans le fichier correspond à celui qui est sélectionné dans le champ.

De ce fait, il suffit de placer dans le code (souvent dans un bouton intitulé ‘Supprimer…’) l’ordre :
HSupprime(Nom_fichier).

4
Exercice 1
Créer 3 fenêtres contenant chacune un des champs suivants :

La combo est créée avec le champ ‘Combo


plus table’ (Lorsqu’elle est déroulée, les
colonnes numEtu, nom et prénom sont
affichées).

5
Exercice 2
Pour la fenêtre contenant la zone répétée, créer
un sélecteur proposant à l’utilisateur de choisir
le groupe.

Le code de modification doit placer un filtre sur la rubrique


groupe du fichier Etudiant et réafficher la zone répétée.

Fonction HFiltre (Etudiant, …)

F1 pour l’aide sur la fonction

Tester.

Rajouter l’option ‘Tous’ qui renvoie 0 et modifier le code pour désactiver le


filtre si cette option est choisie.

Fonction HDésactiveFiltre (Etudiant)

Pour la fenêtre contenant la table, créer un champ de saisie dont le code ‘A chaque modification’ est :

HFiltreCommencePar(Etudiant,Nom,MoiMême)
TableAffiche(TABLE_Etudiant,taInit)

Tester.

Modifier le code pour qu’il désactive le filtre si le champ est vide…

Pour la fenêtre contenant la liste, copier le sélecteur de groupe et le champ permettant de filtrer le nom.

Modifier le code pour que la liste soit mise à jour selon les filtres choisis.

On remarque qu’il n’est pas possible de filtrer sur deux rubriques différentes… - de même il n’est pas
possible de poser des conditions sur des rubriques qui ne sont pas clé (par exemple : la note)…
- pour cela, il faut utiliser une autre méthode (requêtes).

6
Exercice 3
Créer une requête qui renvoie la liste des étudiants du groupe 1 dont la note est supérieure à 10.

Tester. Créer maintenant une table basée sur cette requête.

Exercice 4
Modifier la requête précédente pour qu’elle utilise deux paramètres : la liste des étudiants renvoyée doit
correspondre au groupe param_Groupe ayant une note est supérieure à param_Note. Les valeurs des
paramètres seront fournies par le programme lors de l’exécution.

Tester. Créer maintenant une table basée sur cette requête.

Récupérer le sélecteur de groupe ‘Sélecteur_grp’ (supprimer son code) et créer un potentiomètre


‘potentiomètre_note’ qui va permettre de choisir la note. Créer un libellé ‘Lib_note’ dont la valeur est
affichée à chaque modification du potentiomètre.

Créer le bouton ‘Appliquer’ dont le code consiste à exécuter la requête avec les valeurs choisie :

REQ_....param_Groupe = Sélecteur_groupe
REQ_....param_Note = Potentiomètre_note
HExécuteRequête(REQ_...,hRequêteDéfaut)
ListeAffiche(LISTE_...,taDébut)

Remarque : pour ne pas tenir compte d’un des paramètres, il faut le remplacer par null lors de l’appel.

En tenant compte de cette remarque, modifier le code pour que le choix de l’option ‘Tous’ dans
Sélecteur_groupe fonctionne correctement…

7
Exercice 5
Créer une table basée sur le fichier Activité_Etudiant

Modifier maintenant la liaison de la colonne Col_numEtu


de manière à afficher le nom de l’étudiant plutôt que son
identifiant : sélectionner ‘multifichier’, sélectionner
‘numEtu’ dans la colonne ‘Fichier de base’, cliquer sur
l’icône de lien et choisir la
rubrique ‘Nom’.

Il est possible aussi de créer une colonne et de la lier ensuite. Par exemple, créer la colonne
‘Col_responsable’ pour qu’elle contienne le nom du responsable de l’activité…

Réorganiser cette table en supprimant certaines


colonnes et en créant une colonne de type
conteneur (agrandir la hauteur des lignes) dans
laquelle des champs liés sont créés :

8
Exercice 6
Créer une requête paramétrée qui permet de connaître les étudiants qui sont inscrits pour plus de
param_nbH à une activité param_activité.

Créer une table basée sur cette requête dont la présentation est la même que la table précédente (ex. 5).

Créer deux champs de votre choix pour la saisie des 2 paramètres de la requête ainsi qu’un bouton
‘Appliquer’ qui permet de prendre en compte ces paramètres.

Tester.

Exercice 7
L’objectif est de réaliser une fenêtre qui permet l’inscription des étudiants aux activités. Seuls les étudiants
non inscrits doivent figurer dans la table proposée.

Marche à suivre :

a) Créer la table Table_Inscrits qui contient tous les étudiants inscrits


aux activités. Par la suite, un filtre sera activé sur le fichier
Activité_Etudiant pour n’afficher que l’activité voulue.

b) Créer la zone répétée ZR_Activités basée sur le fichier


Activités (valeur renvoyée : ‘Activité’ pour que la sélection d’une
cellule puisse provoquer l’affichage des étudiants inscrits à cette
activité.

Coder ce champ pour activer un filtre et réafficher


Table_Inscrits… (cf. exercices précédents).

c) Créer la requête paramétrée Req_inscrits qui renvoie la liste des numéros des
étudiants inscrits à une activité donnée puis créer la requête Req_non_inscrits qui renvoie tous les
étudiants qui ne figurent pas dans la Req_inscrits.

Créer la table Table_non_inscrits basée sur la


requête Req_non_inscrits.

Modifier le code de ZR_Activités pour que la


sélection d’une cellule implique aussi la
réexécution de la requête Req_non_inscrits et
le réaffichage de Table_non_inscrits…

9
Rajouter au code de ZR_Activités la ligne suivante (pour que le titre de la table soit plus explicite) :

Table_non_inscrits..libellé = ‘‘Il y a ’’ + TableOccurrence(Table_non_inscrits)


+ ‘‘ inscrits à l’activité ’’+ ZR_Activités

d) Sous la table des non inscrits, créer les trois champs suivants :

- un champ pour la saisie


de la durée (type entier)
- une image qui affiche la
photo de l’étudiant
sélectionné
- un bouton ‘Btn_inscrire’
qui va permettre d’effectuer l’inscription de l’étudiant à l’activité choisie.

e) Codage :
- La sélection d’un étudiant doit afficher sa photo,
- Le bouton Btn_inscrire doit avoir un libellé explicite par exemple ‘Vélo : Inscrire Tyra Banks’ si
c’est l’activité vélo et Tyra Banks qui sont sélectionnés.
- Le bouton Btn_inscrire doit être grisé si le champ de saisie de la durée est vide ou égal à 0.
- Le code du bouton Btn_inscrire consiste à - affecter les rubriques Activité, Nb_Heures et numEtu
avec les données saisies - ajouter un enregistrement dans le fichier concerné et – réafficher les
tables pour montrer que l’ajout à bien été fait.

f) Créer et coder un bouton permettant de supprimer une inscription.

10

Vous aimerez peut-être aussi