Aperçu des sections

  • C. Clé étrangère

    Pour relier les données de 2 tables, il faut créer une relation entre les deux. Des champs spécifiques dans chacune des deux tables reliées sont nécessaires pour cette opération. Dans la table principale, il s'agit de la clé primaire et dans l'autre table de la clé étrangère.

      onglet "création"
    groupe "relations"
    (5ème bloc)
    <clic g> sur
    <faire glisser> une à une les tables du volet droit vers le volet central
    ou <clic g> sur
    sélectionner les tables à a jouter
    <clic g> sur
    Les tables s'affichent (avec leurs éventuelles relations)
    <clic g> sur

     Attribuer le même nom à des champs contenant les mêmes données (clé primaire d'une table et clé étrangère de l'autre) pour les identifier facilement

    Une fois les tables affichées, les relations sont créées graphiquement.

    bouton gauche
    Dans la fenêtre relation
    <faire glisser> le champ "clé étrangère" d'une table vers le champ "clé primaire" de l'autre ou l'inverse (
    la boite de dialogue de relation s'affiche)
    appliquer si nécessaire l'intégrité référentielle
    <clic g> sur  
    la relation est symbolisée par une ligne de jonction entre les 2 champs

     

    paramètres

    *     L'intégrité référentielle contrôle l'intégrité des relations et prémunit contre l'apparition de données incohérentes

    *     Mise à jour en cascade des enregistrements de même valeur de clé étrangère
    (option conseillée)

    *     Effacer en cascade les enregistrements de même valeur de clé étrangère
    (option dangereuse si utilisée à tort)

     

     À tout moment des relations peuvent être ajoutées, ou supprimées ; mais il est indispensable de définir les relations entre les tables avant de créer formulaires, requêtes et états

      Une seule relation entre deux mêmes tables est autorisée. Une table, dont la clé primaire est reliée à d'autres tables, ne pourra pas être détruite, sauf si ces dernières le sont déjà ou que la relation ait été supprimée. Les champs reliés ne peuvent pas être détruits

    type de relations :

    *     une définit une relation "une à une" entre les deux tables. Chaque enregistrement de la table source est associé à un seul enregistrement de la table destination.

    *     plusieurs définit une relation "une à plusieurs" entre deux tables. Chaque enregistrement de la table source peut être associé à plusieurs enregistrements de la table destination. C'est à dire que chaque valeur de la clé primaire peut exister plusieurs fois dans la table de destination.

    *     Intégrité référentielle : Lors de l'ajout ou de la suppression d'enregistrements dans les tables liées, les données seront gérées de manière cohérente.

    Il est évidemment possible de modifier une relation à posteriori.

    bouton gauche
    Dans la fenêtre relation
    <double clic> sur le trait symbolisant la relation
    ou
    <clic droit>  sur le trait symbolisant la relation
    la boite de dialogue de relation s'affiche
    <clic g> sur  
    modifier éventuellement
     pour valider
    la relation est symbolisée par une ligne de jonction entre les 2 champs

     Dans la base en cours "bibliotheque",
    Créer les relations entre les tables telles que ci-dessous (avec intégrité référentielle)
    Partir de préférence des tables les plus éloignées de la table principale "ouvrage"

    • G. Ruban personnalisé

      Un ruban personnalisé peut être créé pour une application. Il est possible de lui affecter des outils existants ou des macro-commandes. Pour ce faire, il est nécessaire de procéder à un certain nombre d'opérations :

      *     Afficher les objets systèmes

      *     Afficher les erreurs d'interface xml

      *     Créer une table système spécifique nommée "USysRibbons"

      *     Créer dans cette table le ou les rubans personnalisés et indiquer les caractéristiques du ruban en xml.

      *     Charger les bibliothèques d'objets "microsoft dao 3.6 object library" et "Microsoft Office 12.0 Object Library" ou postérieures

      *     Créer un module MDLRibbons chargeant la fonction LoadRibbons()

      *     Appeler ce module à l'aide la macro "autoexec"

      *     Associer le ruban à l'application ou à un formulaire

      *     Cacher les objets systèmes

      1.         AFFICHER LES OBJETS SYSTÈMES

      Il faut dans un premier temps afficher les objets systèmes

       menu fichier

      dans le volet de gauche
      sélectionner

      dans la zone
      <clic g>
      sur
      en bas et à gauche
      cocher
       pour valider
       pour valider

      2.         AFFICHER LES ERREURS D'INTERFACE XML

      Dans un second temps, il faut afficher activer l'affichage des messages d'erreur.

       menu fichier

      dans le volet de gauche
      sélectionner

      dans la zone
      cocher

       pour valider

      3.         CRÉER LA TABLE "USYSRIBBONS"

      Ensuite, si elle n'existe pas encore, il faut créer la table "usysribbons" de manière standard.

       onglet "créer"
      groupe "tables"
      (2ème bloc)

      <clic g> sur  pour créer la nouvelle table
      créer les champs du tableau suivant avec le champ "n°" comme clé primaire
      enregistrer la table sous le nom "usysribbons" : 


       Les tables msys… et usys… sont des tables "système" normalement non affichées
      (Ribbon = ruban / usysribbons = rubans utilisateur)

      4.         CRÉER LES RUBANS PERSONNALISÉS

      Après cela, il faut créer des enregistrements dans la table ; ces enregistrements correspondent aux différents rubans. Le code xml est entré dans le champ "XMLRuban.

         Le code à ajouter va concerner des outils existants ou des macro-commandes créées par l'utilisateur

      5.         CHARGER LES BIBLIOTHÈQUES D'OBJETS

      Le chargement de ces bibliothèques est indispensable pour que l'ensemble fonctionne.

      visual basic (<alt> <11>)
      menu "outils"

      cocher si elles ne le sont pas déjà
      les bibliothèques d'objets sont classées par ordre alphabétique
       pour valider
      les bibliothèques d'objets sont chargées et les objets dorénavant utilisables

      6.         CRÉER UN MODULE VISUAL BASIC "MDLRIBBONS"

      Toujours dans Visual Basic, il faut créer un module "LoadRibbons" qui va déclarer les différents éléments du ruban et aller chercher les valeurs dans la table "USysRibbons".

      visual basic (<alt> <11>)
      saisir le code comme ci-après
      bien respecter l'orthographe et les indentations
      <clic g> sur l'outil  pour enregistrer et le nommer "LoadRibbons"

      si possible, respecter minuscules et majuscules dans les noms de modules
       pour valider
      menu fichier - ou <clic g> sur

      7.         CRÉER LA MACRO "AUTOEXEC"

      Il faut alors lancer ce module "LoadRibbons" à l'aide de la macro "autoexec".

       onglet "créer"
      groupe "macros et codes"
      (dernier bloc)
      <clic g> sur  
      créer la macro-commande ci-dessous
      l'enregistrer sous le nom "autoexec"
      dans la plupart des applications Microsoft, la macro auto exécutable se nomme "autoexec"

      8.         ASSOCIER LE RUBAN À UNE APPLICATION

      Le ruban ainsi créé peut être associé à l'application, permettant la personnalisation de l'application.

       menu fichier

      dans le volet de gauche
      sélectionner

      dans
      dérouler
      la liste des rubans
      sélectionner le ruban voulu
       pour valider
      fermer
      puis rouvrir l'application
      le ruban personnalisé s'affiche en complément ou en lieu et place du ruban standard

      9.         ASSOCIER LE RUBAN À UN FORMULAIRE

      Le ruban peut aussi être associé à un formulaire de l'application, simplifiant encore son utilisation.

      bouton gauche
      formulaire affiché en mode "création"

      afficher les propriétés du formulaire
      afficher l'onglet "autres"
      en face de la propriété "ruban"
      dérouler la liste des rubans
      sélectionner le ruban voulu
       pour valider
      le ruban personnalisé s'affiche à l'ouverture du formulaire

      10.    CACHER LES OBJETS SYSTÈMES

      Il faut maintenant de nouveau cacher les objets systèmes.

       menu fichier

      dans le volet de gauche
      sélectionner

      dans la zone
      <clic g>
      sur
      en bas et à gauche
      décocher
       pour valider
       pour valider

      11.    DÉBUTER AVEC XML

      Le "xml" est une évolution du code descriptif d'origine d'Internet "Html". Il est fondé sur la notion de balises qui indiquent le début puis la fin d'un ensemble d'informations homogènes.

      *     Une balise de début s'exprime par les signes <…>

      *     Une balise de fin s'exprime par les signes </…>

      Lors de la saisie dans la table :

      *     <ctrl> <entrée> permet d'aller à la ligne

      *     <espace> permet de disposer les ensembles de manière indentée et lisible

      *      Les id (identification) doivent être uniques ; pour mieux s'y retrouver, il est possible de hiérarchiser la numérotation :

      <group id="dbCustomGroup2" label="Ajouts">
       <button id="
      Button21" label="Consultation"  onAction="OuvrirConsultation" />

      <group id="dbCustomGroup3" label="Consultation">
       <button id="
      Button32" label="Auteur"  onAction="ModifierAuteur" />

       

      Les outils peuvent être de deux types :

      *     des outils standards d'Access

      *     des macro-commandes.

      Pour reprendre les outils (onglets ou groupe) d'Access dans le code xml, il faut indiquer la valeur du contrôle idMso de l'outil :

      12.    AFFICHER LES VALEURS IDMSO

      Les valeurs idMso peuvent être connues en affichant la bulle d'aide des outils dans les options de personnalisation d'Access.

       menu fichier

      dans le volet de gauche
      sélectionner

      choisir
      le type de commandes dans 
      pointer
      sur une commandes
      la valeur du contrôle s'affiche dans une bulle d'aide (à la fin entre parenthèses)
       pour fermer la fenêtre

       

       Afficher dans la base en cours en plus du ruban standard l'onglet "outils" avec le groupe "Presse-papiers" et les outils "copier", "couper" et "coller" en faisant toutes les opérations décrites dans ce chapitre et en recopiant les codes de module, de macro et xml ci-dessous – Vérifier dans les options les valeurs des contrôles idMso – nommer ce ruban "test1"

       Pour tester les rubans, associer le ruban à la base active dans
        - 
      dans le volet de gauche
      sélectionner

      dans
      dérouler
      la liste des rubans
      sélectionner le ruban voulu et redémarrer Access

      Pour afficher des outils appelant des macros, il faut bien entendu que les macros aient été créées préalablement.

       

      La commande permettant de les appeler est :

       Créer le ruban ci-dessous en faisant un copier/coller du précédent et en y ajoutant la ligne appelant la macro "OuvrirConsultation" créée précédemment – nommer ce ruban "test2"

      13.    EXERCICES

       Créer le ruban ci-dessous en vous aidant éventuellement de l'exemple de code qui suit
      Le groupe "outils" est construit sur la base du groupe "presse-papiers" précédent
      Le groupe "Ajouts" appelle les macro-commandes d'ouvertures des formulaires du même nom (créées précédemment) en mode "ajout"
      Le groupe "Consultation" appelle les macro-commandes d'ouvertures des formulaires du même nom en mode "lecture seule"
      Le groupe "Impression" appelle les macro-commandes d'affichage des états du même nom (créés précédemment) en mode "aperçu avant impression"
      Le groupe "quitter" ferme Access
      Nommer le ruban "Gestion", l'associer à l'application et le tester

       <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

        <ribbon startFromScratch="true">

          <tabs>

           <tab id="dbCustomTab" label="Bibliothéque" visible="true">

              <group id="dbCustomGroup" label="Outils">

                <control idMso="Copy" label="Copier" enabled="true"/>

                <control idMso="Cut" label="Couper" enabled="true"/>

                <control idMso="Paste" label="Coller" enabled="true"/>

                <control idMso="Undo" label="Annuler" enabled="true"/>

                <control idMso="Redo" label="Rétablir" enabled="true"/>

                <control idMso="Delete" label="Supprimer" enabled="true"/>

               </group>

               <group id="dbCustomGroup2" label="Ajouts">

                  <button id="Button22" label="Auteurs"  onAction="OuvrirAuteur" />

                  <button id="Button23" label="Editeusr"  onAction="OuvrirEditeur" />

                  <button id="Button24" label="Lecteurs"  onAction="OuvrirLecteur" />

                  <button id="Button25" label="Ouvrages"  onAction="OuvrirOuvrage" />

                </group>

              <group id="dbCustomGroup3" label="Consultation-modification">

                  <button id="Button35" label="Ouvrages"  onAction="ModifierOuvrage" />

                  <button id="Button32" label="Auteurs"  onAction="ModifierAuteur" />

                  <button id="Button33" label="Editeurs"  onAction="ModifierEditeur" />

                  <button id="Button34" label="Lecteurs"  onAction="ModifierLecteur" />

                  <button id="Button31" label="Consultation ouvrages"  onAction="OuvrirConsultation" />

              </group>

             <group id="dbCustomGroup4" label="Prêts / Emprunts">

                  <button id="Button41" label="Saisie des prêts"  onAction="OuvrirEmprunt" />

                 <button id="Button42" label="Saisie des retours"  onAction="OuvrirRetour" />

                 <button id="Button43" label="Liste des prêts  en cours"  onAction="OuvrirListeemprunts" />

             </group>

         <group id="dbCustomGroup5" label="Aperçu Impression">

                 <button id="Button51" label="Liste des auteurs"  onAction="ApercuListeAuteur" />

                 <button id="Button52" label="Liste des éditeurs"  onAction="ApercuListeEditeur" />

                 <button id="Button53" label="Liste des emprunts"  onAction="ApercuListeEmprunt" />

                 <button id="Button54" label="Liste des lecteurs"  onAction="ApercuListeLecteur" />

                 <button id="Button55" label="Liste des ouvrages"  onAction="ApercuListeOuvrage" />

                 <button id="Button56" label="Liste des exemplaires"  onAction="ApercuListeExemplaire" />

             </group>

           <group id="dbCustomGroup6" label="Outils">

                  <control idMso="FileCompactAndRepairDatabase" label="Compacter la base" enabled="true"/>

                  <button id="Button61" label="Vider la base"  onAction="ViderBase" />

                  <control idMso="FileExit" label="Quitter la base" enabled="true"/>

               </group>  

        </tab> 

      </tabs>

      </ribbon>

      </customUI>

       Créer le ruban ci-après en vous aidant éventuellement de l'exemple de code suivant
      Le nommer "Form", l'associer à chacun des formulaires du ruban précédent et le tester

       

       <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

         <ribbon startFromScratch="true">

          <tabs>

           <tab id="dbCustomTab" label="Bibliothéque" visible="true">

              <group id="dbCustomGroup" label="Outils">

                <control idMso="Copy" label="Copier" enabled="true"/>

                <control idMso="Cut" label="Couper" enabled="true"/>

                <control idMso="Paste" label="Coller" enabled="true"/>

                <control idMso="Undo" label="Annuler" enabled="true"/>

                <control idMso="Redo" label="Rétablir" enabled="true"/>

                <control idMso="Delete" label="Supprimer" enabled="true"/>

               </group>

               <group id="dbCustomGroup4" label="Déplacement">

                 <control idMso="MailMergeGoToFirstRecord" label="Premier" size="large" enabled="true"/>

                 <control idMso="MailMergeGoToPreviousRecord" label="Précédent" size="large" enabled="true"/>

                 <control idMso="MailMergeGoToNextRecord" label="Suivant" size="large" enabled="true"/>

                 <control idMso="MailMergeGotToLastRecord" label="Dernier" size="large" enabled="true"/>

              </group>

            </tab>

          </tabs>

        </ribbon>

      </customUI>