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
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) '***
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)
'***
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) '***
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) '***
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)
'***
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) '***