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