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...
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.