Exporter la structure d'une base access dans un fichier texte

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 197 fois - Téléchargée 30 fois

Contenu du snippet

J'avais besoin d'imprimer la structure d'une grosse base de données : Tables et Champs...la seule source que j'ai trouvé me permettait de généré un treeview qui me présentait la structure...toujours autant embêter car je pouvais pas imprimer
J'ai donc adapté la source, la je l'envoie dans un document texte sous la forme

Table_depots
- Code_depot
- Depot_lie_palette
- Nom_depot

ensuite on peut le mettre dans word, excel...le document text était la solution de facilité...

_____________________________________________________
Pour l'utiliser

Creer un textbox (Text1) ki contiendra le chemin complet de la base de données !
et un bouton de commande pour lancer l'opération...(Command1)

pensez à ajouter la référence ADO : Microsoft ActiveX Data Object 2.5 Library (le 2.5 est la version qui dépend de votre version de vb et du service pack, exemple avec le service pack 6 de vb6 on a la version 2.7) je pense que ça marche avec toutes les versions assez récentes

Source / Exemple :


Private Sub Command1_Click()

Dim MaConn As ADODB.Connection, rstTable As ADODB.Recordset
Dim rstEnfant As ADODB.Recordset

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

'création du recordset contenant la structure des tables
Set rstTable = New ADODB.Recordset
Set rstTable = MaConn.OpenSchema(adSchemaTables)

'on ouvre le .txt de destination
Open "c:\structure.txt" For Output As #1

'Parcours de la collection des tables
Do While Not rstTable.EOF

    NomTable = rstTable!Table_Name
    
    'élimine les tables systèmes et les Vues
    If InStr(1, NomTable, "MSYS", vbTextCompare) <> 1 And rstTable!Table_Type <> "VIEW" Then
        
        'on écrit le nom de la table
        Print #1, NomTable
        
        'on ouvre le schéma pr obtenir les champs
        Set rstEnfant = New ADODB.Recordset
        Set rstEnfant = MaConn.OpenSchema(adSchemaColumns, Array(Empty, Empty, NomTable, Empty))
        
        'on parcours les champs
        Do While Not rstEnfant.EOF
            
            'on écri les champs précédés d'un "-"
            Print #1, " - " & rstEnfant!COLUMN_NAME
            'champs suivant
            rstEnfant.MoveNext
            
        Loop
        rstEnfant.Close
        Set rstEnfant = Nothing
        'on saute une ligne pour changer de table
        Print #1, vbCr
    End If
    'table suivante
    rstTable.MoveNext
    
Loop

Close #1

End Sub

Conclusion :


voila...pas de bogues notés...si ce n'est que je n'ai pas géré les mot de passe éventuels des bases !! au pire on l'enleve momentanément...ou alors vous pouvez ouvrir une connexion ODBC pluto que de passé par le chemin de la base en dur..

merci à Jean-Marc Rabilloud et Romain Puyfoulhoux de développez.com pour la source de départ dont je me suis largement inspiré.

N'hésitez pas à commenter,critiquer...

A voir également

Ajouter un commentaire

Commentaires

drissanas1
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
rrupp
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
juvamine
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 !!!!
rrupp
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
juvamine
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.