Initiation aux bases de donnes et la programmation vnementielle - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Initiation aux bases de donnes et la programmation vnementielle

Description:

alors la table Livraison va tre la table p re et la table Commande ... si la largeur d'un champ est z ro cm, alors la valeur du champ n'est pas affich e (mais ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 29
Provided by: bernard111
Category:

less

Transcript and Presenter's Notes

Title: Initiation aux bases de donnes et la programmation vnementielle


1
Initiation aux bases de donnéeset à la
programmation événementielle
  • VBA sous ACCESS
  • Cours N 5

Support de cours rédigé par Bernard
COFFIN Université Paris 10 Nanterre
2007/2008
2
Lien logique
Rappels (Cf. cours N 2)
  • un lien logique établit que des enregistrements
    de deux relations sont complémentaires
  • à un enregistrement de la première table, on
    associe n (plusieurs) enregistrements de la
    seconde, alors quà un enregistrement de la
    seconde on nassocie quun seul enregistrement de
    la première
  • le lien doit être réalisé à laide de la clef
    primaire de la table père et dune clef externe
    de la table fils

on parle dun lien père / fils
3
Rappel La clef primaire est un champ qui ne
peut pas prendre la même valeur pour deux
enregistrements différents de la table
Le plus simple est de laisser à ACCESS le soin de
gérer ses valeurs en la déclarant  NuméroAuto 
Le type de la clef externe de la table fils doit
être exactement le même que celui de la clef
primaire de la table père
Si elle existe (nest pas Null), la valeur de la
clef externe de la table fils doit toujours être
égale à la valeur de la clef primaire dun
enregistrement existant de la table père
La clef externe ne peut être non renseignée
(Null) que dans des cas rares et très précis de
traitements
4
Autoriser que la valeur de la clef externe (table
fils) ne soit pas renseignée (Null) signifie que
le champ  père  est créé après les champs
 fils  ou bien que le lien décrit une
information qui apparaît après la création des
enregistrements père et fils
5
  • Exemple 1 Le champ père sert à définir un point
    commun (entre les fils) qui apparaît après leur
    création
  • dans une table on décrit des commandes
  • dans une deuxième table, on décrit des
    livraisons
  • supposons quune livraison puisse concerner
    plusieurs commandes
  • alors la table Livraison va être la table père
    et la table Commande sera la table fils
  • la clef externe de la table Commande ne doit pas
    être renseignée (Null) au moment de la création
    de lenregistrement (une commande)
  • elle sera mise à jour lors de la création de la
    livraison (concernant n commandes)

6
  • Exemple2 Le lien décrit un événement qui
    napparaît quaprès la création du père et du
    fils
  • dans une table on décrit des uvres dart
  • dans une deuxième table, on décrit des
    collectionneurs
  • un collectionneur peut posséder plusieurs
    uvres, mais elles nont quun propriétaire
  • la table tabCollectionneur est la table père et
    la table tabOeuvre est la table fils
  • la clef externe de la table tabuvre ne doit
    pas être renseignée (Null) au moment de la
    création de lenregistrement (réalisation de
    luvre) elle sera mise à jour au moment de la
    vente de luvre

7
En dehors de cas particuliers comme ceux-là, la
clef externe de chaque enregistrement de la table
fils doit toujours être renseignée et égale à la
clef primaire dun enregistrement existant de la
table père
Si la valeur dune clef externe dun
enregistrement est renseignée mais nest pas
égale à la clef primaire dun enregistrement
existant, alors la base de données est
INCOHÉRENTE !
8
Garantir la cohérence de la BD
  • Ne pas attribuer à une clef externe une valeur
    sans être certain quelle est égale à la clef
    primaire dun enregistrement existant
  • Ne pas supprimer un enregistrement de la table
    père tant quil est lié à au moins enregistrement
    de la table fils
  • On ne modifie pas la valeur dune clef primaire !

9
Loutil  relations  dACCESS
ACCESS propose un outil nommé  relations  mais
il ne sagit pas de relations au sens de
lalgèbre relationnelle ! Permet de définir des
jointures par défaut (utilisées avec lassistant
de construction de requête hors programme de ce
cours, rappelons le) Permet dimposer des
 contraintes dintégrité  à ces relations par
défaut
10
Loutil  relations  dACCESS
Lergonomie des traitements (derreurs) est
souvent médiocre Ne pas utiliser cet outil qui
nest pas au programme du cours et de lexamen
! Il faut prévoir les traitements nécessaires au
maintien de la cohérence de la base
11
Gestion de la cohérence par lapplication
Trois possibilités à choisir en fonction de
critères ergonomiques
  • Saisir la valeur de la clef externe, puis
    vérifier quelle correspond bien à la clef
    primaire dun enregistrement existant

Utilisation dun sous-formulaire indépendant pour
afficher lenregistrement père
12
Gestion de la cohérence par lapplication
  • Utiliser un objet complexe lié aux deux tables
    les enregistrements créés sont alors forcément
    cohérents lors de la création (mais on est ramené
    au problème précédent en cas de modification par
    une autre interface)

Utilisation dun Sous-formulaire lié à la table
fils (le formulaire principal étant, lui, lié à
la table père)
13
Gestion de la cohérence par lapplication
  • Plutôt que de saisir la clef externe, se
    rattacher à un enregistrement choisi parmi ceux
    qui existent dans la base

Utilisation dans un formulaire lié à la table
fils dune Zone de liste déroulante permettant
dafficher les enregistrements pères possibles et
de sélectionner le bon
14
La zone de liste déroulante
Appelée aussi zone de liste modifiable
Un contrôle des formulaires
Objet lié à un ensemble de valeurs complexes
Nous utiliserons toujours les enregistrements
dune relation définie par une requête
La zone de liste déroulante permet de
sélectionner un des enregistrements (de la
relation liée) parmi les autres
15
La zone de liste déroulantePrincipales propriétés
  • Valeur / Value
  • dépend de lenregistrement sélectionné
  • peut être modifiée par VBA dans ce cas
    lenregistrement sélectionné (affiché) est mis à
    jour automatiquement

16
La zone de liste déroulantePrincipales propriétés
  • Contrôle source / ControlSource
  • la valeur du champ lié est égale à la valeur de
    la zone de liste déroulante
  • on utilise la zone de liste déroulante pour
    gérer la valeur de la clef externe

17
La zone de liste déroulantePrincipales propriétés
  • Contenu / RowSource (row rangée)
  • pour nous, uniquement une relation décrite par
    une requête sélection
  • calculée lors du chargement du formulaire
  • recalculée par programmation à laide de la
    méthode Requery de lobjet

Attention ne pas confondre les propriétés
contenu et valeur de la zone de liste !
18
La zone de liste déroulantePrincipales propriétés
  • Colonne liée / BoundColumn
  • colonne champ !
  • les champs de la requête sont numérotés à partir
    de la gauche en commençant à 1
  • la valeur de zone de liste déroulante est égale
    à la valeur du champ repéré par la propriété
     colonne liée 

19
La zone de liste déroulantePrincipales propriétés
  • Colonne liée / BoundColumn
  • si la valeur de la propriété  colonne liée 
    est égale à zéro, alors la valeur de la zone de
    liste est égale au numéro dordre de
    lenregistrement sélectionné dans la relation
    (les enregistrements sont numérotés à partir de
    zéro)

20
La zone de liste déroulantePrincipales propriétés
  • Nbre colonnes / ColumnCount
  • nombre de champs affichables dans la zone de
    liste déroulante (le plus souvent cest le nombre
    de champs de la relation décrite par la requête)

21
La zone de liste déroulantePrincipales propriétés
  • Largeurs colonnes / ColumnWidths
  • donne la largeur de laffichage de chacun des
    champs (de gauche à droite dans lordre de la
    requête)
  • si la largeur dun champ est zéro cm, alors la
    valeur du champ nest pas affichée (mais elle est
    disponible quand même !)
  • pendant la sélection, tous les champs
    affichables sont visibles
  • sinon, seul le premier champ affichable (largeur
    gt0) est visible

22
Un contenu classé
La zone de liste déroulante permet de
sélectionner un des enregistrements (de la
relation liée) parmi les autres Pour que la
recherche de lenregistrement désiré soit
efficace, il faut trier les enregistrements de la
relation Utiliser la clause Order By Il suffit
de taper les premiers caractères de la valeur
cherchée pour se déplacer dans le jeu
denregistrements on termine la recherche en
visualisant les enregistrements voisins
23
Exemple dutilisation formulaire de saisie dun
enregistrement dune table  fils 
Table  père  tabFormation Champs N
formation NuméroAuto clef primaire Nom
formation Texte de 50 caractères Niveau
Entier Long 1, 2, 3 pour une licence
1, 2 pour un master
24
Exemple dutilisation formulaire de saisie dun
enregistrement dune table  fils 
Table  fils  tabEtudiant Champs N
étudiant NuméroAuto, clef primaire Nom
Texte de 50 caractères Prénom Texte de 50
caractères Formation suivie Entier Long
clef externe Source du formulaire de saisie dun
étudiant Select From tabEtudiant
25
Il faut gérer le lien avec la table  père 
donc le contrôle lié doit être la clef externe
Numéro dordre du champ qui donne la valeur de la
zone de liste soit N Formation
Formation suivie
Il faut pouvoir sélectionner un enregistrement de
la table  père , donc
26
Le premier champ N Formation ne doit pas être
affiché sa largeur est 0cm Le deuxième champ
Nom formation est affiché en permanence sur
5cm Le troisième champ Niveau est affiché
seulement pendant la sélection sur 2cm
Remplacer la valeur par défaut (1) par le nombre
de champs de la requête (contenu)
3
0cm
5cm
2cm
27
(No Transcript)
28
Si on veut que le nom et le niveau de la
formation soient affichés en permanence, alors il
faut modifier la requête qui décrit le
 contenu  de la zone de liste en utilisant un
champ calculé Select N Formation, Nom
formation " / " Niveau From tabFormation
Order By Nom formation, Niveau
Pour une meilleure présentation en mode
sélection, modifier aussi les propriétés  Nbre
colonnes  et  Largeurs colonnes 
Write a Comment
User Comments (0)
About PowerShow.com