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

Contribuez Discussion :

[FAQ] Comment faire transiter les données d'une base a une autre ADO et recordset


Sujet :

Contribuez

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut [FAQ] Comment faire transiter les données d'une base a une autre ADO et recordset
    Bonjour,
    Je suis plutot débutant et apres avoir cherché dans les tutos, FAQ, Forum VB Forum Access et aupres de mes relations. Je trouvais assez interessant de piloter depuis une Bd2, l'acquisition des données de la Bd1 pour les mettre dans une Bd3 sans que la Bd2 n'est aucune table ou requete objet créer sur le principe d' l'interface utilisateur ne contenant que du code.

    La bdd Pilot contient un module avec la function

    La Bdd source contient une Table Feuille1import avec 2 champs (Champ1 et champ2)
    La BddCible contient une table Feuille3import 2 deux champs (Champ3 et Champ4)


    Voici le code
    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
    80
     
     
    Public Function ConnectandaddbyrecordsetADO() As Integer
     
    Dim Vblerreur As String
    On Error GoTo erreur:
     
    'Déclaration des variables
    Dim Db As Database
    Dim Rst1 As ADODB.Recordset, Rst3 As ADODB.Recordset
    Dim Cnx1 As ADODB.Connection, Cnx3 As ADODB.Connection
     
    Dim BddSource As String, BddCible As String, BddPilot As String
     
    'Arborescence SI
    BddSource = "C:\Test2\Bd1.mdb"
    BddCible = "C:\Test2\Bd3.mdb"
    BddPilot = "C:\Test2\Bd2.mdb"
     
    'connexion vers la bddSource
    Set Cnx1 = New ADODB.Connection
    'Définition du pilote de connexion
    Cnx1.Provider = "Microsoft.Jet.Oledb.4.0"
    'Définition de la chaîne de connexion
    Cnx1.ConnectionString = BddSource
    'Ouverture de la base de données
    Cnx1.Open
     
    ' information issu de http://access.developpez.com/faq/?page=SQL#Recordset
    Set Rst1 = New ADODB.Recordset
    'Exécution de la requête en mémoire pour collecter les données sur la Bdd Source
    Rst1.Open "SELECT Champ1, Champ2 FROM Feuille1import", Cnx1
     
    'Envoi des données dans la Bdd Cible
    'Connexion vers la bddCible
    Set Cnx3 = New ADODB.Connection
    'Définition du pilote de connexion
    Cnx3.Provider = "Microsoft.Jet.Oledb.4.0"
    'Définition de la chaîne de connexion
    Cnx3.ConnectionString = BddCible
     
    'Ouverture de la base de données
    Cnx3.Open
    '********************
    Set Rst3 = New ADODB.Recordset
        Rst3.Open "Select * From Feuille3import", Cnx3, adOpenKeyset, adLockOptimistic
     
    'se placer sur le premier tuplet
        Rst1.MoveFirst
    'Faire tant que la totalité de Rst1 n'est pas parcouru
    While Not (Rst1.EOF)
            Rst3.AddNew
            Rst3!Champ3 = Rst1!Champ1
            Rst3!champ4 = Rst1!Champ2
            Rst3.Update
        Rst1.MoveNext
    Wend
     
    'La totalité de l'espace de la zone tampon associée au fichier fermé est libérée.
    'l'association d'un fichier avec son numéro de fichier est désactivée.
        Rst1.Close
        Rst3.Close
        Cnx1.Close
        Cnx3.Close
     
    'ressources mémoire et système associées à l'objet auquel
    'les variables font références sont libérées
    'pour éviter les erreurs d'insufisance d'espace, de piles ...
        Set Rst1 = Nothing
        Set Rst3 = Nothing
        Set Cnx1 = Nothing
        Set Cnx3 = Nothing
     
    Exit Function
    'Gestion de l'erreur
    erreur:
    Vblerreur = Err.Number & Err.Description
    MsgBox (Vblerreur)
    Exit Function
    End Function
    Zeste

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    Comme tu reste 100% Access (tes 3 bases sont ACCESS) je pencherais plus pour une méthode DAO que ADO. Je trouve plus simple à manipuler.

    De plus dans ton cas particulier, je pense qu'il y a plus simple :

    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
    Sub DvpPtCom()
    Dim Db As Object
     
    Dim BddSource As String, BddCible As String, BddPilot As String
    Dim Sql As String
     
       On Error GoTo DvpPtCom_Error
     
    'Arborescence SI
    BddSource = "C:\Test2\Bd1.mdb"
    BddCible = "C:\Test2\Bd3.mdb"
     
     
    Sql = " INSERT INTO Feuille3import ( Champ3, champ4 ) IN '" & BddCible & "' SELECT Champ1, Champ2 FROM Feuille1import;"
    Set Db = OpenDatabase(BddSource)
    Db.Execute Sql
     
    DvpPtCom_Exit:
    Set Db = Nothing
         Exit Sub
     
    DvpPtCom_Error:
        MsgBox "Erreur inatendue N°" & Err.Number & " (" & Err.Description & ") dans la fonction/procedure DvpPtCom du module Module1"
        GoTo DvpPtCom_Exit:
     
    End Sub

    A+

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2014, 16h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Passer les données ISO en UT8 dans une base UT8.
    Par Space Cowboy dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/06/2008, 13h15
  4. Réponses: 10
    Dernier message: 14/05/2008, 17h03
  5. Réponses: 3
    Dernier message: 19/04/2008, 17h32

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