EXPORTER LA STRUCTURE D'UNE BASE ACCESS DANS UN FICHIER TEXTE
el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 2015
-
28 juil. 2004 à 13:09
drissanas1
Messages postés8Date d'inscriptionmardi 31 mars 2009StatutMembreDerniè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.
drissanas1
Messages postés8Date d'inscriptionmardi 31 mars 2009StatutMembreDerniè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és8Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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"
juvamine
Messages postés468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és8Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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és468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és8Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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és468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és8Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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
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és468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és8Date d'inscriptionmercredi 12 mai 2004StatutMembreDerniè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és497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 20159 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és115Date d'inscriptionlundi 31 décembre 2001StatutMembreDernière intervention15 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és468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 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és890Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention29 juillet 200411 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és358Date d'inscriptiondimanche 8 février 2004StatutMembreDernière intervention 9 octobre 20171 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és468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 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.
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és468Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention30 août 20072 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és66Date d'inscriptionsamedi 4 mai 2002StatutMembreDernière intervention29 juillet 20041 28 juil. 2004 à 13:38
Il te fo ajouter la référence
Microsoft active data objects 2.0
Voila
el_teedee
Messages postés497Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention13 juillet 20159 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
23 mai 2009 à 15:03
....
....
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
9 mars 2005 à 04:27
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
8 mars 2005 à 21:06
Set MaTable = New adodb.Connection
MaTable.Provider = "Microsoft.Jet.OLEDB.4.0;"
Set db = OpenDatabase("C:\A-export\Toukass.mdb")
enleve tout ca !!!!
8 mars 2005 à 20:53
[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
8 mars 2005 à 19:26
Microsoft ActiveX Data Object 2.5 Library
visiblement elle n'est pas ajouté car ADODB devrait se mettre seul en majsucule
A+
juva
8 mars 2005 à 06:19
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
8 mars 2005 à 05:29
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
8 mars 2005 à 03:09
"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
7 mars 2005 à 18:20
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
7 mars 2005 à 18:02
Quand je met le chemin de ma base cela ne fonctionne pas.
Merci.
27 août 2004 à 11:12
PS; programix j'ai testé aussi ta source, certes elle est plus complète, mais les 2 sources ont leur intéret je trouve ;)
2 août 2004 à 17:06
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
29 juil. 2004 à 18:31
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
29 juil. 2004 à 18:24
Bien joué Juva et merci de pas avoir tenu compte de ce que badger_71 et moi t'avions dis :>
29 juil. 2004 à 15:40
juste un truc : pourquoi pas un export xml qui permettrais d en faire ce que tu veux apres ?
29 juil. 2004 à 11:55
En plus, point très positif, cette source est bien commentée.
8/10 pour ce travail
Cordialement
Tempusus
Admin CS
28 juil. 2004 à 14:55
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
28 juil. 2004 à 14:45
"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...
28 juil. 2004 à 13:55
tu peux enlever les autres librairies
++ juva
28 juil. 2004 à 13:38
Microsoft active data objects 2.0
Voila
28 juil. 2004 à 13:09
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 :(