La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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. Support.

Présentations similaires


Présentation au sujet: "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. Support."— Transcription de la présentation:

1 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. Support de cours de Soheib BAARIR*. Page web : pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/support.htm Université Paris Ouest Nanterre la Défense * Adapté du cours de B. COFFIN. Reproduction interdite sans autorisation écrite de lauteur.

2 2 Un lien logique établit que des enregistrements de deux relations (tables) sont complémentaires. À un enregistrement de la première table, on associe 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 alors dun lien logique père/fils Rappel et compléments : lien logique (1/3)

3 3 La valeur de la clef externe de la table fils doit : soit être égale à la valeur de la clef primaire dun enregistrement existant de la table père, soit (dans des cas particuliers) être Null. 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». Rappel et compléments : lien logique (2/3)

4 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. Rappel et compléments : lien logique (3/3)

5 5 Dans une table on décrit des Commandes. Dans une deuxième table, on décrit des Livraisons. Une livraison peut 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 plusieurs commandes). Cas 1 : Le champ père sert à définir un point commun, entre les fils, qui apparaît après leur création.

6 6 Dans une table on décrit des œuvres dart. Dans une deuxième, on décrit des collectionneurs. Un collectionneur peut posséder plusieurs œuvres, mais elles nont quun propriétaire : la table Collectionneur est la table père et la table Œuvre est la table fils. la clef externe de la table Œuvre ne doit pas être renseignée (Null) au moment de la création de lenregistrement (réalisation de lœuvre). elle sera mise à jour au moment de la vente de lœuvre Cas 2 : le lien décrit un événement qui napparaît quaprès la création du père et du fils

7 7 En dehors des deux cas particuliers, 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 ! Première conclusion.

8 8 1.Ne pas attribuer à une clef externe une valeur sans être certain quelle est égale à la clef primaire dun enregistrement existant. 2.Ne pas supprimer un enregistrement de la table père tant quil est lié à au moins enregistrement de la table fils. 3.Ne pas modifier la valeur dune clef primaire ! Garantir la cohérence de la BD

9 9 Gestion par imposition dune contraintes dintégrité CREATE TABLE Article ( [code article] Autoincrement NOT NULL, [prix article] INT, [date fabrication] DATE, [référence fournisseur] INT NOT NULL, CONSTRAINT A1 PRIMARY KEY ([code article]), CONSTRAINT A2 FOREIGN KEY ([référence fournisseur]) REFERENCES fournisseur ([N° Siret]) ) Une valeur insérée dans le champ [référence fournisseur] de la table article doit obligatoirement exister comme clé primaire de la table fournisseur (le champ [N° Siret])

10 10 Gestion de la cohérence par lapplication. Plusieurs possibilités (à choisir en fonction de critères ergonomiques) : 1.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. 2.Saisir la valeur de la clef externe, puis vérifier quelle correspond bien à la clef primaire dun enregistrement existant. Utilisation de : formulaire/Sous-formulaire liés.

11 11 Exemple : gestion par zone de liste déroulante.

12 12 La zone de liste déroulante Cest un contrôle que lon peut insérer dans un formulaire Cest un objet lié à un ensemble de valeurs : 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.

13 13 Contenu / RowSource : Pour notre utilisation, 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. La zone de liste déroulante : la propriété Contenu Avec VBA

14 14 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 ». La zone de liste déroulante : la propriété Colonne liée

15 15 Contrôle source / ControlSource : Utiliser pour gérer la valeur de la clef externe. À chaque instant, la valeur du champ lié est égale à la valeur de la zone de liste déroulante (colonne liée). La zone de liste déroulante : la propriété Contrôle source

16 16 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 de « 0 cm », alors la valeur du champ nest pas affichée : pendant la sélection, tous les champs affichables sont visibles, sinon, seul le premier champ affichable (largeur >0) est visible. La zone de liste déroulante : la propriété Largeurs colonnes

17 17 Astuce… 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. Ainsi, il suffit de taper les premiers caractères de la valeur cherchée pour se déplacer dans le jeu denregistrements.


Télécharger ppt "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. Support."

Présentations similaires


Annonces Google