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

VBScript Discussion :

Comparaison de deux table de deux bd différentes


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 180
    Par défaut Comparaison de deux table de deux bd différentes
    Bonjour,

    Je dois comparer les donnes de deux table différentes qui sont logées dans deux bd différentes pour ensuite ajouter les données de l'une à l'autre si elle ne sont pas identique...

    Est-ce que quelqu'un connaît un tuto qui pourrait m'aider car c'Est la première fois que je fais du vbscript

    MErci!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Une question importante avant de poursuivre : c'est quoi comme base de données ?

    Philippe

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 180
    Par défaut
    Bonjour!

    C'était une bd ACCESS

    Désolé, j'avoue que ma demande n'était vraiment pas clair

    J'ai avançé en faisant des test et pour l'instant, je réussis à lire le contenu de mes tables donc il ne me reste que la comparaison.

    En fait, j'avais de la difficulté à me connecter à mes tables donc voilà mon
    code si ça peut aider quelqu'un et du même coup si vous avez des suggestions d'amélioration du code, merci de me le suggérer

    Voici mon nouveau code mais ca ne fonctionne toujours pas, est-ce que quelqu'un peut voir mon erreur? Merci!

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    dim sel
     
    Set conn1 = CreateObject("ADODB.Connection")
    Set conn2 = CreateObject("ADODB.Connection")
     
    Set rst1 = CreateObject("ADODB.Recordset")
    Set rst2 = CreateObject("ADODB.Recordset")
     
     
     
     
    conn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    						"Data Source=C:\bd1.mdb"
     
    conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    						"Data Source=C:\bd2.mdb"
     
     
    conn1.open
    conn2.open
     
     
    sql1 = "select Nom from tblClient;"
    sql2 = "select Nom from tblClient;"
     
    rst1.open sql1,conn1
    rst2.open sql2,conn2
     
     
     
    rst1.movefirst 
    while not rst1.eof
     
     
    	rst2.movefirst
    	while not rst2.eof
    		if (rst1.fields.item("Nom") <> rst2.fields.item("Nom")) then
    			if rst2.eof then
    				msgbox("Test")
    				sel = "INSERT INTO rst1.tblClient ( Nom, Code, Nom, Code ) SELECT rst1.tblClient.Nom, rst1.tblClient.Code, rst2.tblClient.Nom, rst2.tblClient.Code FROM rst2.tblClient LEFT JOIN rst1.tblClient ON rst2.tblClient.Nom = rst1.tblClient.Nom WHERE (((rst1.tblClient1.Nom) Is Null));"
    				conn2 execute(sel)
    			end if
    			rst2.movenext
    		else
    			while not rst2.eof
    				rst2.movenext
    			wend	
    		end if
     
    	wend	
     
     
    	rst1.movenext
    wend
     
     
     
    conn1.close
    conn2.close
     
     
     
     
    Const ForReading = 1, ForWriting = 2, ForAppend = 8
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("c:\temp\Log.txt", ForWriting ,true)
    f.write("Traitement terminé le ")
    f.write(day(date))
    f.write(" ")
    f.write(monthname(month(date)))
    f.write(" à ")
    f.write(time)

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 180
    Par défaut
    Petite mise à jour
    Mon code fonctionne (enfin je crois)

    J'ai un problême avec ma requête

    Voici ma dernière version:

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    dim sel
     
    Set conn1 = CreateObject("ADODB.Connection")
    Set conn2 = CreateObject("ADODB.Connection")
     
    Set rst1 = CreateObject("ADODB.Recordset")
    Set rst2 = CreateObject("ADODB.Recordset")
     
     
     
     
    conn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    						"Data Source=C:\bd1.mdb"
     
    conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    						"Data Source=C:\bd2.mdb"
     
     
    conn1.open
    conn2.open
     
     
    sql1 = "select Nom from tblClient;"
    sql2 = "select Nom from tblClient;"
     
    rst1.open sql1,conn1
    rst2.open sql2,conn2
     
     
     
    rst1.movefirst 
    while not rst1.eof
     
     
    	rst2.movefirst
    	while not rst2.eof
    		if (rst1.fields("Nom").value <> rst2.fields("Nom").value) then
    			if (rst2.eof - 1) then
    				msgbox("INSERT")
    				sel = "INSERT INTO rst1.tblClient ( Nom, Code, Nom, Code ) SELECT rst1.tblClient.Nom, rst1.tblClient.Code, rst2.tblClient.Nom, rst2.tblClient.Code FROM rst2.tblClient LEFT JOIN rst1.tblClient ON rst2.tblClient.Nom = rst1.tblClient.Nom WHERE (((rst1.tblClient.Nom) Is Null));"
    				rst2.close
    				rst2.open sel,conn2
    			end if
    			rst2.movenext
    		else
    			while not rst2.eof
    				rst2.movenext
    			wend	
    		end if
     
    	wend	
     
     
    	rst1.movenext
    wend
     
     
     
     
     
    conn1.close
    conn2.close
     
    'rst1 = nothing
    'rst2 = nothing
     
     
     
    Const ForReading = 1, ForWriting = 2, ForAppend = 8
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("c:\temp\Log.txt", ForWriting ,true)
    f.write("Traitement terminé le ")
    f.write(day(date))
    f.write(" ")
    f.write(monthname(month(date)))
    f.write(" à ")
    f.write(time)

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 180
    Par défaut
    Le problême est au niveau de la requête
    Quelqu'un peut m'aider?


    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    dim sel
     
    Set conn1 = CreateObject("ADODB.Connection")
    Set conn2 = CreateObject("ADODB.Connection")
     
    Set rst1 = CreateObject("ADODB.Recordset")
    Set rst2 = CreateObject("ADODB.Recordset")
     
     
     
     
    conn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    						"Data Source=C:\bd1.mdb"
     
    conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    						"Data Source=C:\bd2.mdb"
     
     
    conn1.open
    conn2.open
     
     
    sql1 = "select Nom from tblClient;"
    sql2 = "select Nom from tblClient;"
     
    rst1.open sql1,conn1
    rst2.open sql2,conn2
     
     
     
    rst1.movefirst 
    while not rst1.eof
     
     
    	rst2.movefirst
    	while not rst2.eof
    		if (rst1.fields("Nom").value <> rst2.fields("Nom").value) then
    			if (rst2.eof - 1) then
     
    				rst2.close
    				rst2.open "INSERT INTO tblClient ( Nom, Code ) VALUES ('" & rst1.fields('Nom').value & "','" & rst1.fields('Code').value & "')",conn2
    			end if
    			rst2.movenext
    		else
    			while not rst2.eof
    				rst2.movenext
    			wend	
    		end if
     
    	wend	
     
     
    	rst1.movenext
    wend
     
     
     
    conn1.close
    conn2.close
     
    'rst1 = nothing
    'rst2 = nothing
     
     
     
    Const ForReading = 1, ForWriting = 2, ForAppend = 8
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("c:\temp\Log.txt", ForWriting ,true)
    f.write("Traitement terminé le ")
    f.write(day(date))
    f.write(" ")
    f.write(monthname(month(date)))
    f.write(" à ")
    f.write(time)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Au lieu de comparer, pourquoi ne pas faire une requête Union, regardes Comment retourner toutes les lignes de deux ensembles avec UNION ?, dans la FAQ Access.

    Philippe

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/04/2009, 14h34
  2. supprimer un lien entre deux tables d deux bases différente
    Par laurent.w dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2007, 11h41
  3. Réponses: 14
    Dernier message: 04/12/2006, 11h22
  4. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21
  5. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53

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