Initiation aux bases de donn - PowerPoint PPT Presentation

1 / 23
About This Presentation
Title:

Initiation aux bases de donn

Description:

Enregistrement actif : par d faut le premier de la relation. ... Si le formulaire forSaisie est d j ouvert (mais n'est pas le formulaire actif) ... – PowerPoint PPT presentation

Number of Views:127
Avg rating:3.0/5.0
Slides: 24
Provided by: bernard48
Category:
Tags: actif | aux | bases | donn | initiation

less

Transcript and Presenter's Notes

Title: Initiation aux bases de donn


1
Initiation aux bases de données et à la
programmation événementielle
  • Cours N10
  • Ergonomie, déplacement et recherche.

Support de cours de Soheib BAARIR. Page web
pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/su
pport.htm E-mail souheib.baarir_at_u-paris10.fr
Université Paris Ouest Nanterre la
Défense. 2009-2010. Adapté du cours de B.
COFFIN. Reproduction interdite sans autorisation
écrite de lauteur.
2
Ergonomie des traitements
Ergonomie étude de linteraction homme /
ordinateur.
  • Les choix des composantes dune interface sont
    importants.
  • Pour construire le schéma dun formulaire, il
    faut se demander
  • Quelles sont les informations qui doivent être
    saisies ?
  • Quelles sont les informations quil faut
    communiquer à lutilisateur
  • pour quil puisse agir comme il faut ?
  • Quels sont les événements qui doivent ou peuvent
    se produire ?

3
Exemple enregistrement dune nouvelle commande
(1/2)
  • Problème créer
  • un enregistrement de tabCommande,
  • n enregistrements de tabLien_Cde_Pdt
  • les liens logiques les concernant

4
Exemple enregistrement dune 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 lutilisation du
formulaire)
5
Recherche denregistrements Approche non
automatique
  • Source du formulaire ensemble
    denregistrements.
  • Enregistrement actif par défaut le premier de
    la relation.
  • Les boutons de commande de la fenêtre du
    formulaire
  • permettent de changer denregistrement actif.

Un jeu de boutons pour le formulaire et un autre
pour le sous-formulaire
6
Recherche denregistrements approche automatique
  • On peut aussi programmer ces changements
  • denregistrement 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 lobjet DoCmd.

7
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, lobjet actif.
  • chaîne de caractères.
  • par défaut, lobjet actif.

8
Exemples GotoRecord
  • Rendre actif lenregistrement suivant (du
    formulaire actif)
  • DoCmd.GotoRecord , , acNext
  • 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
    nest pas le formulaire actif) ?
  • DoCmd.GoToRecord acDataForm, "forSaisie",
    acNewRec

9
Gestion des erreurs !
  • Que se passe-t-il si on essaye datteindre un
    enregistrement qui
  • nexiste pas ?
  • La gestion standard (par le système) affichage
    dun message et fin
  • du traitement.
  • Il est possible de gérer soi-même la réaction de
    lapplication en cas
  • derreur.
  • 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.

10
Exemples Gestion des erreurs !
  • Programmation dun bouton (appelé btPrécédent
    pour lexemple) de
  • commande qui permet datteindre
    lenregistrement précédent en cas
  • derreur
  • 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.
  • Private Sub btPrécédent_Click()
  • On Error Resume Next
  • DoCmd.GoToRecord , , acPrevious
  • End Sub

Ne pas oublier  Next , sinon on relance
linstruction qui a provoqué lerreur, et le
programme ne sarrête jamais !
11
La méthode FindRecord do DoCmd
  • Record enregistrement
  • FindRecord ? trouver un enregistrement dans la
    relation liée à un objet qui est
    obligatoirement lobjet actif.
  • Mais la méthode sapplique à lobjet 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
  • lexpression
  • dans les
  • enregistrements
  • de la relation.

Largument par défaut est en rouge
  • Booléen
  • True (à partir du premier),
  • False (à partir de
  • lenregistrement qui suit
  • lenregistrement actif).
  • Booléen
  • True (champ actif),
  • False (tous les champs).
  • constante ACCESS,
  • acDown,
  • acSearchAll,
  • acUp.
  • Booléen
  • true,
  • False.

12
Exemple schéma de la base de données
13
Exemple construction dun formulaire de saisie
des notes
  • Solution adoptée
  • Zone de liste déroulante dont le contenu est
  • celui de tabClasse.
  • Zone de liste déroulante dont le contenu est
  • celui des enregistrements de tabEpreuve
  • reliés à lenregistrement de tabClasse
  • sélectionné (prévoir  Requery ).
  • Zone de liste déroulante dont le contenu est
  • celui des enregistrements de tabElève reliés à
  • lenregistrement 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 à
  • lenregistrement de tabEpreuve sélectionné
  • (prévoir  Requery ) utilisation des
  • déplacements dans la relation source.
  • 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 dun enregistrement de
    tabNote sinon, et saisie de la note

14
Exemple Résultat à obtenir (1/3)
15
Exemple Résultat à obtenir (2/3)
16
Exemple Résultat à obtenir (3/3)
17
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èvetabElève.N élève WHERE
tabNote.Réf épreuveforms!saisie_des_notes!zlCho
ix_épreuve.value ORDER BY Nom élève, Prénom
élève
3 zones de textes liées, avec des propriétés de
 format  daffichage différentes
En exploitation, la zone de texte ztRéf_élève
sera  transparente  pour lutilisateur
Couleur de police couleur de fond Et
Private Sub ztRéf_élève_Click()
ztNote.SetFocus End Sub
18
Exemple Construction du formulaire
Enregistrement_des_notes (formulaire principal)
Source formulaire indépendant, donc la
propriété Source nest pas renseignée
3 zones de listes déroulantes pour faire les
choix prévus dans la description de lergonomie
de linterface
Sous-formulaire sfNote Objet source
Saisie_note Pas de lien champs pères / fils
19
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.Val
ue 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
20
Exemple Sélection de lépreuve
Source contrôle est Null Contenu
SELECT N épreuve, Nom épreuve " / "
Date épreuve FROM tabEpreuve
WHERE Réf classezldChoix_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
21
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
classezldChoix_classe.Value ORDER BY Nom
élève, Prénom élève Colonne liée 1
Zone de liste déroulante zldChoix_classe
22
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.SetF
ocus 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 End If 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!ztRéf_élève.Value
zldChoix_élève.Value End If sfNote!ztNote.SetFoc
us End Sub
On a bien mis à jour Réf élève, mais Réf
épreuve ?
23
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_not
    es!zldChoix_épreuve.Value
  • End Sub
Write a Comment
User Comments (0)
About PowerShow.com