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 :

[ACCESS]Copier un recordset dans un table d'une autre bd access


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut [ACCESS]Copier un recordset dans un table d'une autre bd access
    Bonjour,

    Je suis sur un projet ou je dois archiver certaines données.

    Pour ce faire, j'ai un requète qui va chercher toutes les infos que je veux archiver (un recordset dynamique quoi).

    Ce que je veux faire :
    Copier toutes ces infos dans une table d'une base de donnée access "Archive" (création d'une table à chaques nouvelles archives)
    puis
    Supprimer les données
    J'arrive à ouvrir la base archivage, à y créer un table, pas de probleme

    Mon problème :
    Ma requete comporte une 50ène de champs donc si je dois faire un insert pour 50 champs je risque de perdre un temps fou. Je voudrai copier le recordset dans un table de ma base "archive" directement si possible !

    Merci d'avance pour votre aide,

    Cordialement Dryss

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Tu peux utiliser une requete sql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sql = "insert into tablecible select * from tablesource where..."
        CurrentDb.Execute sql
    Ok?

  3. #3
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Merci d'avoir essayé Pierre mais ca ne resoud pas mon problème, la table cible n'est pas définit, le nombre de champs dépend du nombre de champs de la requète. Donc l'insert ne peut pas marcher...
    De plus, les données doivent etre inserée dans la base archive, mais elle doivent venir de la base 'source'

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Dryss51
    Merci d'avoir essayé Pierre mais ca ne resoud pas mon problème, la table cible n'est pas définit, le nombre de champs dépend du nombre de champs de la requète...(les données) doivent venir de la base 'source'
    Je ne comprends pas très bien ton problème...

    Je suppose que ta basecible est créée avec des noms de champs qui correspondent à ceux de ta base source (ou requête source).

    Quand tu dis que la table cible n'est pas défnie, je ne comprends pas. Tu as dit que tu savais créer la base et la table de sauvegarde...
    Donc, pourquoi pas un insert dans ta table de sauvegarde que tu dis avoir su créer, et remplacer le select * from tablesource par le texte de ton recordset dynamique...? Je suppose que ton recordset dynamique est basé sur ta base source

  5. #5
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Excuse si j'ai pas été bien clair,

    Toute ces manip je les fais en vba apres un click_bouton, la table est créé mais pas les champs, je sais les créés mais je préfererai copier directement le recordset puisque c'est un table...
    Ceci m'eviterai d'alourdir le formulaire avec un code vba gourmand...
    De plus, il faudrait faire une création d'une table avec 50 champs, ce qui est très fastidieux.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Tu pourrais peut-être t'inspirer de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Dim sql As String
        sql = "select tablesource.* into backup from tablesource where ...'"
        CurrentDb.Execute sql
        DoCmd.CopyObject "NomCompletBaseBackup", backup, acTable, "backup"
    La requête SQL crée un table nommée backup au sein de la base source en copiant la structure et les enregistrements répondant à la clause WHERE.
    Puis, la table Backup est copiée dans la base de sauvegarde.

    Il faut veiller à ce que Backup n'existe pas dans les bases de données, par exemple en les détruisant en début de procédure.

    Cela te convient-il?

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bjr,

    Plutôt que de copier la table, il me semble qu'on peut directement insérer les données dans la base de données cible :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * into backup in "c:\MaBaseBackup.mdb" from tablesource

  8. #8
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Merci les gars, c'est exactement ce qu'il me fallait.
    MAIS (oui car il y a un mais), j ai un message d'erreur qui me dit je le cite
    "La table résultante ne peut pas avoir plus d'un champs autoNumber"
    Ca c'est balo!
    Mais si ce n'est que cela, je les vire!
    En tous cas merci à vous deux

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Tout à fait, Arkham46, j'avais oublié (heu... je ne connaissais pas...) cette possibilité.

    Attention à doubler les quotes dans la chaine du nom de la base cible...

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Dryss51
    Merci les gars, c'est exactement ce qu'il me fallait.
    MAIS (oui car il y a un mais), j ai un message d'erreur qui me dit je le cite
    "La table résultante ne peut pas avoir plus d'un champs autoNumber"
    Ca c'est balo!
    Mais si ce n'est que cela, je les vire!
    En tous cas merci à vous deux
    En utilisant quelle syntaxe as-tu ce problème?

  11. #11
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut Parfait
    Ouai bah ca marche en virant tous les numéro auto, car il essaie de créer une table (avec un idauto donc) et puisqu'il y avait des champs de ce format dans ma requète, c'était impossible.
    En tous cas merci, je ne connaissais pas cette syntaxe dans les requètes (into) et ca va m'éviter de passer bien du temps sur un gros vba code tous baveux .

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 20/03/2007, 00h13
  2. Export d'une table vers une autre base access
    Par VBBBA dans le forum Access
    Réponses: 2
    Dernier message: 11/09/2006, 16h23
  3. Réponses: 8
    Dernier message: 17/06/2006, 15h13
  4. [MySQL] Copier 1 champ d'1 table vers une autre.
    Par cisse18 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/04/2006, 09h50
  5. ACCESS - tester un champs dans uen table
    Par chris9999 dans le forum Access
    Réponses: 1
    Dernier message: 16/10/2005, 19h11

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