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

Access Discussion :

création de dump sous access


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 31
    Points
    31
    Par défaut création de dump sous access
    Bonjour,

    je souhaiterais réaliser un dump d'une base access (format txt). Celle-ci se composant d'une centaine de table. (pour info, celui-ci doit respecter une certaine structure définit dans par la norme 1388).

    Quelqu'un pourrait-il m'indiquer la méthode, voir m'envoyer un exemple ce qui m'aiderait beaucoup !

    Merci

    clemasson@hotmail.com

    Cédric

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Je ne sais pas ce qu'est la norme 1388 mais voici un code générique qui fait un dump au format texte.

    À mettre dans un module.

    Je suppose que tu as une référence sur DAO 3.6
    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
     
    dim db as database:set db=currentdb
    dim t as tabledef
    dim f as field
    dim r as recordset
    dim numFic as integer
    dim nomFic as string
    dim separateur as string:separateur="|"
     
    for each t in db.tabledefs
      if t.name not like "Msys*" then
        'Ne traite que les tables qui ne sont pas des tables système
        set r=db.openRecorset(t.name)
        numFic=freeFile()
        nomFic="C:\MonChemin\" & r.name & ".txt"
        open nomFic for output as numFic
     
        'Ecrit le nom des champs sur la 1ere ligne
        for each f in r.fields
           print #numFic,f.name;separateur;
        next f
        print #numFic,""
     
        do while not r.eof
           for each f in r.fields
              'Ecrit tous les champs sur une ligne
              print #numFic, f.value;separateur;
           next f
           print #numFic,"":'Termine la ligne
           r.moveNext
        loop
        close #numFic
        r.close:set r=nothing
      end if
    next t
     
    db.close:set db=nothing
    Au lieux des boucles de parcourt sur le recordset et les fields tu peux regarder la commande DoCmd.DatabaseExport (je ne suis pas sur du nom de la méthode fait DoCmd. et regarde la liste proposée ou vois dans l'aide). Elle permet de générer un fichier texte directement de la table selon des formats prés définis. Avec mon code tu as un contrôle totale sur la façon dont les champs sont traités et avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select case f.type
       case dbTexte
         'Traiter un champ texte 
       case dbDate
         'traiter un champ date
       case else
         msgbox "type : " ? f.type 
         error 5:'Pour attraper les types que tu as oublié
    end select
    dans ta boucle de parcours de champs tu peux vraiment customissé tes format de sortie.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bon, je reposte ton message pour le profit de tous.
    Bonjour et merci de t’être penché sur mon pb, seulement voilà le résultat de mon dump doit avoir cet aspect. A afficher au format "Courier New" dans Word pour que ce soit clair.


    *XA VCIF 111222222111
    XB VCIF A 00PAPLATE FORME 000000 S Y
    XB VCIF A 10PAVCI RANG 000000 S Y
    XB VCIF A 20PAVCI ERY 000000 S Y
    XB VCIF A 30PAVPC S Y
    XB VCIF AA 00PBENS ALT CONSIGNE E
    XB VCIF AAD 00PCDEL VEHICULE
    XB VCIF AAM 00PCMELE ALT CONSIGNE
    XB VCIF AAM10 00PDVTADCI 260000 Y
    XB VCIF AAO 00PCMOY ALT
    XB VCIF AAO10 00PDAPEIL DET C EXT 380000 Y
    XB VCIF AAO15 00PDAPEIL DET C INTER 380000 Y
    XB VCIF AAO20 00PDCTLE NAVIG 380000 Y
    XB VCIF AAO25 00PDRECEPT GPS 380000 Y
    XB VCIF AAO30 00PDANTENNE GPS 380000 Y
    XB VCIF AAO35 00PDADAPTATEUR GPS 380000 Y


    Après avoir cherché sur le net, j’ai réussi à obtenir ça :

    *XA VCIF 111222222111
    *XA VCIF_FOR 111222222111
    *XA VCIF_MTO 111222222111
    XB VCIF A 00 P A PLATE FORME 000000 S Y
    XB VCIF A 10 P A VCI RANG 000000 S Y
    XB VCIF A 20 P A VCI ERY 000000 S Y
    XB VCIF A 30 P A VPC 000000 S Y
    XB VCIF A98 00 P C INGREDIENTS 980000
    XB VCIF AA 00 P B ENS ALT CONSIGNE E
    XB VCIF AAD 00 P C DEL VEHICULE
    XB VCIF AAM 00 P C MELE ALT CONSIGNE
    XB VCIF AAM10 00 P D VTADCI 260000 Y
    XB VCIF AAO 00 P C MOY ALT
    XB VCIF AAO10 00 P D APEIL DET C EXT 380000 Y
    XB VCIF AAO15 00 P D APEIL DET C INTER 380000 Y
    XB VCIF AAO20 00 P D CTLE NAVIG 380000 Y
    XB VCIF AAO25 00 P D RECEPT GPS 380000 Y
    XB VCIF AAO30 00 P D ANTENNE GPS 380000 Y
    XB VCIF AAO35 00 P D ADAPTATEUR GPS 380000 Y

    Voici mon code :
    *****************************************************************
    Sub Dump()
    Dim db As DAO.Database
    Dim T1RCS1 As DAO.Recordset ‘ j’ai un doute sur l’intérêt de cette ligne
    Dim T2RCS2 As DAO.Recordset ‘ j’ai un doute sur l’intérêt de cette ligne
    Dim T3RCS3 As DAO.Recordset ‘ j’ai un doute sur l’intérêt de cette ligne
    Set db = Application.CurrentDb
    Set T1RCS1 = db.OpenRecordset("XA", dbOpenDynaset)
    Set T2RCS2 = db.OpenRecordset("XB", dbOpenDynaset)
    Set T3RCS3 = db.OpenRecordset("XC", dbOpenDynaset)
    Open "C:\DUMP_TEST.txt" For Output As #1


    T1RCS1.MoveFirst
    Do Until T1RCS1.EOF
    Print #1, "*"; "XA"; " "; Format(T1RCS1!EIACODXA, "@@@@@@@@@@"); " "; T1RCS1!LCNSTRXA
    T1RCS1.MoveNext
    Loop

    T2RCS2.MoveFirst
    Do Until T2RCS2.EOF
    Print #1, " "; "XB"; " "; Format(T2RCS2!EIACODXA, "@@@@@@@@@@"); " "; Format(T2RCS2!LSACONXB, "@@@@@@@@@@@@@@@@@@"); " "; T2RCS2!ALTLCNXB; " "; T2RCS2!LCNTYPXB; " "; T2RCS2!LCNINDXB; " "; T2RCS2!LCNAMEXB; " "; T2RCS2!TMFGCDXB; " "; T2RCS2!SYSIDNXB; " "; T2RCS2!SECITMXB; " "; T2RCS2!RAMINDXB
    T2RCS2.MoveNext
    Loop


    T3RCS3.MoveFirst
    Do Until T3RCS3.EOF
    Print #1, " "; "XC"; " "; T3RCS3!EIACODXA; " "; T3RCS3!LSACONXB; " "; T3RCS3!ALTLCNXB; " "; T3RCS3!LCNTYPXB; " "; T3RCS3!UOCSEIXC; " "; T3RCS3!PCCNUMXC; " "; T3RCS3!ITMDESXC; " "; T3RCS3!PLISNOXC; " "; T3RCS3!TOCCODXC; " "; T3RCS3!QTYASYXC; " "; T3RCS3!QTYPEIXC; " "; T3RCS3!QTYASYXC

    T3RCS3.MoveNext
    Loop
    Close #1

    End Sub
    *******************************************************************


    Je ne sais pas si cette méthode est bonne, mais elle me paraît simple.
    Son avantage, c’est que je définie l’ordre d’écriture des 104 tables.

    Seulement voilà, je suis confronté à des problèmes de mise en forme. Je ne trouve pas la fonction pour écrire à gauche ou à droite.

    Et surtout, après je vais attaquer les grosses tables avec toutes sortes de formats (surtout en ce qui concerne les données numérique).

    As-tu des infos sur le format, et surtout que penses-tu de ma méthode ? Comporte-elle des risques ?

    A+

    Cédric
    Dim T1RCS1 As DAO.Recordset ‘ j’ai un doute sur l’intérêt de cette ligne
    Ne doute pas, elle déclare une variable de Type Recordset et c'est toujours beaucoup plus prudent de définir le type de tes variables que de te fier à un quellconque compilateur.

    Quand ou ne type pas ses variables on joue à la roulette russe et c'est sur qu'à un moment ou un autre ça va péter.

    Je ne trouve pas la fonction pour écrire à gauche ou à droite.
    Qu'est-ce que tu entends par là ???

    Pour le formatage je t'invite à utiliser la commande String(car, longueur) pour définir tes masques de sortie, ça évite d'avoir à compter les @ à la main.

    Apparement c'est quand même très répétitif donc tu pourrais faire une procédure à laquelle tu passerai le nom de ta table et qui mettrait tes champs en forme.

    Pour écrire à la fin d'un fichier existant il faut l'ouvrir en Append ou lieu d'output.

    Mais, ta méthode est bonne et en effet tu as un contrôle total sur la mise en forme et l'ordre des champs, le pb c'est qu'avec 104 tables tu n'es pas sorti de l'auberge.

    Tes champs sont-ils dumpés dans l'ordre où ils sont dans la table ? Si oui, ma boucle peut peut-être simplfier ton code.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Création fichier MDE sous ACCESS 2010
    Par franckb74 dans le forum Access
    Réponses: 9
    Dernier message: 13/03/2013, 22h10
  2. Automatiser la création d'étiquettes sous Access
    Par giletge dans le forum Modélisation
    Réponses: 11
    Dernier message: 18/08/2008, 20h36
  3. création de formulaire sous access et vba
    Par sdoango dans le forum VBA Access
    Réponses: 13
    Dernier message: 02/08/2007, 09h24
  4. Probleme de création nouvelle base sous ACCESS 2007
    Par choco95 dans le forum Sécurité
    Réponses: 3
    Dernier message: 10/07/2007, 08h09
  5. Réponses: 4
    Dernier message: 12/03/2007, 11h48

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