Bonjour,
comment je peut exporter les donn�es d'une table access vers un fichier text via c++ builder.
merci d'avance.
Bonjour,
comment je peut exporter les donn�es d'une table access vers un fichier text via c++ builder.
merci d'avance.
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
Salut faniette
Je pense que l'on ne peut pas te donner une reponse correcte sans savoir comment tu utilise ta base Ado Ole ...
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.
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
Salut
merci ShaileTroll pour les solutions que tu ma propos�s........
Bonjour
j'ai r�ussie a exporter les donn�es d'une table ADO vers un fichier texte *.txt
je veut maintenant aligner mes donn�es comme suite:
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(); }
N1 Immat1 Nom1 Prenom1
N2 Immat2 Nom2 Prenom2
N3 Immat3 Nom3 Prenom3
... .......... ....... ...........
merci d'avance pour votre aide
Hello
petites questions :
dans ton code
1. pourquoi ins�re tu 2 fois le champ Nom
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));
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:
cdlt
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));
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
Bonjour
merci DjmSoftware pour ta r�ponse
c'est une erreur de copier coller
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
le champ N prend les don�es d'un Edit
Code : S�lectionner tout - Visualiser dans une fen�tre � part 2. le champ N n'est-il pas stocké dans ta table
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
Salut, � la place Immat par exemple utilise plust�t Immat.c_str()
Il faut faire cela pour tout les types String.
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![]()
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 = " "; }
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
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
mille merci ShaiLeTroll![]()
Partager