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

Access Discussion :

Synchroniser 2 bases Access identiques


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut Synchroniser 2 bases Access identiques
    Bonjour,
    je vais vous demander si ceci est réalisable.
    Pour mon stage, je dois developez une toute bête base de donnée Access que je mettrais sur le serveur de l'entreprise. Mais on maitre de stage souhaite aussi avoir la base sur son ordinateur(vu qu'il est souvent en deplacement). Le but recherché serait de "synchroniser" les 2 bases, autrement dit d'ajouter les données ajoutées dans l'une et dans l'autre séparément, et ceci à chaque fois que mon maitre de stage se connecte au réseau. Je voulais juste savoir si cela était possible sachant que je suis obligé d'utiliser Access.
    Merci à ceux qui me répondront

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Oui, c'est possible va voir Replication dans outils.

    Ca marche bien dans le cas de base simple et peux utilisées mais c'est une source de problèmes divers et variés et une garantie de frustration dans la vie réel.

    Attention une fois que tu as fais un réplicat de ta base, il est assez difficile d'inversé le processus. Ne fais le réplicat que quand ta base est défnitive ou presque.

    A+

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour éviter les problèmes de réplication, je choisis une des deux bases comme étant la principale, et à l'aide de requêtes, je mets les enregistrement à jour.
    J'utilise ce principe pour des DB qui sont sur des serveurs avec des utilisateurs appartenant à des arbres différents et où la connexion des utilisateurs et difficile voire pas possible d'un arbre à l'autre.

    (Arbre dans la Forêt d'active Directory en Win 2003)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Excusez moi j'ai pas exactement compris coment cela fonctionnait.
    Je ne comprend pas grand chose sur la documentation qui est fourni avec access. Est-ce que je dois créer la base principale( celle qui se trouve sur le serveur) en tant que réplica maitre et la base sur le portable en autre réplica?
    Est ce que l'action de synchronisation peut s'effectuer automatiquement à chaque ouverture d'une des 2 bases?
    Merci encore

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Je vies de lire un tuto interessant sur le sujet
    J'ai donc compris que la base "de base(si je puis me permettre) est le réplica maitre, puis on fait des copies de cette base que l'on installe sur chacun des postes ou on veut travailler dessus.
    Lorsqu'une personne travaille sur son réplica la synchronisation se fait elle automatiquement?
    Si non, est ce qu'il est possible de faire une synchronisation (qui a ce que j'ai vu est manuelle) de facon automatique à chaque ouverture de base.
    Merci

  6. #6
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    je synchronise via ADO c'est plus facile
    peut etre peux tu mettre la fonction de synchro des tables dans un load..

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    et comment fait tu pour synchronier avec ADO?
    je pensais le faire effectivement sur le load

  8. #8
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    je t'envoie mon script brut ... j'ai pas le temps de modifier
    c'est pour te donner une idée... je l'ai également dan sl'autre sens ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     'Transfert de tampon station vers receive----------------------------------------------------------------------------------------------------------------------------------------------
    Dim interval As String
    Dim table1 As ADODB.Recordset
    Dim table As ADODB.Recordset
     Dim cx As ADODB.Connection
     Dim cx1 As ADODB.Connection
    Set cx = New ADODB.Connection
    cx.Open "provider=microsoft.jet.oledb.4.0;data source=" & Me!lien & "pointeur_v1.mdb ; User Id=Admin; Password="
     
    Set table = New ADODB.Recordset
    table.CursorLocation = adUseClient
    table.ActiveConnection = cx
    table.Open "select * from tampon_pointstation ", , adOpenStatic, adLockBatchOptimistic, adCmdText
     
     If Not table.EOF Then
     'premier enregistrement
     
        table.MoveFirst
     
     
     
      Do Until table.EOF
      Set cx1 = CurrentProject.Connection
      Set table1 = New ADODB.Recordset
     
    'MsgBox table!time_pointstat & Chr(10) & timeplus & " " & timemoins
     table1.Open "select * from receive where  (matricule_h=" & Right(table!cbarre_pointstat, 5) & " and date_h=#" & Left(table!time_pointstat, 10) & "# and h_h='" & table!h_pointstat & "');", cx1, adOpenDynamic, adCmdTable
     
     
     If Not table1.EOF Then
          Else
       'ajout à la table receive
               table1.AddNew
             table1.Fields("date_h") = Left(table!time_pointstat, 10)
             table1.Fields("matricule_h") = Right(table!cbarre_pointstat, 5)
             table1.Fields("point_h") = table!time_pointstat
             table1.Fields("equipe_h") = Right(table!equipe_pointstat, 2)
             table1.Fields("h_h") = table!h_pointstat
     
        table1.update
              End If
    'passer a l'enregistrement de pointageh1 suivant
     table.MoveNext
    'retour de la boucle
    Loop
    'si boucle finie fermer la table
    table.Close
    table1.Close
    Set table = Nothing
    Set table1 = Nothing
    End If
     
     
    MsgBox "Récuperation des données du pointeur "

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    je suis désloé de te prendre de ton temps mais pourrait tu expliquer coment marche ton code?
    j'ai pour l'instant bien compris que tu déclare tes 2 bases et que tu parcourt les enregistrements de tes table. j'ai bien compris la première requete mais pas la deuxième. Est ce que tu changes seulement les choses qui ont été modifié depuis la dernière connexion entre les 2 bases?

    et si c'est possible pourrait tu mettre les structure de tes bases MERCI BEAUCOUP!

  10. #10
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    j'appelle la table tampon_pointstation de la base distante, je viérifie que la valeur existe pas dans la table local receive, si la valeur existe pas je la crée...

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    En fait c'est plutot ce code que je ne comprend pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    table1.Open "select * from receive where  (matricule_h=" & Right(table!cbarre_pointstat, 5) & " and date_h=#" & Left(table!time_pointstat, 10) & "# and h_h='" & table!h_pointstat & "');", cx1, adOpenDynamic, adCmdTable
     
     
     If Not table1.EOF Then
          Else
       'ajout à la table receive
               table1.AddNew
             table1.Fields("date_h") = Left(table!time_pointstat, 10)
             table1.Fields("matricule_h") = Right(table!cbarre_pointstat, 5)
             table1.Fields("point_h") = table!time_pointstat
             table1.Fields("equipe_h") = Right(table!equipe_pointstat, 2)
             table1.Fields("h_h") = table!h_pointstat

  12. #12
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    je vérifie que dans la table local receive il n'existe pas le meme d'enrigrement pour un matricule_h et une heure et un edate dans la table distante

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Je me suis decidé a metre les choses sur papier.
    pour l'instant je me suis fait un raisonnement en disant que la base sur le portable ajoute les valeurs présente sur le serveur et non sur la sienne, à la base du portable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    BD2 sur serveur
    BD1 sur portable
     
    BD1 se connecte
    On selectionne l'enemble des informations de BD2
    On se place sur le premier enregistrement
    Jusqu'a ce qu'on arrive à la fin des enregistrements(BD2):
    	On selectionne l'ensemble des informations de BD1
    	On se place sur le premier enregistrement
    	Jusqu'à ce qu'on arrive à la fin des enregistrement(BD1):
    		On compare les champs de BD1 et BD2
    		Si ils sont identiques
    			on passe à suite enregistrement(BD1)
    		Sinon
    			Si clé primaire identique mais reste different
    				on alerte l'utilisateur
    				et on passe à enregistrement suivant BD2
    			Sinon
    				Si different
    					on passe à suite enregistrement (BD1)
    	Alors on ajoute l'enregistrement de BD2 à BD1
    Synchronisation terminée
    Dites moi si vous trouvez une faille

  14. #14
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    excuse pour le retard , j'ai survolé je crois que c'est ca
    je pense qu'on peut utiliser les union

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 10/06/2011, 03h40
  2. Comment synchroniser deux bases access?
    Par gilles_906 dans le forum VB.NET
    Réponses: 0
    Dernier message: 02/11/2010, 23h05
  3. Synchroniser deux bases ACCES identique
    Par tryonyco dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/05/2009, 12h14
  4. Synchroniser 2 bases access
    Par arnolem dans le forum Access
    Réponses: 3
    Dernier message: 03/08/2006, 08h44
  5. Synchronisation entre 2 bases ACCESS
    Par Tchupacabra dans le forum Access
    Réponses: 2
    Dernier message: 18/10/2005, 15h24

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