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

VBA Access Discussion :

[A-03] Comment copier des enregistrements d'une table vers une autre


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Points : 84
    Points
    84
    Par défaut [A-03] Comment copier des enregistrements d'une table vers une autre
    Bonjour,

    Je viens vous solliciter à nouveau concernant le problème ci-dessous :
    Je souhaite copier quelques enregistrements d'une table vers une autre (selon certains critères). J'ai essayé 2 manières mais aucune ne fonctionne.

    - La table source s'appelle Essai1, la table destination s'appelle Essai2 (table vierge).
    - Les tables comportent les mêms noms de champs.

    - Dans la requête j'ai mis les infos suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim db As DAO.Database
    Dim db2 As DAO.Database
    Dim rec As DAO.Recordset
    Dim rec2 As DAO.Recordset
    Set db = CurrentDb
    Set rec = db.OpenRecordset("Essai1")
    Set rec2 = db.OpenRecordset("Essai2")
    J'utilise une boucle pour tester tous les enregistrements de essai1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While rec.EOF = False
    ...
    Loop
    Ensuite je vous décris les 2 situations :

    1°) Je copie champs par champs comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rec2.Edit
    Essai2![champs1]=Essai1![champs1]
    Essai2![champs3]=Essai1![champs3]
    rec2.Update
    etc ...

    lorsque je démarre la requête le message suivant apparait :
    erreur d'execution "3021" - aucun enregistrement en cours. Faut-il dans ce cas de figure créer des enregistrements vides ?

    2°) Je copie enregistrement après enregistrement avec le code suivant trouvé sur un forum :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Essai2 SELECT * FROM essai1
    mais la ligne de code reste en rouge avec la surbrillance bloquée sur le nom de la table Essai2 et je ne peux pas aller plus loin
    le message suivant apparait : erreur de compilation - attendu "fin d'instruction"

    Pourriez-vous m'apporter votre aide

    merci par avance

    MichaSarah

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,


    Hou la la... je te conseille de prendre plus de temps pour apprendre le fonctionnement de chacune des commandes que tu tentes d'utiliser, sinon tu risques de t'arracher les cheveux sans rien comprendre ...



    Argh... plus le temps de t'expliquer ... on m'appelle...


    A+
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  3. #3
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Me revoilà ...

    Citation Envoyé par MichaSarah Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rec2.Edit
    Essai2![champs1]=Essai1![champs1]
    Essai2![champs3]=Essai1![champs3]
    rec2.Update
    Essai1 et Essai2 sont des noms de tables qui ne peuvent pas être ainsi référencées dans le code. Par contre, rec et rec2 sont des recordset que tu as ouvert plus haut et que tu peux donc utiliser.

    Citation Envoyé par MichaSarah Voir le message
    erreur d'execution "3021" - aucun enregistrement en cours.
    Il ne faut pas confondre AddNew et Edit.



    Citation Envoyé par MichaSarah Voir le message

    2°) Je copie enregistrement après enregistrement avec le code suivant trouvé sur un forum :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Essai2 SELECT * FROM essai1
    mais la ligne de code reste en rouge avec la surbrillance bloquée sur le nom de la table Essai2 et je ne peux pas aller plus loin
    le message suivant apparait : erreur de compilation
    Il s'agit d'un SQL et non d'un code VBA. Pour l'exécuter, il te faut utiliser une commande telle que CurrentDB.Execute "..." par exemple.



    De manière générale, ton problème se règle sans doute en une seule requête Ajout.
    Commences donc par faire une requête sélection sur ta table Essai1 pour appliquer les critères de sélections attendus... et transforme cette en requête ajout...
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Points : 84
    Points
    84
    Par défaut
    Bonjour mout 1234,

    En suivant tes conseils et en utilisant une syntaxe comme suit cela fonctionne.

    **************************************
    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
    Dim db As DAO.Database
    Dim db2 As DAO.Database
    Dim rec As DAO.Recordset
    Dim rec2 As DAO.Recordset
    Set db = CurrentDb
    Set db2 = CurrentDb
    Set rec = db.OpenRecordset("Essai1")
    Set rec2 = db2.OpenRecordset("Essai2")
     
    Do While rec.EOF = False
            If rec![test] = Me.verif Then
            rec2.AddNew
                    rec2![val1] = rec![val1]
                    rec2![val2] = rec![val2]
            rec2.Update
           End If
     
           rec.MoveNext
    Loop
     
    End Sub
    **************************************

    encore merci
    MichaSarah

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Comment copier une table d'une BD vers une autre BD?
    Par js8bleu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/10/2009, 09h13
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

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