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

Signaler
Messages postés
498
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
-
Messages postés
8
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
1 mai 2009
-
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

Messages postés
8
Date d'inscription
mardi 31 mars 2009
Statut
Membre
Dernière intervention
1 mai 2009

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
Messages postés
8
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
5 octobre 2005

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
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
'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 !!!!
Messages postés
8
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
5 octobre 2005

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
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
Messages postés
8
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
5 octobre 2005

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
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
Messages postés
8
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
5 octobre 2005

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
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
Messages postés
8
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
5 octobre 2005

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.
Messages postés
498
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
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 ;)
Messages postés
115
Date d'inscription
lundi 31 décembre 2001
Statut
Membre
Dernière intervention
15 avril 2014

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
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
Messages postés
908
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
2
nianiania xml nianiania
Bien joué Juva et merci de pas avoir tenu compte de ce que badger_71 et moi t'avions dis :>
Messages postés
890
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
29 juillet 2004
12
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 ?
Messages postés
363
Date d'inscription
dimanche 8 février 2004
Statut
Modérateur
Dernière intervention
9 octobre 2017
1
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
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
1
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...
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
Messages postés
66
Date d'inscription
samedi 4 mai 2002
Statut
Membre
Dernière intervention
29 juillet 2004
1
Il te fo ajouter la référence
Microsoft active data objects 2.0
Voila
Messages postés
498
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
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 :(