EXPORTER LA STRUCTURE D'UNE BASE ACCESS DANS UN FICHIER TEXTE

el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 28 juil. 2004 à 13:09
drissanas1 Messages postés 8 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 1 mai 2009 - 23 mai 2009 à 15:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24950-exporter-la-structure-d-une-base-access-dans-un-fichier-texte

drissanas1 Messages postés 8 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 1 mai 2009
23 mai 2009 à 15:03
d'abord merci, vous faites de tres bons travail. mon pb c'est comment faire pour exporter des champs et en même temps conserver leurs longueurs déjà definie en access, par exemple
....
....
Print #1, rs!champs1 & ";" & rs!champs2 & ";" & rs!champs3
rs.MoveNext
.....
sachant que champs1 a 5 caractères comme longueur
et champs2 a 56 caractères comme longueur
et champs3 a 120 caractères comme longueur
et ainsi de suite
et merci
rrupp Messages postés 8 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 5 octobre 2005
9 mars 2005 à 04:27
Salut tout baigne ma base fonctionne, je te remercie encore pour l'aide qui vaut bien un 10/10 car tu eu beaucoup de la patience.

Je te joint la source, au cas si cela peu servir pour une autre personne.

Salutations
RR

Private Sub Form_Load()

'Private Sub Form_Load()
Dim MaConn As ADODB.Connection, rstTable As ADODB.Recordset
Dim rs As ADODB.Recordset

'création de la connexion
Set MaConn = New ADODB.Connection
MaConn.Provider = "Microsoft.Jet.OLEDB.4.0;"

'Set db = OpenDatabase("C:\A-export\Toukass.mdb")
MaConn.Open "C:\A-export\Toukass.mdb"

Set rstTable = New ADODB.Recordset

' Transfert de la table
rstTable.Open "Journal", MaConn, , , adCmdTable
'MaConn.Open "select * from journal", "C:\A-export\Toukass.mdb"
Open "C:\A-export\Journal.txt" For Output As #1
While Not rstTable.EOF
Print #1, rstTable!Index & "; " & rstTable!Date & "; """ & rstTable!Time & """; " & rstTable!Machine & "; " & rstTable!Coupon & "; " & rstTable!Waiter & "; " & rstTable!Invoice & "; " & rstTable!Address & "; " & rstTable!Finance & "; " & rstTable!Product & "; " & rstTable!Category & "; " & rstTable!Taxe & "; """ & rstTable!Code & """; " & rstTable!Quantity & "; """ & rstTable!Text & """; " & rstTable!Amount & "; " & rstTable!Level & "; " & rstTable!Rate & "; " & rstTable!Weight & "; " & rstTable!Dispense & "; " & rstTable!Group & "; " & rstTable!Void & "; " & rstTable!Receipt & "; " & rstTable!Closed & "; " & rstTable!Owner & "; " & rstTable!CSerie & "; " & rstTable!CUser & "; " & rstTable!DateTime; ""
rstTable.MoveNext
Wend
Close #1
rstTable.Close

Unload Me

End Sub
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
8 mars 2005 à 21:06
'création de la connexion
Set MaTable = New adodb.Connection
MaTable.Provider = "Microsoft.Jet.OLEDB.4.0;"
Set db = OpenDatabase("C:\A-export\Toukass.mdb")

enleve tout ca !!!!
rrupp Messages postés 8 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 5 octobre 2005
8 mars 2005 à 20:53
Salut j'ai Microsoft ActiveX Data Object 2.8 Library et le ADODB se met bien en majuscule. Je pense que c'est un problème du chargement de la base. J'ai le message

[Microsoft][Gestionner de pilots ODBC] Source de données introuvable et nom de pilote non spécifié

Et met la commande si dessous en jaune
rs.Open "select * from journal", "C:\A-export\Toukass.mdb"

J'ai fais un tour sur divers site pour voir l'erreur, un site de parle de MyODBC et d'autres de SQL ou XmlRad etc...
à ne plus savoir se qui est j'uste.

Je me pose la question si mon script tient la route (dans le message de hier) qu'en pense tu.
Je te remcie déjà pour les infos qui m'ont déjà était très utiles
Salutations
RR
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
8 mars 2005 à 19:26
Il faut que tu ajoute la référence
Microsoft ActiveX Data Object 2.5 Library
visiblement elle n'est pas ajouté car ADODB devrait se mettre seul en majsucule
A+
juva
rrupp Messages postés 8 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 5 octobre 2005
8 mars 2005 à 06:19
Salut j'espère que je te prend pas trop de ton temp.
comme tu voit je début. Il me semble que dans ma source la table ne se charge pas. Si je met simplement la commande Open "c:\table.txt" for output as #1 le fichier se crée mais vide. Je te joins une fois ma source,
je ne pense pas qu'il y a pire.

Avec mes saluations

RR

Private Sub Form_Load()

Dim MaTable As adodb.Connection, rstTable As adodb.Recordset
Dim db As DAO.Database
Dim Tbl As DAO.Recordset
Dim rs As New adodb.Recordset

'création de la connexion
Set MaTable = New adodb.Connection
MaTable.Provider = "Microsoft.Jet.OLEDB.4.0;"
Set db = OpenDatabase("C:\A-export\Toukass.mdb")

Set rstTable = New adodb.Recordset


' Transfert de la table
rs.Open "select * from journal", "C:\A-export\Toukass.mdb"
Open "C:\A-export\Journal.txt" For Output As #1
While Not rs.EOF
Print #1, rs!champs1 & ";" & rs!champs2 & ";" & rs!champs3
rs.MoveNext
Wend
Close #1
rs.Close


Unload Me

End Sub
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
8 mars 2005 à 05:29
dim rs as new adodb.recrdset
rs.open "select * from matable","tabase"
open "c:\table.txt" for output as #1
while not rs.eof
print #1, rs!champs1 & ";" & rs!champs2 & ";" & rs!champs3
rs.movenext
wend
close #1
rs.close
rrupp Messages postés 8 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 5 octobre 2005
8 mars 2005 à 03:09
Salut, je te remercie pour la rapide réponse, c'était bien une erreur de chemin, le transfert des noms des tables fonctionne très bien. Je cherche une solution pour faire un transfert de table dans un fichier txt voir exemple

"Text";20;"B";20.02.05;12.00
"Text2";20;"C";20.02.05;13.11

je cherche une solution depuis plusieur semaines et je ne trouve rien, si tu a une solution à mon problème cela serai super.
Encore merci
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
7 mars 2005 à 18:20
quel genre d'erreur tu as ?
tu n'aurais pas mis un mot de passe sur ta base ?!
et il faut bien entré le chemin COMPLET: c:\mabase\test.mdb

vala
++
juva
rrupp Messages postés 8 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 5 octobre 2005
7 mars 2005 à 18:02
L'exemple est très bien, mais est t'il possible d'avoir la base compléte pour faire un test (le fichier mdb).
Quand je met le chemin de ma base cela ne fonctionne pas.

Merci.
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
27 août 2004 à 11:12
Je sais pas si j'avais déjà voté, mais ce coup ci j'ai mis 10/10, car je suis a la fin de mon stage et c'est vraiment pratique pour faire un petit resumé de ma base de données.

PS; programix j'ai testé aussi ta source, certes elle est plus complète, mais les 2 sources ont leur intéret je trouve ;)
cs_jym Messages postés 115 Date d'inscription lundi 31 décembre 2001 Statut Membre Dernière intervention 15 avril 2014
2 août 2004 à 17:06
Bonjour,

j'ai bien aimé votre code, mais je n'y ai pas trouvé ce que cherchai, c'est à dire le type de champ et sa longueur autorisée (pour les zones de texte) parce que ça me manquait (hi!!).

je me permets de donner qq informations qui pourraient servir à d'autres :

il semble qu'un champ d'une base de données (ici access97) ait 28 propriétés (de 0 à 27 dans le code). je n'ai pas trouvé de table d'équivalence pour les valeur du champ //*DATA_TYPE ; n° 11 ; 3 //.

le chiffre 3 semble, ici, correspondre à un index, le texte du champ (le type de contenu) seul prend la valeur 130.

pour extraire ces données j'ai ajouté une boucle de scrutation du champ (ne pas oublier le Dim i en haut de la form) :

'on parcours les champs
Do While Not rstEnfant.EOF

'on écri les champs précédés d'un "-"
Print #1, " - " & rstEnfant!column_name

'text ajouté par jym
For i = 0 To rstEnfant.Fields.Count - 1

Print #1, " *" & rstEnfant.Fields(i).Name & " ; n° " & i & " ; "; rstEnfant.Fields(i).Value
Next i
'fin du texte ajouté par jym

'champs suivant
rstEnfant.MoveNext

Loop


le reste du code pas touché.

un peu de mise en page et voila imprimable la structure d'une base. merci pour ce coup de pouce.

Ca me semble interressant quand on veut retoucher un code existant, ça permet de connaitre le type de data autorisé et sa longeur.

si qq peut trouver les correspondances des valeurs des différentes propriétés, je lui en serai reconnaissant!!

bonne continuation

jym
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
29 juil. 2004 à 18:31
ben Duss tout dabord je ne voulais que quelque chose de visuel pour comparer 2 DB, dc voila...
ensuite kom je le précise + haut, lexportation vers un .txt allege considérablement le code
derniere raison et pas des moindres je ne connais que très peu l'xml ^^

Proviste -> ben de toute façon a partir du treeview je navai rien reussi a faire...

merci pour vos commentaires ^^

Cordialement
juva
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
29 juil. 2004 à 18:24
nianiania xml nianiania
Bien joué Juva et merci de pas avoir tenu compte de ce que badger_71 et moi t'avions dis :>
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
29 juil. 2004 à 15:40
bon moi je fais plus de vb mais ca a l'air cool :p
juste un truc : pourquoi pas un export xml qui permettrais d en faire ce que tu veux apres ?
tempusus Messages postés 358 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 9 octobre 2017 1
29 juil. 2004 à 11:55
Pas mal et fonctionnel. j'avais justement besoin d'une telle source pour des tests sur une base et ça marche bien.

En plus, point très positif, cette source est bien commentée.

8/10 pour ce travail

Cordialement

Tempusus
Admin CS
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
28 juil. 2004 à 14:55
en effet je n'ai pas vu cette source...:/ elle m'aurait probablement bien servi mais je ne regrette pas d'avoir posté la mienne car en effet tu utilise DAO...DAO et largement obsoloète, et le seul avantage qu'il présentait est celui que l'on a mis en avant dans nos source respective : les structures des bases...
Cette fonction ayant été incorporé dans ADO je préfère utilisé quelque chose de fiable et performant.

quand au mot de passe il n'y a rien de compliké il faut juste creer la chaine de connexion en ajoutant "password=tonpass;", il n'y a donc pas grand chose a modifier !

ma fonction retrace comment récupérer simplement les tables et les champs d'une base de données. et le document texte allège encore le code, vu que c'est trè rapide a mettre en oeuvre.

Je ne déplore en rien l'efficacité de ta source qui est probablement très bonne mais elles utilisent 2 technologies différentes.
Maintenant si tu comptes le nombre de code en double qu'il y a sur le site...je pense pas que c'est les notres les plus représentés.

Cordialement
juva
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
28 juil. 2004 à 14:45
Tu n'as pas dû chercher beaucoup parmis les sources disponibles sur ce site parce que j'avais en son temps réalisé une source qui exportait la structure d'une BD access dans un document Word.

"RÉALISER UNE DOCUMENTATION SUR LA STRUCTURE DE VOS BASES DE DONNÉES ACCESS"
http://www.vbfrance.com/code.aspx?ID=8327

Cette source a encore quelques lacunes (comme tu pourras le constater en lisant les commentaires), mais elle a le mérite d'exister et de présenter une manière de travailler avec Word. Elle utilise DAO et permet (si ma mémoire ne fait pas défaut) de travailler sur des BD ayant un mot de passe.

A toi de voir...
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
28 juil. 2004 à 13:55
en effet il faut ajouter la Référence Microsoft ActiveX Data Object 2.5 Library (ou 2.7) suivant le service pack de ton vb6

tu peux enlever les autres librairies

++ juva
asterik Messages postés 66 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 29 juillet 2004 1
28 juil. 2004 à 13:38
Il te fo ajouter la référence
Microsoft active data objects 2.0
Voila
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juil. 2004 à 13:09
Lu, j'aimerais bien tester ce petit programme, mais j'ai vraiment du mal avec les librairies, il marque "typre défini par l'utilisateur non défini" a propos de MaConn As ADODB.Connection

pourrais tu me dire quelles sont les librairies a ajouter ?

j'ai ajouté :
microsoft ADO Ext 2.7
micorsoft DAO 3.6

mais ca suffit pas apparement :(
Rejoignez-nous