begin process at 2010 03 22 06:48:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > RECOUPEMENT ENTRE DEUX BASES DE DONNÉES ACCESS

RECOUPEMENT ENTRE DEUX BASES DE DONNÉES ACCESS


 Information sur la source

Note :
Aucune note
Catégorie :Base de Donnees Classé sous :vba, vb, access, données, bdd Niveau :Débutant Date de création :28/11/2005 Vu / téléchargé :10 918 / 3 063

Auteur : M000004965

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

L'objectif est d'avoirs deux tables identiques.
Le code parcoure la première table et vérifie que chaque enregistrement existe dans la seconde. S'il n'existe pas, le code l'ajoute dans la seconde base pour obtenir deux bases identiques.


 Conclusion

Le code est les bases access en exemple sonts aux normes Access 97.
Il faudra modifier dans le code le moteur "Microsoft.Jet.OLEDB.3.51" en fonction de la version Access utilisé.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip CHARGER DES DONNÉES DEPUIS UN FICHIER TXT DANS UNE BASE DE D... par ig3
Source avec Zip Source avec une capture GESTIONPMPT par mark100
Source avec Zip Source .NET (Dotnet) DATA ACCESS COMPONENT par zaimfaycal
Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec Zip GESTION D'UNE BIBLIOTHÈQUE par Elmarzougui

 Sources en rapport avec celle ci

Source avec Zip OUTIL DE FORMATION par l0r3nz1
Source avec Zip GEOLOCALISATION WGS84 par l0r3nz1
Source avec Zip Source avec une capture Source .NET (Dotnet) EXECUTÉ UNE PROCEDURE STOCKÉ "STOREPROC" DANS UNE BD ACCESS par jaknight007
Source avec Zip Source avec une capture Source .NET (Dotnet) ACCESS TO ( XML,EXCEL ) par simo5963
Source avec Zip CONNEXION BASES DE DONNÉES par l0r3nz1

Commentaires et avis

Commentaire de BruNews le 28/11/2005 12:39:12 administrateur CS

Une simple requête "INSERT INTO" n'aurait pas suffi ?
"Provider=Microsoft.JET.OLEDB.4.0" va bon pour moi avec les Access 2 jusque 2003.

Commentaire de asimengo le 30/11/2005 09:41:42

@M000004965: En bidouillant juste un peu ta source je te propose une petite amelioration qui te permettra de faire la mise à jour d'une tableB dune BD_B par rapport à une tableA de la BD_A quelconque.

L'essentiel de la modif est faite dans ta procédure "Verification_traitement"

'PNomTableA est le nom de la tableA dans la BD_A
'PNomTableB est le nom de la tableB dans la BD_B
'PNomChampClePrimaire est le nom du champ qui fait office de clé primaire pour les 2 tables.

Public Sub Verification_traitement(PNomtableA As String, PNomTableB As String, PNomChampClePrimaire As String)
Dim fld As Field

PathFileDB_A = App.Path & "\"      'même chemin que ton appli
PathFileDB_B = App.Path & "\"
NameFileDB_A = "baseA.mdb"
NameFileDB_B = "baseB.mdb"

SQLA = "SELECT * FROM [" & PNomtableA & "]"  'tous les enregistrements de la tableA

Call Open_Connection
  Call Open_RecordSetA

If RsAccessA.EOF = False Then    ' Vérifie qu'il existe au moins un enregistrement

    RsAccessA.MoveFirst   'se place sur le premier enregistrement

    Do    'ammorce une boucle "tant que..."
        'Suivant le type du champ clé primaire formaté la valeur du critère
        Select Case RsAccessA.Fields(PNomChampClePrimaire).Type
            Case adVarChar, adVarWChar, ...: CriterFiltre_B = Chr$(34) & RsAccessA.Fields(PNomChampClePrimaire).Value & Chr$(34)
            Case adDate, adDBDate, ...: CriterFiltre_B = "#" & Format(RsAccessA.Fields(PNomChampClePrimaire).Value, "mm/dd/yy") & "#"
            Case Else:CriterFiltre_B = RsAccessA.Fields(PNomChampClePrimaire).Value
            
        End Select
    
        SQLB = "SELECT * FROM [" & PNomTableB & "]" & _
            " WHERE [" & PNomChampClePrimaire & "]=" & CriterFiltre_B & _
            " ORDER BY [" & PNomChampClePrimaire & "]"
            

        Call Open_RecordSetB
    
            If RsAccessB.EOF = False Then 'Verifier si enregistrement existe
                GoTo SUITE_A 'Il existe donc on passe à la recherche suivante
            Else
                ' il n'existe pas, on rajoute dans base B
                RsAccessB.AddNew 'Ajouter un enregistrement
                
                'Chaque enregistrement ajouté à la tableB doit être identique à la tableA
                For Each fld In RsAccessB.Fields
                    fld.Value = RsAccessA.Fields(fld.Name).Value
                Next fld

                RsAccessB.Update 'Valider l'ajout en mettant à jour la base

            End If
SUITE_A:
            Call Close_RecordSetB
    
        RsAccessA.MoveNext  'passer à l'enregistrement suivant
    Loop While RsAccessA.EOF = False

End If

  Call Close_RecordSetA
Call Close_Connection

End Sub

Donc, dans la procedure Command1_Click tu fera un appel de ce genre: Call Verification_traitement("TableA", "TableB", "Produits")
NB : En tenant compte de tes 2 BD (BaseA et BaseB) le reste n'est pas efficace car le champ "Produits" n'est pas la clé primaire des 2 tables. il faudra donc ajouter dans chaque table un champ clé primaire de même nom.

Vu le niveau débutant de ta source, je pense que cette reflexion est suffisante pour entrevoir la suite. Mais rassures toi ce n'est pas top, c'est juste pour un petit plus

juste une petite remarque, après avoir ajouté les enregistrements manquants, pour les enregistrements existants il faudra penser à une mise à jour.

j'espère t'avoir apporté un petit plus, c'est qu'en ce moment je travaille sur le synchronisation de plusieurs BD ACCESS pour une appli multi site, surtout que BRUNEWS a jeté un oeil la dessus j'étais bien curieux de voir ce que c'était.

A+

Commentaire de m2rtech le 27/12/2007 09:02:16

Bonjour, une amélioration 2 ans après.

il suffit d'une commande SQL du genre :

UPDATE table1 set table1.champs1 = table2.champs1 where table1.champ_reference
not in (SELECT table2.champ_reference
FROM table1 INNER JOIN table2 ON table1.champ_reference  = table2.champ_reference )

RG

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

access + vba.... nbre de lignes de données ds une table [ par Nourssette ] Bonjour J'aimerai savoir s'il existe une ligne de code en vba qui permet de récupérer le nombre de lignes de données saisies dans une table...aidez mo transfert de données de VBA vers ACCESS [ par pearl ] j'ai créé une application excel et je voudrais récupérer les données résultant du traitement pour les inserer automatiquement dans une Table Access.En Access/VBA/VB [ par tbatit ] bonjourje suis entrain de deveopper une application vb/access, j'ai referencee dans mon projet la lybrairie "Microsoft Access 8.0", j'ai utilisé du co base de données access et vb [ par julien ] BonjourPourriez-vous m'indiquer la méthode pour ouvrir une base de donnéés access à partir de VB ( cases à cocher ...,code...) ainsi que le programme Gestionnaire des données sous vb 5/6 pour creer une base access [ par parker59 ] Bonjour,Je voudrais savoir utiliser le gestionnaire des données dans Visual Basic 5 ou 6. (C'est pour créér des bases de données Access ou autres sans lien de vb à bd access [ par shenron ] Pour mon projet, j'ai besoin de faire un lien entre vb et access: kd on entre les données dans un formulaire ke g crée avec vb, comment faire pour ke Enregistrer données du formulaire Vb dans BD access [ par shenron ] Pas besoin d'explication, mon formulaires contient des données dt les champs sont les meme que dans ma base access, commment les enregistrer? help please access +VB [ par kyp ] + excel mm...bonjour je suis +/-debutant en prog,et je dois realiser un prog en VB ki accede a une base de données access,pour utiliser ces données ds VB: Ouvrir une base de données Access [ par Gabalgabow ] Bonsoir!Quelqu'un peut me rappeler comment ouvrir une base de données Access en VB?On a bien vu en cours qu'il faut utiliser l'objet Recordset mais il


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales