Initiation aux bases de données et à la programmation événementielle

Slides:



Advertisements
Présentations similaires
Portée des variables VBA & Excel
Advertisements

Story-board version 1.1 Statut : à valider Rédacteur : Nicole Djuissi
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
ACCESS Découverte.
Comprendre l’ergonomie du module STSWEB
INITIATION à la PROGRAMMATION STRUCTUREE
Autorisations Utilisation eCATT
TP 3-4 BD21.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Initiation aux bases de données et à la programmation événementielle
Gestion de la communication par établissement sur le site ville
Cours n°3 Les formulaires
Initiation au système d’information et aux bases de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Développement d’applications web
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Aide-mémoire – FORMULAIRE Web DA/DT
Par Fabrice Pasquier Cours IV
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Gestion des systèmes d’information
Initiation aux bases de données et à la programmation événementielle
Auto Exterior Scoop SQP PROCESSUS 24 juillet 2006 Version validée V01.
1 Initiation aux bases de données et à la programmation événementielle Cours N°9 : Gestion de la cohérence avec des sous-formulaires. Support de cours.
L’utilisation des bases de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
FICHIERS : Définition : Algorithme général:
Structure et Services « STS » Menu Structures : Divisions
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Modèle Logique de Données (MLD)
Initiation à la conception des systèmes d'informations
Initiation MS Access 2010 Requêtes - Sélection (travail en autonomie)
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Menu Structure : Divisions Diffusion Nationale TOULOUSE – Décembre 2008 Structure et Services « STS » Menu Structures : Divisions.
L. Gzara, E. Khouri, M Tollenaere 1 MSI 2A ICL – Initiation ACCESS Interfaces 2014 Initiation MS Access 2010 Interfaces – Formulaires Dynamique des données.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024.
Jean Paul CHANLON IUT1 Grenoble Génie Mécanique et Productique
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Saisie des absences en salles de classes par les enseignants
Informatique de Gestion part II – the dark macro
Comprendre le SGBDR Microsoft Access – partie 2
Une aide pour débutant éclairé
Chapitre 3 La programmation de bases de données Access en Visual Basic
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 10 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 5 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 12 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 11 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 6 Support de cours rédigé par Bernard COFFIN Université.
Initiation aux bases de données et à la programmation événementielle Outil de création des tables Support de TD rédigé par Bernard COFFIN Université Paris.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 9 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 8 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 7 Support de cours rédigé par Bernard COFFIN Université.
La création des données d’exemplaire pour un exemplarisateur.
1 Initiation aux bases de données et à la programmation événementielle Construction d’un état Support de TD rédigé par Bernard COFFIN Université Paris.
Transcription de la présentation:

Initiation aux bases de données et à la programmation événementielle Cours N°10 : Ergonomie, déplacement et recherche. Support de cours de Soheib BAARIR*. Page web : pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/support.htm E-mail : souheib.baarir@u-paris10.fr Université Paris Ouest Nanterre la Défense. 2009-2010. * Adapté du cours de B. COFFIN. Reproduction interdite sans autorisation écrite de l’auteur.

Ergonomie des traitements Ergonomie : étude de l’interaction homme / ordinateur. Les choix des composantes d’une interface sont importants. Pour construire le schéma d’un formulaire, il faut se demander : Quelles sont les informations qui doivent être saisies ? Quelles sont les informations qu’il faut communiquer à l’utilisateur pour qu’il puisse agir comme il faut ? Quels sont les événements qui doivent ou peuvent se produire ?

Exemple : enregistrement d’une nouvelle commande (1/2) tabProduit CP : Code produit Nom produit Prix Unitaire tabClient CP : N° client Nom client Adresse Problème : créer un enregistrement de tabCommande, n enregistrements de tabLien_Cde_Pdt les liens logiques les concernant tabCommande CP : N° Commande CE : Réf Client Date commande tabLien_Cde_Pdt CP :CE : Réf Commande CE : Réf Produit Quantité commandée

Exemple : enregistrement d’une nouvelle commande (2/2) Le couple formulaire et sous-formulaire liés permet de créer un enregistrement de la table père, les n enregistrements de la table fils et les n occurrences correspondantes du lien logique La zone de liste déroulante permet de gérer facilement les liens logiques vers les enregistrements de tabClient et tabProduit (enregistrements existant avant l’utilisation du formulaire)

Recherche d’enregistrements : Approche non automatique Source du formulaire = ensemble d’enregistrements. Enregistrement actif : par défaut le premier de la relation. Les boutons de commande de la fenêtre du formulaire permettent de changer d’enregistrement actif. Un jeu de boutons pour le formulaire et un autre pour le sous-formulaire

Recherche d’enregistrements : approche automatique On peut aussi programmer ces changements d’enregistrement actif. Utilisation de méthodes : les mouvements commandés par les boutons du formulaire sont des actions ACCESS. pour les programmer en VBA, on utilise des méthodes de l’objet DoCmd.

La méthode GotoRecord de DoCmd Record = enregistrement. GotoRecord → atteindre un enregistrement dans la relation liée à un objet. DoCmd.GotoRecord type_Objet, Nom_Objet, mode_déplacement Constante ACCESS. acFirst, acLast, acPrevious, acNext (par défaut), acNewRec. Constante ACCESS. acDataForm pour un formulaire. par défaut, l’objet actif. chaîne de caractères. par défaut, l’objet actif.

Exemples : GotoRecord Rendre actif l’enregistrement suivant (du formulaire actif) DoCmd.GotoRecord , , acNext Rappel : il s’agit d’une méthode de l’objet DoCmd Le premier, et le deuxième arguments ne sont pas décrits, c’est la valeur par défaut qui est prise Ouvrir un formulaire (appelé forSaisie dans cet exemple) et se préparer à ajouter un enregistrement. DoCmd.OpenForm "forSaisie" DoCmd.GotoRecord , , acNewRec La méthode rend le formulaire actif Donc les valeurs par défaut des deux premiers arguments sont adaptées au traitement souhaité Si le formulaire forSaisie est déjà ouvert (mais n’est pas le formulaire actif) ? DoCmd.GoToRecord acDataForm, "forSaisie", acNewRec

Gestion des erreurs ! Que se passe-t-il si on essaye d’atteindre un enregistrement qui n’existe pas ? La gestion standard (par le système) : affichage d’un message et fin du traitement. Il est possible de gérer soi-même la réaction de l’application en cas d’erreur. Utiliser (en VBA) la condition « On error GoTo étiquette » en début de procédure. Puis, décrire le traitement à effectuer en repérant la première instruction par l’étiquette.

Exemples : Gestion des erreurs ! Programmation d’un bouton (appelé btPrécédent pour l’exemple) de commande qui permet d’atteindre l’enregistrement précédent ; en cas d’erreur : Atteindre le dernier enregistrement. Private Sub btPrécédent_Click() On Error GoTo suite DoCmd.GoToRecord , , acPrevious Exit Sub suite: DoCmd.GoToRecord , , acLast End Sub Ne rien faire. On Error Resume Next Étiquette – nom symbolique donné à une instruction pour la repérer parmi les autres Fin d’exécution de la procédure événementielle : il ne faut pas exécuter le traitement prévu en cas d’erreur. Ne pas oublier « Next », sinon on relance l’instruction qui a provoqué l’erreur, et… le programme ne s’arrête jamais !

La méthode FindRecord do DoCmd Record = enregistrement FindRecord → trouver un enregistrement dans la relation liée à un objet qui est obligatoirement l’objet actif. Mais la méthode s’applique à l’objet DoCmd ! DoCmd.FindRecord QueRechercher, OùChercher, RespecterCasse, QuelleDirection, RespectFormat, QuelChamp, ApartirDe constante ACCESS, acAnywhere, acEntire, acStart. Booléen true, False. Expression, la méthode recherche la valeur de l’expression dans les enregistrements de la relation. L’argument par défaut est en rouge Booléen True (à partir du premier), False (à partir de l’enregistrement qui suit l’enregistrement actif). Booléen True (champ actif), False (tous les champs). constante ACCESS, acDown, acSearchAll, acUp. Booléen true, False.

Exemple : schéma de la base de données tabEpreuve CP : N° Epreuve CE : Réf Classe Nom épreuve Date épreuve tabClasse CP : N° Classe Niveau Indice tabElève CP : N° Elève CE : Réf Classe Nom élève Prénom élève tabNote CP :CE : Réf Elève CE : Réf Epreuve Note

Exemple : construction d’un formulaire de saisie des notes Ergonomie Sélection de la classe Sélection de l’épreuve Sélection de l’élève Affichage de la note si elle a déjà été saisie (modification), création d’un enregistrement de tabNote sinon, et saisie de la note Solution adoptée Zone de liste déroulante dont le contenu est celui de tabClasse. celui des enregistrements de tabEpreuve reliés à l’enregistrement de tabClasse sélectionné (prévoir « Requery »). celui des enregistrements de tabElève reliés à l’enregistrement de tabClasse sélectionné (prévoir « Requery »). Sous-formulaire indépendant du formulaire principal (pas de lien champ père – champ fils) dont la source est la relation constituée par les champs de tabNote liés à l’enregistrement de tabEpreuve sélectionné (prévoir « Requery »); utilisation des déplacements dans la relation source.

Exemple : Résultat à obtenir (1/3)

Exemple : Résultat à obtenir (2/3)

Exemple : Résultat à obtenir (3/3)

Exemple : construction du formulaire Saisie_note (sous-formulaire du formulaire principal) Source : SELECT [Réf élève], [Réf épreuve], Note, [Nom élève] & " " & [Prénom élève] AS Identité FROM tabNote INNER JOIN tabElève ON tabNote.[Réf élève]=tabElève.[N° élève] WHERE tabNote.[Réf épreuve]=forms!saisie_des_notes!zlChoix_épreuve.value ORDER BY [Nom élève], [Prénom élève]; 3 zones de textes liées, avec des propriétés de « format » d’affichage différentes En exploitation, la zone de texte ztRéf_élève sera « transparente » pour l’utilisateur : Couleur de police = couleur de fond Et Private Sub ztRéf_élève_Click() ztNote.SetFocus End Sub

Exemple : Construction du formulaire Enregistrement_des_notes (formulaire principal) Source : formulaire indépendant, donc la propriété Source n’est pas renseignée 3 zones de listes déroulantes pour faire les choix prévus dans la description de l’ergonomie de l’interface Sous-formulaire sfNote Objet source : Saisie_note Pas de lien champs pères / fils

Exemple : Sélection de la classe Source contrôle : est Null Contenu : SELECT [N° classe], Niveau & " / " & Indice FROM tabClasse ORDER BY Niveau, Indice; Colonne liée : 1 Pour éviter un affichage incohérent Private Sub zldChoix_classe_GotFocus() zldChoix_épreuve.Value = Null zldChoix_élève.Value = Null sfNote.Requery End Sub Zone de liste déroulante zldChoix_classe Mise à jour des contenus des 2 autres listes Private Sub zldChoix_classe_AfterUpdate() zldChoix_épreuve.Requery zldChoix_élève.Requery End Sub

Exemple : Sélection de l’épreuve Source contrôle : est Null Contenu : SELECT [N° épreuve], [Nom épreuve] & " / " & [Date épreuve] FROM tabEpreuve WHERE [Réf classe]=zldChoix_classe.Value ORDER BY [Nom épreuve], [Date épreuve]; Colonne liée : 1 Pour éviter un affichage incohérent Private Sub zldChoix_épreuve_AfterUpdate() sfNote.Requery zldChoix_élève.Value = Null End Sub Zone de liste déroulante zldChoix_épreuve

Exemple : Sélection de l’élève (1/2) Source contrôle : est Null Contenu : SELECT [N° élève], [Nom élève] & " " & [Prénom élève] FROM tabElève WHERE [Réf classe]=zldChoix_classe.Value ORDER BY [Nom élève], [Prénom élève]; Colonne liée : 1 Zone de liste déroulante zldChoix_classe

Exemple : Sélection de l’élève (2/2) Private Sub zldChoix_élève_AfterUpdate() If IsNull(zldChoix_épreuve.Value) Then 'Il faut sélectionner l'épreuve ! zldChoix_épreuve.SetFocus: Exit Sub End If If IsNull(sfNote![Réf élève]) Then ' Au cas où la relation liée serait vide sfNote!ztRéf_élève.Value = zldChoix_élève.Value sfNote!ztNote.SetFocus: Exit Sub sfNote.SetFocus sfNote!ztRéf_élève.SetFocus ' Le champ [Réf_élève] doit être actif DoCmd.GoToRecord , , acNewRec ' Pour être prêt à une création si on ne trouve pas l'élève DoCmd.FindRecord zldChoix_élève.Value ' Recherche de l'élève pour éviter les doublons (interdits) If IsNull(sfNote![Réf élève]) Then ' On est en création sfNote!ztNote.SetFocus End Sub On a bien mis à jour [Réf élève], mais [Réf épreuve] ?

Mise à jour de la relation du sous-formulaire. Exemple : Mise à jour de la relation du sous-formulaire. Pas de gestion automatique par le couple champs pères / champs fils !  Il faut donc programmer la mise à jour. Dans le formulaire Saisie_note (objet source du sous-formulaire) on utilise la procédure événementielle : Private Sub Form_BeforeInsert(Cancel As Integer) [Réf épreuve] = Forms!Enregistrement_des_notes!zldChoix_épreuve.Value End Sub