Comment utiliser une application en mode multi-utilisateurs Morgan BILLY Vous p

Comment utiliser une application en mode multi-utilisateurs Morgan BILLY Vous pouvez commenter et donner une note à cet article : Commentez Nous allons dans ce tutoriel parler de l'utilisation des bases Access en mode multiutilisateurs, ce principe est appelé frontale/dorsale. Titre : Comment utiliser une application en mode multi- utilisateurs Auteur : Morgan BILLY Parution : 1 février 2007 Mise à jour : 15 mai 2012 Public visé : Licence : Copyright ® 2009 BILLY Morgan. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Sommaire I. Introduction II. Principe des bases frontales/dorsales III. Scinder une base IV. Lier les tables manuellement V. Ajout d'une table dans la base Frontale VI. Tables non liées de la frontale VII. Lier les Tables en VBA VII-A. Fonction permettant de mettre à jour les liaisons VIII. Ouverture de la base Frontale avec test des liaisons IX. Allez plus loin - Mise en Maintenance IX-A. Cacher une Table. IX-A-1. Comment enlever l'attribut Masqué d'une table ? IX-B. Mode Maintenance de la base IX-C. Création d'une base pour Administrer les bases Frontales/Dorsales IX-C-1. Lister les personnes connectées à la base principale IX-C-2. Formulaire de consultation des personnes connectées IX-C-3. Envoi d'un message aux personnes connectées X. Conclusion XI. Remerciements Pour Access97 il faut aller chercher dans le répertoire d'installation Office\Samples I - Introduction Nous allons utiliser dans ce tutoriel une base exemple disponible avec Access => Les Comptoirs. Cette base est disponible depuis Access dans l'arborescence de l'aide : Egalement disponible sur ce chemin => C:\Program Files\Microsoft Office\OFFICExx\SAMPLES. II - Principe des bases frontales/dorsales C'est le principe du Client / Serveur, d'un côté les données et de l'autre l'interface utilisateurs ou IHM. Base Dorsale : Base ne contenant que les tables. Généralement la base Dorsale est placée sur un Serveur connecté à un réseau. Base Frontale : Base contenant tous les Formulaires, les Requêtes, les Etats et les Macros. Cette base est placée sur les postes utilisateurs, elle aussi connectée au même réseau. Pour utiliser l'assistant il faut sélectionner Fractionner une base de données du menu outils Une fenêtre s'ouvre vous expliquant ce que va faire Access, c'est à dire déplacer les tables vers une base principale et les lier vers la base Frontale qui sera votre base actuelle. Sélectionnez Fractionner la base de données. III - Scinder une base Access possède un outil très ludique permettant de scinder une base. Access 2003 Access 2007 Une fenêtre d'exploration s'ouvre vous demandant de renseigner le chemin où sera créée la base principale. Après avoir cliqué sur Fractionner, l'assistant effectue la création de la base principale et lie les tables, un message vous signale la bonne réalisation du travail de l'assistant. Dans la fenêtre de base de données nous pouvons voir ceci maintenant : La base dorsale ne contient que les tables partagées. Les tables temporaires doivent être situées sur la base frontale pour éviter tout conflit et garantir la version des données enregistrées temporairement. La liaison au niveau des tables est représentée par une flèche située devant la table, ceci veut dire que cette table est liée à une autre base de donnée. Le gestionnaire de tables liées (ou gestionnaire d'attaches) permet de changer le chemin de la liaison entre la Frontale et la Dorsale. IV - Lier les tables manuellement Nous venons de scinder une base Access sur le principe de frontale/dorsale, ceci présente un gros défaut : sa portabilité. Si pour une raison quelconque vous avez besoin de déplacer une ou les bases, toutes les liaisons ne seront plus conformes. Access possède une fonction permettant de redéfinir les liaisons manuellement. Gestionnaire de tables liées (ou Gestionnaire d'attaches) - Access 2003 Gestionnaire de tables liées (ou Gestionnaire d'attaches) - Access 2007 Le gestionnaire est relativement simple d'utilisation, il suffit de sélectionner les tables à mettre à jour puis de cliquer sur le bouton Ok. Un message confirme si la mise à jour s'est bien effectué. Fenêtre du gestionnaire d'attaches Fenêtre du gestionnaire d'attaches Si Access ne trouve pas la base Dorsale car elle a été déplacée, une fenêtre d'exploration permettant de renseigner le nouveau chemin s'ouvre. Elle permet de sélectionner la base Dorsale et sur validation d'effectuer la mise à jour des liaisons entre la Dorsale et la Frontale. La case à cocher "Toujours demander un nouvel emplacement" permet lors de la validation sur "Ok" de toujours ouvrir la fenêtre d'exploration pour renseigner le chemin de la base Dorsale. Mise à jour des liaisons Ok Renseignement du nouveau chemin de la Dorsale. Sélection nouvel emplacement. Renseignement du nouveau chemin de la Dorsale. Sélectionnez Lier les tables du menu Fichier Pour Access 2007, la fonction d'import ou de liaison de tables se trouvent sous le même bouton, pour les liaisons sélectionnez l'option "Lier à la source de données en créant une table attachée" V - Ajout d'une table dans la base Frontale Nous allons maintenant ajouter une nouvelle liaison à la base frontale. Pour notre exemple nous allons effacer la table Messagers de la base frontale et la recréer. En faisant cela nous venons juste d'effacer la liaison entre les deux bases. Pour recréer cette liaison nous allons ouvrir la fenêtre d'attaches des tables. Access 2003 Access 2007 Une fenêtre d'exploration s'ouvre vous demandant de sélectionner la base où se situe la table à lier Access 2007 Après avoir sélectionné la base où se situe la table et cliqué sur Attacher, la fenêtre d'attache s'ouvre il nous reste plus qu'à sélectionner la table Messagers et cliquer sur OK VI - Tables non liées de la frontale Il se peut que vous ayez besoin de créer une table temporaire, comme expliqué plus haut ces tables ne doivent pas être liées mais intégrée à la base Frontale. Nous allons maintenant créer une table. Cette table permettra de stocker toutes les tables liées de la base frontale. Nous utiliserons cette table dans le prochain chapitre. Créer une nouvelle table que l'on appellera tblTablesAttachees, celle-ci ne comportera qu'un champ : Nom Type TableAttachees Texte Pour ce code il est nécessaire de cocher la référence Microsoft DAO 3.x Object Library. VII - Lier les Tables en VBA VII-A - Fonction permettant de mettre à jour les liaisons Nous allons aborder dans ce chapitre la liaison des tables par VBA. Nous parlerons des objets DAO (Data Access Objects), un excellent tutoriel parle de DAO Définition et manipulation de données avec DAO écrit par Tofalu. Dans un premier temps nous allons créer un code permettant de connaître les tables qui sont liées, nous allons ensuite ajouter chaque table liée dans la table tblTablesAttachees. Pour cela nous utiliserons un attribut de l'objet TableDefs => dbAttachedTable D'autres attributs sont disponibles au paragraphe 4.3.2.1 du tutoriel DAO de Tofalu. Déclarations des variables : 'Déclaration des variables Dim dbBase As DAO.Database Dim tbdTables As DAO.TableDef Dim rst As DAO.Recordset Instance des variables, dbBase correspond à la base en cours et rst ouvre la table tblTablesAttachees dans un Recordset : 'Instancie la base courrante Set dbBase = CurrentDb 'charge la table dans le Recordset rst Set rst = dbBase.OpenRecordset("tblTablesAtta Nous allons également inhiber les messages d'alertes : 'Inhibe les messages d'alertes DoCmd.SetWarnings False Il faut vider la table tblTablesAttachees pour que l'on puisse la re- remplir avec les tables liées : 'Vide la Tables contenant la liste des tables DoCmd.RunSQL "DELETE * FROM tblTablesAttachee Maintenant il faut écrire la boucle qui permet de parcourir toutes les tables de la base Frontale et d'ajouter seulement les tables liées dans tblTablesAttachees. Pour cela nous testons l'attribut de la table qui permet de dire si celle-ci est liée ou non => dbAttachedTable. Pourquoi cette table ? C'est très simple, au lieu de lier toutes les tables, nous ne lierons que celles qui l'étaient. 'Boucle Parcourant toutes les tables de la Bd For Each tbdTables In dbBase.TableDefs 'Teste l'attribut de la table pour savoir If tbdTables.Attributes And dbAttachedTab rst.AddNew rst!TablesAttachees = tbdTables rst.Update End If Next tbdTables La table étant remplie il faut mettre à jour le Recordset. Ensuite il faut effectuer un test pour placer le pointeur d'enregistrement sur le premier enregistrement : 'Mise à jour du Recordset après ajout des tab rst.Requery 'Teste la position du pointeur si il ne se si If Not rst.BOF Then rst.MoveFirst 'déplacement du pointeur End If Maintenant mettons à jour les liaisons des tables contenues dans la tables tblTablesAttachees, pour cela on réalise une boucle qui tourne tant que nous sommes pas arrivé au dernier enregistrement. Nous définissons l'objet TableDefs en fonction de la table stockée dans tblTablesAttachees. En utilisant la propriétés Connect nous redéfinissons le nouveau chemin de la liaison. La propriété RefreshLink permet de mettre à jour la liaison. On efface l'enregistrement en cours dans la table tblTablesAttachees ceci pour avoir une traçabilité, prenons le cas où la procédure rencontre un problème l'administrateur de uploads/Litterature/ base-res-eaux.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager