IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Importer des formulaires/Lier des tables automatiquement


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut Importer des formulaires/Lier des tables automatiquement
    Bonsoir à tous,

    Actuellement je dispose d'une application Access qui se décompose en 2 fichiers access.

    Une base de données (serveur) qui contient les tables et les formulaires de l'application et une autre (postes) dont les tables sont liées à la première et dont les formulaires sont tous importés également de cette première.

    Sachant que je modifie couramment les formulaires ou les tables de la base serveur, je souhaiterais automatiser le processus de mise à jour.
    Je cherche donc, comme l'indique le titre, comment lier des tables et importer des formulaires automatiquement et ceci en VBA.

    Par exemple, la procédure se déclencherait sur le clique d'un bouton "Mise à jour de la base" présent sur la version "Postes".

    Merci de bien vouloir m'aider.

  2. #2
    Membre habitué Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 276
    Points : 178
    Points
    178
    Par défaut
    Bonjour,
    une autre (postes) dont les tables sont liées à la première
    Tu es entrain de parler sur une base frontale et dorsale. Et d'après ce que j'ai compris tu veux remplacer automatiquement toutes les bases qui sont sur postes lorsqu'il y a une nouvelle version.
    Puisque tes tables sont liées tu n'as pas de problème, mais les formulaires ne doivent pas exister dans la base serveur (dorsale).
    A chaque fois tu veux changer des trucs ça doit être fait dans la base sur ton poste puis la convertir en MDE et tu la mets sur le serveur.
    Ensuite tu crées (un fichier.bat) et tu le mets au démarrage windows sur chaque poste exp:
    copy t:\fichier.mde c:\dossier de l'application
    le T est le lecteur logique pour ton dossier sur serveur (tu dois créer).

    J'espère que j'ai pas raté le chemin
    Quel est le plus rapide? lire le FAQ:

    http://access.developpez.com/faq/ Ou bien créer un post?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Et d'après ce que j'ai compris tu veux remplacer automatiquement toutes les bases
    Pas forcement toutes d'un coup. Je pensais que chaque utilisateur pourrait mettre à jour l'application sur son poste simplement en cliquant sur un bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Puisque tes tables sont liées tu n'as pas de problème, mais les formulaires ne doivent pas exister dans la base serveur (dorsale).
    Il m'arrive de rajouter des tables sur la version serveur. Hors les utilisateurs n'ont pas accès à l'interface Access et ne peuvent donc pas lier les tables à partir du menu => données externes, etc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ensuite tu crées (un fichier.bat) et tu le mets au démarrage windows sur chaque poste exp
    C'est justement ça que j'espérais éviter. Je souhaitais tout regrouper dans le même fichier Access sur les versions postes (utilisateurs).

    N'y a-t-il aucune autre alternative?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Points : 60
    Points
    60
    Par défaut MAJ bases utilisateurs
    Bonjour
    Ayant été confronté à cette situation, voilà la méthode que j'avais employée (les noms de base sont là pour l'exemple) :
    - Sur le serveur, 3 bases
    • BDDonnees : tables partagées et accessibles des postes
    • BDVersion : base contenant une table, elle-même contenant un seul champ (NumVersion)
    • BDAjour (base au format mde ou accde) dernière base à jour
    - Sur les postes, 2 bases
    • BDPoste (base au format mde ou accde) possédant un formulaire d'initialisation ; celui-ci, d'une part, possède "en dur" un numéro de version et d'autre part, permet d'attacher les tables.
    • BDCopie, base ne comportant qu'un simple formulaire avec code permettant de détruire sur le poste utilisateur la base BDPoste et recopier celle du serveur. (Cette base peut être remplacée par un batch déclenchable à la demande)
    Principe :
    - Lors de l'ouverture de la base BDPoste par l'utilisateur, cette base se connecte à la base BDVersion et lit le numéro de la dernière version. S'il correspond à celui qu'il a dans on code, tout est OK ; la base attache les tables de BDDonnees. Sinon, il apparaît un message du type "Une nouvelle base existe ; merci de la charger" puis la base se referme. L'utilisateur ouvre la base BDCopie dont la fonction est de détruire sa propre base BDPoste et de la remplacer par BDAjour.
    - Lorsqu'il y a modification, il suffit de remplacer la base BDJour par la nouvelle base compilée (ne pas oublier de modifier le numéro de version dans le code) et mettre à jour BDVersion en plaçant le nouveau numéro.
    - Cette méthode a 2 avantages : elle est transparente pour l'utilisateur qui n'a pas à se soucier des aspects de nouvelle base (il recopie la nouvelle base automatiquement par BDCopie) et elle permet une maintenance efficace pour l'administrateur sans avoir à déployer l'application sur tous les postes.
    NB dans votre cas où les tables varient, il pourrait être ajoutés une liste de tables à attacher dans la base BDVersion.

    J'espère avoir été suffisamment explicite. La méthode est un peu difficile à mettre en œuvre mais elle fonctionne bien.
    A+
    Nourson

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Bonjour Nourson,

    je suis entrain d'essayer ta méthode, comment fais tu pour vérifier le numéro de version?

    Lors de l'ouverture de la base BDPoste par l'utilisateur, cette base se connecte à la base BDVersion et lit le numéro de la dernière version. S'il correspond à celui qu'il a dans on code, tout est OK ; la base attache les tables de BDDonnees.
    Comment tu réalise cela? Je suppose que c'est un code VBA?

    Il faut bien avoir créer une table dans ta BDPoste qui est lié à la table version?

    merci d'avance

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Points : 60
    Points
    60
    Par défaut Numero de version
    Bonjour Gorgesac

    Pour vérifier le numero de version :
    - dans la base BDPoste (format mde), créer un formulaire d'intialisation (ou formulaire menu) qui doit s'ouvrir lors du lancement de la base.
    - Propriété "Sur ouverture" --> Placer le numero de la base (le dernier) et vérifier la correspondance avec celui de la base BDVersion qui se trouve sur le serveur. Si même numéro, RAS ; si différence signaler à l'utilisateur qu'une nouvelle version existe et qu'il doit la récupérer sur le serveur (soit manuellement, soit automatiquement par une base BDMiseAJour, qui n'a qu'un seul formulaire avec pour code la recopie de la nouvelle version qui viendra écraser la base existante sur le poste).

    Nouvelle version :
    - placer dans le code VBA du formulaire initialisation le numéro de la version puis compiler la base et la placer sur le serveur pour récupération.
    - placer dans la base BDVersion sur le serveur (1 table, 1 champ) le même numéro.

    Bonne chance
    Nourson

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2008, 21h52
  2. [Formulaire]somme des champs d'une table
    Par fa310428 dans le forum IHM
    Réponses: 3
    Dernier message: 03/04/2007, 20h33
  3. lier des champs de differentes tables
    Par yannzool dans le forum Access
    Réponses: 5
    Dernier message: 14/03/2007, 20h06
  4. Réponses: 2
    Dernier message: 18/05/2006, 16h28
  5. Réponses: 10
    Dernier message: 15/09/2005, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo