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

C++Builder Discussion :

exporter vers un fichier TXt


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut exporter vers un fichier TXt
    Bonjour,
    comment je peut exporter les données d'une table access vers un fichier text via c++ builder.
    merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    En OLE, avec un CreateObject("Access.Application").
    Tu peux faire appel à DoCmd qui t'offrira l'export via Save ou via TransferText + acExportDelim, tu trouveras des nombreux exemples d'export en VBA utilisant ces mêmes objets en Excel ou Access pour convertir le résultat d'une Query en CSV
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut faniette
    Je pense que l'on ne peut pas te donner une reponse correcte sans savoir comment tu utilise ta base Ado Ole ...
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonjour,
    merci pour vos réponse, je suis entrain de réaliser une application sous c++ builder 6 avec la bdd access pour cela j'utilise les alias BDE.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Si ton volume de données est faible (10Mo), tu peux remplir un TStringList via un TQuery, et faire un SaveToFile

    Tu peux aussi utiliser un TTable en TableType sur ttASCII, et recopier un DataSet dans un autre via une boucle sur OEF et FieldCount

    la solution via OLE "Access.Application", est toujours valable aussi
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Salut
    merci ShaileTroll pour les solutions que tu ma proposés........

  7. #7
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonjour
    j'ai réussie a exporter les données d'une table ADO vers un fichier texte *.txt
    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
    TStringList *sl = new TStringList();
     
          FConnection->Table->First();
    while(!FConnection->Table->Eof)
    {
      String Matricule=FConnection->Table->FieldByName("Matricule")->AsString;
      String Nom =FConnection->Table->FieldByName("Nom")->AsString;
      String Prenoms =FConnection->Table->FieldByName("Prenoms")->AsString;
     
      String Immat= FConnection->Table->FieldByName("NoSS")->AsString;
     
     
      sl->Add(String().sprintf("%s    %s%s                %s", N, Immat, Nom, Prenoms));
      sl->Add(String().sprintf("        %s",Nom));
     
     SaveDialog1->FileName = Edit3->Text;
     //sl->SaveToFile(SaveDialog1->FileName);
      sl->SaveToFile(ChangeFileExt(SaveDialog1->FileName, ".txt"));
      FConnection->table->Next();
      }
    je veut maintenant aligner mes données comme suite:
    N1 Immat1 Nom1 Prenom1
    N2 Immat2 Nom2 Prenom2
    N3 Immat3 Nom3 Prenom3
    ... .......... ....... ...........


    merci d'avance pour votre aide

  8. #8
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Hello
    petites questions :
    dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    sl->Add(String().sprintf("%s    %s%s                %s", N, Immat, Nom, Prenoms));
      sl->Add(String().sprintf("        %s",Nom));
    1. pourquoi insère tu 2 fois le champ Nom
    2. le champ N n'est-il pas stocké dans ta table

    les champs dans ta base de donnée ont des dimensions définies
    tu peux donc utiliser des spécificateurs de tailles ainsi que le symbole "\t" pou r insérer un tabulateur entre chaque chaine
    le spécificateur de taille doit être adapté à la taille des champs de ta base de donnée. Dans le cas contraire les éléments seront tronqués

    dans l'exemple ci-dessous la taille est spécifiée à 12 pour le prénom et le nom ce qui pourrait être insuffisant

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sl->Add(String().sprintf(L"%.2s\t%.8s\t%.12s\t%.12s",N,Mat,Pre,Name));
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  9. #9
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonjour
    merci DjmSoftware pour ta réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sl->Add(String().sprintf("%s    %s%s                %s", N, Immat, Nom, Prenoms));
      sl->Add(String().sprintf("        %s",Nom));
     
    1. pourquoi insère tu 2 fois le champ Nom
    c'est une erreur de copier coller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2. le champ N n'est-il pas stocké dans ta table
    le champ N prend les donées d'un Edit

    dans le cas ou tous les champs ne sont pas vide pas de probleme mais dans le cas ou j'ai un champ null j'ai cette résultat

    N1 Immat1 Nom1 Prenom1
    N2 (null) Nom2 Prenom2
    N3 Immat3 Nom3 Prenom3
    N4 (null) Nom4 Prenom4
    ... ...... ....... .........

    merci d'avance pour votre aide

  10. #10
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, à la place Immat par exemple utilise plustôt Immat.c_str()

    Il faut faire cela pour tout les types String.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  11. #11
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonjour,
    merci chers developpeurs pour vos sollutions
    avec c_str() je me suis débaressée de mot (null) mais le décalage éxiste toujours

  12. #12
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Je ne suis pas certain de ce que tu recherches comme output, mais est-ce que tu as penser à utiliser des tab (\t)?

    Sinon tu peux remplacer le texte vide par des espaces.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(Immat.IsEmpty())
    {
        Immat = "    ";
    }
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  13. #13
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    Bonjour, je reformule ma question
    je veut specifier la taille de champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dans l'exemple ci-dessous la taille est spécifiée à 30 pour le prénom et le nom 
    sl->Add(String().sprintf("%.2s%.8s%.30s%.30s",N,Mat,Pre,Name));


    ce que je cherche meme si la taille du nom moins de 30 le reste espace reste vide.

    merci d'avance pour votre aide

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Utilise plutôt Format que sprintf !
    sprintf est capricieux si l'on utilise des Strings (comme l'effet de bord sur le NULL)
    Format gère mieux cela !
    La chaine de format est légèrement différent,
    je me demande si sprintf "%.30s" ne fourni pas juste une troncature pour les nombres,
    tu confonds avec sprintf "%-30s" qui tronque si plus et "bourre" si moins

    "%30s" bourre à gauche
    "%-30s" bourre à droite

    Voir ma fonction CopyStuff dans Chaine de caractères avec des espaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      MemoTrace->Lines->Add("%.30s : ");
      MemoTrace->Lines->Add(AnsiString().sprintf("sprintf : %-30s", "Bob 567 ! Reste 10 !") + " ?");
      MemoTrace->Lines->Add(AnsiString().Format("Format : %-30s", OpenArray<TVarRec>("Bob 567 ! Reste 10 !"), 0) + " ?");
      MemoTrace->Lines->Add(AnsiString().sprintf("sprintf : %-30s", "Bob 567 ! après cela il n'y aura plus de place !" ) + " ?");
      MemoTrace->Lines->Add(AnsiString().Format("Format : %-30s", OpenArray<TVarRec>("Bob 567 ! après cela il n'y aura plus de place !"), 0) + " ?");
      MemoTrace->Lines->Add(AnsiString().sprintf("sprintf : %30s", "Bob 567 ! Reste 10 !") + " ?");
      MemoTrace->Lines->Add(AnsiString().Format("Format : %30s", OpenArray<TVarRec>("Bob 567 ! Reste 10 !"), 0) + " ?");
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    mille merci ShaiLeTroll

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

Discussions similaires

  1. sqlcmd export vers un fichier txt
    Par snach dans le forum Outils
    Réponses: 3
    Dernier message: 01/07/2011, 14h36
  2. Export vers un fichier txt avec transformation
    Par jlgodart dans le forum Développement
    Réponses: 2
    Dernier message: 09/02/2009, 21h54
  3. [VBA-E] Exporter une page Excel vers un Fichier Txt
    Par mamantins dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2006, 11h09
  4. Réponses: 10
    Dernier message: 08/06/2006, 08h57
  5. Export d'une table vers un fichier Txt
    Par Max30 dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 18h10

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