OVH Cloud OVH Cloud

Pb sur fonction

4 réponses
Avatar
JCM
Bonjour =E0 tous

Je veux lister les tables d'une base Access =E0 partir d'une=20
fonction, voici mon code :

Sur une form MyFonctions

Public Function ListTable(cat As ADOX.Catalog, TableName=20
As String) As Boolean
cheminTable =3D cheminBase & BaseName
'V=E9rifie que la connexion est bien ferm=E9e
If ADOcn.state =3D adStateOpen Then
ADOcn.Close
End If
Set ADOcn =3D Nothing
'creation d'une connection sur la base
With ADOcn
.Provider =3D "Microsoft.Jet.OLEDB.4.0"
.ConnectionString =3D "Data Source=3D" & cheminTable
.CursorLocation =3D adUseClient
.Open
End With
' Enum=E8re toutes les tables du catalogue
cat.ActiveConnection =3D ADOcn
For Each tbl In cat.Tables
If left(tbl.Name, 4) <> "MSys" Then
Dim MyCommande As String
MyCommande =3D MyObj & ".additem tbl.name"
Debug.Print MyCommand
End If
Next tbl
End Function

Sur une form FrmCartoChoixDepenses :

Public Function updateMyGrid()
FraVoirModele.Visible =3D True
FraVoirModele.left =3D 120
cheminBase =3D "c:\MapMarket\Bases\Depenses\Modeles\"
BaseName =3D "Modeles.mdb"
'ADOcnx.Close
'Call MyFonctions.InitConnection
MyObj =3D "FrmCartoChoixDepenses.CboModele"
Call MyFonctions.ListTable(cat, TableName)
End Function

et mon Combo ne s'affiche pas

Pouvez-vous me dir ou est l'erreur

Merci d'avance pour votre aide
Cordialement
JCM

4 réponses

Avatar
Zoury
Salut Jean-Claude! :O)

Pouvez-vous me dir ou est l'erreur



Il ne s'affiche pas ou ne se remplit pas ?!
une chose est sûre c'est que tu ne le remplis jamais...

--
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/
Avatar
JCM
Re salut Zoury

Il s'affiche mais ne se remplit pas, et je vois pas
pourquoi

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

Pouvez-vous me dir ou est l'erreur



Il ne s'affiche pas ou ne se remplit pas ?!
une chose est sûre c'est que tu ne le remplis jamais...

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


.



Avatar
Zoury
C'est parce que tu ne le remplis pas, tu créer seulement une chaine de
caractère contenant le code pour le remplir...

Tu peux passer ton ComboBox à ta fonction pour quelle le remplisse :
'***
Public Function ListTable( _
cat As ADOX.Catalog, _
TableName As String, _
cbo As ComboBox) As Boolean
cheminTable = cheminBase & BaseName
'Vérifie que la connexion est bien fermée
If ADOcn.state = adStateOpen Then
ADOcn.Close
End If
Set ADOcn = Nothing
'creation d'une connection sur la base
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With
' Enumère toutes les tables du catalogue
cat.ActiveConnection = ADOcn
For Each tbl In cat.Tables
If left(tbl.Name, 4) <> "MSys" Then
Call cbo.AddItem(tbl.name) ' on doit modifier ces lignes aussi
End If
Next tbl
End Function
'***

tu l'appellerais ainsi :
'***
Call MyFonctions.ListTable(cat, TableName, CboModele)
'***

--
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/
Avatar
JCM
Salut Zoury

Merci pour ta réponse, le problème est réglé.
J'avoue que j'ai du mal à comprendre l'écriture des
fonctions, peut-etre pourrais-tu me dire où trouver de la
doc sur ce sujet
Cordialement
Jean Claude
-----Message d'origine-----
C'est parce que tu ne le remplis pas, tu créer seulement


une chaine de
caractère contenant le code pour le remplir...

Tu peux passer ton ComboBox à ta fonction pour quelle le


remplisse :
'***
Public Function ListTable( _
cat As ADOX.Catalog, _
TableName As String, _
cbo As ComboBox) As Boolean
cheminTable = cheminBase & BaseName
'Vérifie que la connexion est bien fermée
If ADOcn.state = adStateOpen Then
ADOcn.Close
End If
Set ADOcn = Nothing
'creation d'une connection sur la base
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & cheminTable
.CursorLocation = adUseClient
.Open
End With
' Enumère toutes les tables du catalogue
cat.ActiveConnection = ADOcn
For Each tbl In cat.Tables
If left(tbl.Name, 4) <> "MSys" Then
Call cbo.AddItem(tbl.name) ' on doit modifier ces


lignes aussi
End If
Next tbl
End Function
'***

tu l'appellerais ainsi :
'***
Call MyFonctions.ListTable(cat, TableName, CboModele)
'***

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


.