OVH Cloud OVH Cloud

Pb lister Fic avec ADOX

7 réponses
Avatar
JCM
Bonjour

je veux lister les fichiers d'une base Access
j'ai repris l'article : http://faq.vb.free.fr/index.php?
question=3D70 et cela me sort faux

voici le code :

Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Public Function TableExists(cat As ADOX.Catalog, TableName=20
As String) As Boolean
' Enum=E8re toutes les tables du catalogue
For Each tbl In cat.Tables
If tbl.Name =3D TableName Then
TableExists =3D True
Exit For
End If
Next
Set tbl =3D Nothing
End Function
Private Sub Form_Load()
cat.ActiveConnection=20
=3D "Provider=3DMicrosoft.Jet.OLEDB.4.0;Data=20
Source=3DC:\bases\magasins.mdb"
MsgBox TableExists(cat, "Table1")
Set cat =3D Nothing
End Sub

Un sp=E9cialiste peut-il me donner l'erreur

A la limite je prefere ADO mais la aussi je me plante

Merci de vos r=E9ponses
Cordialement
JCM

7 réponses

Avatar
Zoury
Salut Jean-Claude! :O)

Un spécialiste peut-il me donner l'erreur



... le code fonctionne ici..

tu obtiens une erreur?
es-tu certain que la table existe? et surtout quelle se nomme bien "Table1"
et non "table1" ou quelque chose du genre?

A la limite je prefere ADO mais la aussi je me plante



voici un exemple employant ADO :
http://groups.google.com/groups?threadm&3cd01c38e68%24dfd691b0%24a601280a%40phx.gbl

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
JCM
Bonjour Zoury

aprés consultation de la fiche Google, j'ai fais le code
suivant et cela ne marche pas :

Dim ADOcn As New ADODB.Connection
Dim ADOtable As ADODB.Recordset
Dim cheminTable As String
Private Sub Form_Load()
cheminTable = "C:MapMarketbasesmagasins.mdb"

'creation d'une connection
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With

'extraction des tables de magasins
Set ADOtable = ADOcn.OpenSchema(adSchemaTables, "TABLE
NAME")
For Each TableDef In magasins.TableDefs
If left(TableDef.Name, 4) <> "MSys" Then
MsgBox "la table est " & TableDef.Name
End If
Next TableDef
End Sub

Qu'en penses-tu ?

JCM
-----Message d'origine-----
Salut Jean-Claude! :O)

Un spécialiste peut-il me donner l'erreur



.... le code fonctionne ici..

tu obtiens une erreur?
es-tu certain que la table existe? et surtout quelle se


nomme bien "Table1"
et non "table1" ou quelque chose du genre?

A la limite je prefere ADO mais la aussi je me plante



voici un exemple employant ADO :
http://groups.google.com/groups?threadm&3cd01c38e68%


24dfd691b0%24a601280a%40phx.gbl

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire


profiter à tous


.



Avatar
Jean-Marc
"JCM" a écrit dans le message de
news:82c401c3e8a8$61e8c3a0$
Bonjour Zoury



aprés consultation de la fiche Google, j'ai fais le code
suivant et cela ne marche pas :



Bonjour,

Peux tu donner plus de précisions que simplement "ça ne marche pas"?
Que fait le programme? Une erreur se produit-elle? Si oui, laquelle ?
As tu tracé ton programme en pas à pas, etc?

Jean-Marc
Avatar
JCM
bonjour

quand je suis le code pas a pas cela BEUG sur la ligne :

Set ADOtable­Ocn.....................

le message d'erreur : le fournisseur ou l'objet ne prend
pas en charge cette opération

Cordialement
JCM
-----Message d'origine-----
"JCM" a écrit dans le


message de
news:82c401c3e8a8$61e8c3a0$
Bonjour Zoury



aprés consultation de la fiche Google, j'ai fais le code
suivant et cela ne marche pas :



Bonjour,

Peux tu donner plus de précisions que simplement "ça ne


marche pas"?
Que fait le programme? Une erreur se produit-elle? Si


oui, laquelle ?
As tu tracé ton programme en pas à pas, etc?

Jean-Marc


.



Avatar
Jean-Marc
"JCM" a écrit dans le message de
news:7b0601c3e8ef$9887cbd0$

Hello,

voici le code correct

Private Sub Form_Load()
Dim ADOcn As New ADODB.Connection ' pour la connection
Dim rs As ADODB.Recordset ' pour la query
Dim cheminTable As String ' nom de la table
Dim i As Integer

cheminTable = "C:jmdb1.mdb" ' ma base à moi

'creation d'une connection
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With

'extraction des tables de magasins
Set rs = ADOcn.OpenSchema(adSchemaTables) ' on récupère le shéma de la
DB, les tables seulement

' comptons le nombre de champs (il y en aura 9)
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name; vbTab; ' affichons les noms des
champs
Next i
Debug.Print
While Not rs.EOF ' puis on parcous le résultat du openSchema
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Value; vbTab; ' et pour chaque record
on affiche tous les champs
Next i
Debug.Print
rs.MoveNext
Wend
End Sub

il va afficher les tables systemes de ta base, puis les tables que tu as
créé.

Ce code fonctionne avec VB6, j'ai fait une base d'exemple avec access.

Jean_marc
Avatar
JCM
Bonjour Jean Marc

Merci de ta réponse, mais je veux uniquement extraire les
noms des tables de la base magasins.

C'est pour pouvoir intégrer le nom des tables dans un menu
dynamique : ouvrir magasin

Cordialement
Jean Claude
-----Message d'origine-----
"JCM" a écrit dans le


message de
news:7b0601c3e8ef$9887cbd0$

Hello,

voici le code correct

Private Sub Form_Load()
Dim ADOcn As New ADODB.Connection ' pour la connection
Dim rs As ADODB.Recordset ' pour la


query
Dim cheminTable As String ' nom de


la table
Dim i As Integer

cheminTable = "C:jmdb1.mdb" ' ma base à moi

'creation d'une connection
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With

'extraction des tables de magasins
Set rs = ADOcn.OpenSchema(adSchemaTables) ' on


récupère le shéma de la
DB, les tables seulement

' comptons le nombre de champs (il y en aura 9)
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name; vbTab; ' affichons


les noms des
champs
Next i
Debug.Print
While Not rs.EOF ' puis on parcous le résultat du


openSchema
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Value; vbTab; ' et


pour chaque record
on affiche tous les champs
Next i
Debug.Print
rs.MoveNext
Wend
End Sub

il va afficher les tables systemes de ta base, puis les


tables que tu as
créé.

Ce code fonctionne avec VB6, j'ai fait une base d'exemple


avec access.

Jean_marc


.



Avatar
JCM
Jean Marc

j'ai trouvé la solution :

Dim LenrPRE As Integer
Dim latable As String
LenrPRE = 0

Set ADOtable = ADOcn.OpenSchema(adSchemaTables)
Do Until ADOtable.EOF
Debug.Print "Table name: " & _
ADOtable!TABLE_NAME & vbCr & _
"Table type: " & ADOtable!TABLE_TYPE & vbCr
LenrPRE = LenrPRE + 1
On Error Resume Next 'permet de charger un
élément sur le précédent
Load MnuGSIndex(LenrPRE) 'charge le nouvel élément
MnuGSIndex(LenrPRE).Visible = True 'assure la
visibilité
latable = ADOtable!TABLE_NAME 'récupère le texte
MnuGSIndex(LenrPRE).Caption = latable 'affecte le
texte à l'Item du menu
ADOtable.MoveNext
Loop

Merci encore
Cordialement
JCM
-----Message d'origine-----
"JCM" a écrit dans le


message de
news:7b0601c3e8ef$9887cbd0$

Hello,

voici le code correct

Private Sub Form_Load()
Dim ADOcn As New ADODB.Connection ' pour la connection
Dim rs As ADODB.Recordset ' pour la


query
Dim cheminTable As String ' nom de


la table
Dim i As Integer

cheminTable = "C:jmdb1.mdb" ' ma base à moi

'creation d'une connection
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With

'extraction des tables de magasins
Set rs = ADOcn.OpenSchema(adSchemaTables) ' on


récupère le shéma de la
DB, les tables seulement

' comptons le nombre de champs (il y en aura 9)
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name; vbTab; ' affichons


les noms des
champs
Next i
Debug.Print
While Not rs.EOF ' puis on parcous le résultat du


openSchema
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Value; vbTab; ' et


pour chaque record
on affiche tous les champs
Next i
Debug.Print
rs.MoveNext
Wend
End Sub

il va afficher les tables systemes de ta base, puis les


tables que tu as
créé.

Ce code fonctionne avec VB6, j'ai fait une base d'exemple


avec access.

Jean_marc


.