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

Bases de données Delphi Discussion :

comment copier une table vers un fichier texte ou le contraire [FAQ]


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut comment copier une table vers un fichier texte ou le contraire
    Bonjour,

    j'ai une question, et je veux que vous m'aidiez.
    Comment tranférer une table d'une BDD vers un fichier texte, et que ce fichier soit au format de colonnes (des tabulations)?

    Si quelqu'un à une idée?.

    Et merci d'avance.

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    lire la table, ecrire les lignes dans un fichier texte, en séparant les valeurs par des ; et l'enregistrer en *.csv

    Il souvrira dans un tableur Exel ou OpenOffice

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Je te remercie N1bus pour ta réponse

  4. #4
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Voici une petite fonction que je comptais proposer à la FAQ :

    Q/R : Comment exporter toutes les tables d'une base de données Access en controlant les formats de sorties :

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
     
    unit UFonctionImexport;
     
    interface
     
    Uses
     
      Classes,
      Variants,
      dialogs,
      DB,
      ADODB,
      SysUtils;
     
     
    procedure ExportToutesTables(ADataBase : String; AStrDelimiteur,
                                 Aseparateur : Char; AExtension : string);
     
    implementation
     
     
    procedure ExportToutesTables(ADataBase : String; AStrDelimiteur, ASeparateur : Char; AExtention: string);
    const
        CnnectStrA       = 'Provider=Microsoft.jet.OLEDB.4.0;Data Source=';
        CnnectStrC       = ';Persist Security info = false';
        ProvStr            = 'Microsoft.Jet.OLEDB.4.0';
        InfoContenu1    = 'Les fichiers suivants ont été créés : ';
        InfoContenu2    = 'Impossible de se connecter à : ';
    var
        TablesNum,
        ChampNum            : Integer;
        ExtensionFichier     : string;
        InfoMess,
        NomFichier,
        Recstring,
        RepTravail            : string;
        DataBaseList,
        FichiersSortieList,
        ChampsList,
        TablesList            : TStringlist;
        VT                      : Variant;
        Cnnect                : TAdoconnection;
        Tbl                     : TAdotable;
    begin
        ExtensionFichier    := AExtension;
        DataBaseList        := TStringList.Create;
        FichiersSortieList  := TStringList.Create;
        TablesList          := Tstringlist.Create;
        ChampsList          := Tstringlist.Create;
        RepTravail          := 'c:\program files\temp\outboxdata\' //ou bien utiliser ExtractFileDir(ADatabase); par exemple
        InfoMess            := InfoContenu1 + #13#13;
        Cnnect              := TAdoconnection.Create(nil);
        with Cnnect do begin
            LoginPrompt      := false;
            CursorLocation   := ClUseClient;
            ConnectOptions   := CoConnectUnspecified;
            Mode             := cmUnknown;
            try
                Cnnect.ConnectionString := CnnectStrA+Adatabase+CnnectStrC;
                Cnnect.Provider  := ProvStr;
                except
                Showmessage(InfoContenu2 +#13+''''+ ADatabase +'''');
                end; // fin du try...
            Connected        := true;
            end; // fin du with Cnnect
        Tbl := TAdotable.Create(nil);
        with tbl do begin
            Active           := false;
            Connection       := Cnnect;
            CursorLocation   := ClUseClient;
            CursorType       := ctKeyset;
            LockType         := ltOptimistic;
            MarshalOptions   := moMarshalAll;
            ReadOnly         := false;
            TableDirect      := false;
            TableName        := '';
            end;
        Cnnect.GetTableNames(TablesList, false);
        for TablesNum :=0 to TablesList.Count-1 do begin
            NomFichier       := RepTravail +
                              '\'+
                              TablesList.Strings[TablesNum]+
                              ExtensionFichier;
        Tbl.TableName    := TablesList.Strings[TablesNum];
        Tbl.Active       := true;
        FichiersSortieList.Clear;
        Tbl.First;
        While not Tbl.Eof do begin
             RecString     := '';
             for ChampNum  := 0 to Tbl.FieldCount-1 do begin
                 Vt        := VarType(Tbl.Fields[ChampNum].Value);
                 Case Vt of vtinteger, vtextended, vtcurrency, vtint64 :
                 Recstring := Recstring+
                              Tbl.Fields[ChampNum].AsString else
                 Recstring := Recstring+
                              AStrdelimiteur+
                              tbl.Fields[Champnum].AsString+
                              AStrdelimiteur;
                 end; // fin du case
             if champNum < (tbl.FieldCount-1) then
             RecString     := RecString+
                              ASeparateur;
                //
                end; // fin du for champnum.
             fichiersSortieList.Add(RecString);
             Tbl.Next;
            end;  // fin du while tbl.
            FichiersSortieList.SaveToFile(NomFichier);
            InfoMess       := InfoMess+
                              NomFichier+
                              #13;
            Tbl.Active     := false;
            end; // fin de tablenum.
        DatabaseList.Free;
        FichiersSortieList.Free;
        TablesList.Free;
        ChampsList.Free;
        Cnnect.Free;
        Tbl.Free;
        showmessage(InfoMess);
        end; // fin de la procedure.
    Imaginons que vous possédiez une base de donnée nommée "MaBase" dans le répertoire "C:\program Files\temp\.."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ExportToutesTables('C:\program Files\temp\MaBase.mdb', '""', ';', '.Csv');
    • Vous pouvez agir sur la création de la liste des tables pour n'autoriser l'exportation que d'une seule table de la base de données.
    • Vous agirez sur les variables AStrDelimiteur,Aseparateur et AExtension afin d'exporter vers tous formats textes, Csv ou bien "Custom"
    • Ajouter un paramétre de sortie pour controler à l'appel le répertoire de destination.
    • Fonctionne avec pratiquement tout ce qui est connectable aux composants ADO
    • Fonctionne avec toutes les versions de Access depuis la version 97 jusqu'a 2007
    • Ne résoud pas les problémes d'exportation des champs Blob et mémo. Pour ce faire il vous faut passer par l'exportation d'un répertoire de fichier. Je vous conseille de créer un index fictif dans le champ sous-jacent de la table

    En espérant que celà vous aidera,
    Cordialement,
    Hauwke

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

Discussions similaires

  1. [AC-2000] Comment exporter une table vers un fichier Excel ?
    Par kitou71 dans le forum Modélisation
    Réponses: 35
    Dernier message: 16/10/2009, 01h36
  2. comment exporter une table vers un fichier excel
    Par 21247692 dans le forum Développement
    Réponses: 3
    Dernier message: 27/02/2009, 14h44
  3. Réponses: 4
    Dernier message: 25/10/2007, 14h37
  4. Réponses: 1
    Dernier message: 21/07/2006, 11h54
  5. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 12h09

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