Académique Documents
Professionnel Documents
Culture Documents
- 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)
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…
- 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.
- 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)
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.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.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 :
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.
Tester.
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.
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.
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.
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
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é…
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 :
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.
9
Rajouter au code de ZR_Activités la ligne suivante (pour que le titre de la table soit plus explicite) :
d) Sous la table des non inscrits, créer les trois champs suivants :
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.
10