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

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

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.