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 :

comparaison de bases de données


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 119
    Points : 52
    Points
    52
    Par défaut comparaison de bases de données
    bonjour à tous,

    je vais essayer d'etre claire sur mon soucis : je recherche un méthode pour comparer deux bases de données (qui devront, je supose, etre formées sur le meme schemas exactement).
    cette base de donnée ne sera accessible à l'utilisateur que par des formulaires, au travers desquels il faudrait qu'il puisse vérifier les différences entre les données fournies par deux organismes différents (donc les deux bases de données) sur exactement les mêmes objets...

    afin d'avoir une idée sur ce qui m'attend, j'aimerai savoir quelles peuvent etre les méthodes pour réaliser cela.

    si vous avez besoin de plus de renseignements sur ce projet, n'hesitaient pas à demander....

    merci d'avance à tous ceux qui pourrons me renseigner

  2. #2
    Membre régulier

    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 119
    Points
    119
    Par défaut
    Salut, je travaille moi aussi sur deux bases de données identiques. Voici ce que je te conseille :

    -Crée une troisième BdD vide (BD3), qui servira de base frontale (càd celle où tu mettras tous tes formulaires).
    -Dans BD3, crée les tables liées à celles de BD1. Renomme les tables dans BD3, pour qu'elles finissent toutes par "_BD1".
    -Dans BD3, crée les tables liées à celles de BD2. Renomme les tables dans BD3, pour qu'elles finissent toutes par "_BD2".

    Si plus tard tu déplaces tes fichiers, tu pourras facilement rétablir les liaisons avec un code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Tabl As TableDef, path1 As String, path2 As String
    path1=chemin de BD1
    path2=chemin de BD2
     
    For Each Tabl In CurrentDb.TableDefs
        If Tabl.Connect <> "" Then
            If Right(Tabl.Name, 4) = "_BD1" Then
                Tabl.Connect = ";DATABASE=" & path1
            Else
                Tabl.Connect = ";DATABASE=" & path2
            End If
            Tabl.RefreshLink
        End If
    Next
    -Crée tous tes formulaires dans BD3, et base-les sur des requêtes qui mettent en relation chaque table BD1 avec son équivalente BD2.

    Ca peut paraitre un peu lourd de créer une troisième BdD, mais crois-moi ça vaut la peine parce que c'est le système le plus robuste (càd celui qui a le moins de chances de te faire te taper la tête contre les murs dans 3 mois ).

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 119
    Points : 52
    Points
    52
    Par défaut
    merci ...

    je vais donc me lancer dans la création de cette troisieme BdD. cela me semble en effet un peu lourd, mais il je prefere passer le temps à créer une troisieme BdD comme il faut, et ne pas avoir de soucis par la suite!

    par contre, juste pour etre sure, tu met des relations entre toutes les tables BD1 et BD2?

    en tout cas, merci pour cette solution


  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Mettre des relations entre BD1 et BD2 ne m'apparait pas apporté grand chose car la laison se faisant sur la clef primaire et le nom des tables est assez implicite.

    Et oui, la solution de la 3ème BD est excélente sur le long terme.

    Pour la comparaison, tu peux aussi utiliser un bout de code du style (en DAO)

    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
     
    private sub ComparerDB()
     
       dim db as databse
       dim t as tabledef
       dim r1 as recordset
       dim r2 as recordset
       dim f1 as field
       dim f2 as field
     
       for each t in db.tabledefs
     
         if t1.name like "*1" then
           set r1=db.openrecordset(t.name)
           set r2=db.OpenRecordset(left(t.name,len(t.name)-1) & "2"
     
           do while not r1.eof
     
              for each f1 in r1.fields
                set f2=r2.fields(f1.name)
     
                if f1<>f2 then
                  msgbox(r1.name & "!" & f1.name & " = " & f1 & " <> " & r2.name & "!" & f2.name & " = " & f2)
                end if
     
              next f1
     
              r1.movenext
              r2.movenext
           loop
     
           r1.close:set r1=nothing
           r2.close:ser r2=nothing
         end if
     
       next t
     
    end sub
    Evidement if faut peut-être gérer la synchro des enr, là j'ai suposé que tu avais le même nombre d'enr des deux côtés.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 119
    Points : 52
    Points
    52
    Par défaut
    ok merci, mais je pense que je vais rester sur la solution de la 3em BdD, cela devant etre géré par la suite par des personnes qui ne connaisse absolument rien à la programmation...le désavantage d'etre stagiaire!!!! quoique ça les obligerais à m'embaucher qui sait..

    enfin comme faut pas trop rever, je te remerci pour ta solution et je la met de coté pour une prochaine fois!!!

    a + et encore merci!

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

Discussions similaires

  1. Recherche script comparaison de base de données
    Par yobogs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/08/2010, 09h36
  2. Comparaison de bases de données
    Par Ljosse dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/01/2008, 21h10
  3. Outils de comparaison de bases de données
    Par locus dans le forum Outils
    Réponses: 2
    Dernier message: 19/09/2007, 14h15
  4. [Conception] comparaison saisie/base de donnée
    Par arfelas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/10/2006, 16h17
  5. Comparaison XML-base de donnée SQL
    Par mtaveau dans le forum XQUERY/SGBD
    Réponses: 11
    Dernier message: 02/05/2006, 03h45

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