Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Liste de champs dans zone de liste (suite)

6 réponses
Avatar
denis le breton
Re bonjour
tout d'abord un grand merci à tous ceux qui MVP ou amateurs éclairés
viennent au secours des autres
je reprends le fil interrompu
le dernier contenu était de la part de Raymond :
...
Je refais un bout de chemin avec vous.
pour placer les noms de tables d'une base dans une combobox, il faut faire
ceci:
Dim Tdf As DAO.TableDef
Dim Db As DAO.Database
Set Db = OpenDatabase("F:\Mes Documents\comptoir.mdb")
Me.Modifiable1.RowSource = ""
For Each Tdf In Db.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
Me.Modifiable1.RowSource = Me.Modifiable1.RowSource & Tdf.Name & ";"
End If
Next Tdf
Set Db = Nothing
...
Déja chez moi cela ne marche pas, rien dans la zone de liste modifiable ...
je suis sous XP SP2, ACCESS 2003, et je vais craquer c'est quand même
incroyable que aucun fil sur Internet (newsgroup, google, developpez.com,
...) ne taite simplement le sujet ou alors je suis vraiment trop c.., (cela
je commence à en être convaincu)
Bref une rapide re-formulation de ce que je cherche, pour faire simple :
avoir, dans une zone de liste modifiable, la liste des champs d'une table
(dont j'aurai passé le nom en paramètre)
Si il reste encore quelqu'un qui sache, moi je sèche.
Denis

6 réponses

Avatar
Thierry (ze Titi)
Hello denis !

Si ce que t'as proposé Raymond ne fonctionne, c'est qu'il y a un
élément que nous ne connaissons pas dans ton formulaire.
Mets ta base (version minimaliste et zippée) sur
http://cjoint.com
et donne-nous le lien.

En ce jour mémorable du mercredi 18/07/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Re bonjour
tout d'abord un grand merci à tous ceux qui MVP ou amateurs éclairés
viennent au secours des autres
je reprends le fil interrompu
le dernier contenu était de la part de Raymond :
...
Je refais un bout de chemin avec vous.
pour placer les noms de tables d'une base dans une combobox, il faut faire
ceci:
Dim Tdf As DAO.TableDef
Dim Db As DAO.Database
Set Db = OpenDatabase("F:Mes Documentscomptoir.mdb")
Me.Modifiable1.RowSource = ""
For Each Tdf In Db.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
Me.Modifiable1.RowSource = Me.Modifiable1.RowSource & Tdf.Name & ";"
End If
Next Tdf
Set Db = Nothing
...
Déja chez moi cela ne marche pas, rien dans la zone de liste modifiable ...
je suis sous XP SP2, ACCESS 2003, et je vais craquer c'est quand même
incroyable que aucun fil sur Internet (newsgroup, google, developpez.com,
...) ne taite simplement le sujet ou alors je suis vraiment trop c.., (cela
je commence à en être convaincu)
Bref une rapide re-formulation de ce que je cherche, pour faire simple :
avoir, dans une zone de liste modifiable, la liste des champs d'une table
(dont j'aurai passé le nom en paramètre)
Si il reste encore quelqu'un qui sache, moi je sèche.
Denis


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Thierry (ze Titi)
Aaaahhhhh, quelle horrible chose ! 2 erreurs dans la même phrase, ça fait beaucoup, mea maxima culpa...

Si ce que t'a proposé Raymond ne fonctionne pas, c'est qu'il y a un élément que nous ne connaissons pas dans ton formulaire.
^ ^^^


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
denis le breton
Merci à toi Ze Titi de ta suggestion, un peu de temps pour refaire une p'tiot
base simple qu'il est possible de recupérer là : http://cjoint.com/?hsobOJTpW1
Si cela te semple plus explicite
Il sans dire, mais aussi et encore mieux en le disant que les références
Microsoft DAO 3.6, Microsoft ADO Ext. 2.8, entre autres sont activées
Il va toujours sans dire , ...
que les deux boutons intermédiaire n'ont qu'une valeur temporaire s'ils
pouvaient disparaître, quel bonheur
Bien en attendant une lecture instructive de ta réponse ou d'un autre
utilisateur
Bon courage ET merci
Denis

Hello denis !

Si ce que t'as proposé Raymond ne fonctionne, c'est qu'il y a un
élément que nous ne connaissons pas dans ton formulaire.
Mets ta base (version minimaliste et zippée) sur
http://cjoint.com
et donne-nous le lien.

En ce jour mémorable du mercredi 18/07/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Re bonjour
tout d'abord un grand merci à tous ceux qui MVP ou amateurs éclairés
viennent au secours des autres
je reprends le fil interrompu
le dernier contenu était de la part de Raymond :
...
Je refais un bout de chemin avec vous.
pour placer les noms de tables d'une base dans une combobox, il faut faire
ceci:
Dim Tdf As DAO.TableDef
Dim Db As DAO.Database
Set Db = OpenDatabase("F:Mes Documentscomptoir.mdb")
Me.Modifiable1.RowSource = ""
For Each Tdf In Db.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
Me.Modifiable1.RowSource = Me.Modifiable1.RowSource & Tdf.Name & ";"
End If
Next Tdf
Set Db = Nothing
...
Déja chez moi cela ne marche pas, rien dans la zone de liste modifiable ...
je suis sous XP SP2, ACCESS 2003, et je vais craquer c'est quand même
incroyable que aucun fil sur Internet (newsgroup, google, developpez.com,
...) ne taite simplement le sujet ou alors je suis vraiment trop c.., (cela
je commence à en être convaincu)
Bref une rapide re-formulation de ce que je cherche, pour faire simple :
avoir, dans une zone de liste modifiable, la liste des champs d'une table
(dont j'aurai passé le nom en paramètre)
Si il reste encore quelqu'un qui sache, moi je sèche.
Denis


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






Avatar
Thierry (ze Titi)
Après avoir regardé jeté un oeil rapidement, je constate que tu n'as
pas suivi toutes les pistes données...

D'abord, l'origine source de chaque liste déroulante doit être "Liste
valeurs".

Ensuite, tu appelles les fonctions données avec Call, hors, je t'avais
dit qu'il suffisait d'affecter le résultat de la fonction à la source
de la liste concernée. Par exemple:
table=ListeTables(BdD)

Ca vaut aussi pour la liste des champs.

Ca va te donner, dans le code du formulaire:

Private Sub List_tab_bdd_Click()
Table.RowSource = ListeTables(BdD)
End Sub

Private Sub List_chp_tab_Click()
champ.RowSource = ListerChampsTable(BdD, Table)
End Sub


Dans les fonctions, le séparateur est bien le point-virgule, pas le
retour à la ligne, ni la virgule. Voici les fonctions telles qu'elles
doivent être :

Public Function ListeTables(ByVal strBase As String) As String
Dim db As Database
Set db = OpenDatabase(strBase)
ListeTables = ""
For Each tdf In db.TableDefs
ListeTables = ListeTables & tdf.Name & ";"
Next
db.Close: Set db = Nothing
End Function

Public Function ListerChampsTable(ByVal strBase As String, ByVal
strTable As String) As String
Dim db As Database, fld As Field
ListerChampsTable = ""
Set db = OpenDatabase(strBase)
For Each fld In db.TableDefs(strTable).Fields
ListerChampsTable = ListerChampsTable & fld.Name & ";"
Next
db.Close: Set db = Nothing
End Function

Voilou !
Testé chez moi, fonctionne impeccable !

Dans ton message
Merci à toi Ze Titi de ta suggestion, un peu de temps pour refaire une p'tiot
base simple qu'il est possible de recupérer là :
http://cjoint.com/?hsobOJTpW1 Si cela te semple plus explicite
Il sans dire, mais aussi et encore mieux en le disant que les références
Microsoft DAO 3.6, Microsoft ADO Ext. 2.8, entre autres sont activées
Il va toujours sans dire , ...
que les deux boutons intermédiaire n'ont qu'une valeur temporaire s'ils
pouvaient disparaître, quel bonheur
Bien en attendant une lecture instructive de ta réponse ou d'un autre
utilisateur
Bon courage ET merci
Denis

Hello denis !

Si ce que t'as proposé Raymond ne fonctionne, c'est qu'il y a un
élément que nous ne connaissons pas dans ton formulaire.
Mets ta base (version minimaliste et zippée) sur
http://cjoint.com
et donne-nous le lien.

En ce jour mémorable du mercredi 18/07/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Re bonjour
tout d'abord un grand merci à tous ceux qui MVP ou amateurs éclairés
viennent au secours des autres
je reprends le fil interrompu
le dernier contenu était de la part de Raymond :
...
Je refais un bout de chemin avec vous.
pour placer les noms de tables d'une base dans une combobox, il faut faire
ceci:
Dim Tdf As DAO.TableDef
Dim Db As DAO.Database
Set Db = OpenDatabase("F:Mes Documentscomptoir.mdb")
Me.Modifiable1.RowSource = ""
For Each Tdf In Db.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
Me.Modifiable1.RowSource = Me.Modifiable1.RowSource & Tdf.Name &
";" End If
Next Tdf
Set Db = Nothing
...
Déja chez moi cela ne marche pas, rien dans la zone de liste modifiable ...
je suis sous XP SP2, ACCESS 2003, et je vais craquer c'est quand même
incroyable que aucun fil sur Internet (newsgroup, google, developpez.com,
...) ne taite simplement le sujet ou alors je suis vraiment trop c.., (cela
je commence à en être convaincu)
Bref une rapide re-formulation de ce que je cherche, pour faire simple :
avoir, dans une zone de liste modifiable, la liste des champs d'une table
(dont j'aurai passé le nom en paramètre)
Si il reste encore quelqu'un qui sache, moi je sèche.
Denis


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info



Avatar
denis le breton
Merci, j'ai bien testé chez moi toutes les pistes, mais n'y arrivant je suis
resté sur ce qui marchait, pour fournir la p'tiot base.
Je m'attelle à suivre scrupleusement les dernières consignes, en espérant ne
pas avoir à me faire moine !


Après avoir regardé jeté un oeil rapidement, je constate que tu n'as
pas suivi toutes les pistes données...

D'abord, l'origine source de chaque liste déroulante doit être "Liste
valeurs".

Ensuite, tu appelles les fonctions données avec Call, hors, je t'avais
dit qu'il suffisait d'affecter le résultat de la fonction à la source
de la liste concernée. Par exemple:
table=ListeTables(BdD)

Ca vaut aussi pour la liste des champs.

Ca va te donner, dans le code du formulaire:

Private Sub List_tab_bdd_Click()
Table.RowSource = ListeTables(BdD)
End Sub

Private Sub List_chp_tab_Click()
champ.RowSource = ListerChampsTable(BdD, Table)
End Sub


Dans les fonctions, le séparateur est bien le point-virgule, pas le
retour à la ligne, ni la virgule. Voici les fonctions telles qu'elles
doivent être :

Public Function ListeTables(ByVal strBase As String) As String
Dim db As Database
Set db = OpenDatabase(strBase)
ListeTables = ""
For Each tdf In db.TableDefs
ListeTables = ListeTables & tdf.Name & ";"
Next
db.Close: Set db = Nothing
End Function

Public Function ListerChampsTable(ByVal strBase As String, ByVal
strTable As String) As String
Dim db As Database, fld As Field
ListerChampsTable = ""
Set db = OpenDatabase(strBase)
For Each fld In db.TableDefs(strTable).Fields
ListerChampsTable = ListerChampsTable & fld.Name & ";"
Next
db.Close: Set db = Nothing
End Function

Voilou !
Testé chez moi, fonctionne impeccable !

Dans ton message
Merci à toi Ze Titi de ta suggestion, un peu de temps pour refaire une p'tiot
base simple qu'il est possible de recupérer là :
http://cjoint.com/?hsobOJTpW1 Si cela te semple plus explicite
Il sans dire, mais aussi et encore mieux en le disant que les références
Microsoft DAO 3.6, Microsoft ADO Ext. 2.8, entre autres sont activées
Il va toujours sans dire , ...
que les deux boutons intermédiaire n'ont qu'une valeur temporaire s'ils
pouvaient disparaître, quel bonheur
Bien en attendant une lecture instructive de ta réponse ou d'un autre
utilisateur
Bon courage ET merci
Denis

Hello denis !

Si ce que t'as proposé Raymond ne fonctionne, c'est qu'il y a un
élément que nous ne connaissons pas dans ton formulaire.
Mets ta base (version minimaliste et zippée) sur
http://cjoint.com
et donne-nous le lien.

En ce jour mémorable du mercredi 18/07/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Re bonjour
tout d'abord un grand merci à tous ceux qui MVP ou amateurs éclairés
viennent au secours des autres
je reprends le fil interrompu
le dernier contenu était de la part de Raymond :
...
Je refais un bout de chemin avec vous.
pour placer les noms de tables d'une base dans une combobox, il faut faire
ceci:
Dim Tdf As DAO.TableDef
Dim Db As DAO.Database
Set Db = OpenDatabase("F:Mes Documentscomptoir.mdb")
Me.Modifiable1.RowSource = ""
For Each Tdf In Db.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
Me.Modifiable1.RowSource = Me.Modifiable1.RowSource & Tdf.Name &
";" End If
Next Tdf
Set Db = Nothing
...
Déja chez moi cela ne marche pas, rien dans la zone de liste modifiable ...
je suis sous XP SP2, ACCESS 2003, et je vais craquer c'est quand même
incroyable que aucun fil sur Internet (newsgroup, google, developpez.com,
...) ne taite simplement le sujet ou alors je suis vraiment trop c.., (cela
je commence à en être convaincu)
Bref une rapide re-formulation de ce que je cherche, pour faire simple :
avoir, dans une zone de liste modifiable, la liste des champs d'une table
(dont j'aurai passé le nom en paramètre)
Si il reste encore quelqu'un qui sache, moi je sèche.
Denis


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info








Avatar
denis le breton
YES !
que d'avantage je revend les trombones, je ne me fais pas moine ni bonne
soeur (ou dragqueen)
j'ai juste oublié un truc c'est ce que je veus faire au final --> modifier
des données sur une base de données distantes et là hic un sql à du mal
j'ai donc le choix de lier la table, lancer le sql sur la table liée, délier
a table (je vais tester)
ou de devoir importer le formulaire et les modules quand j'en ai besoin

au fait Merci, à toi Ô ze Titi, du temps que tu as passé à me convaincre.
je ferais un post pour confirmer en détail les élements au cas où d'aute en
aurai besoin.
MERCI

Après avoir regardé jeté un oeil rapidement, je constate que tu n'as
pas suivi toutes les pistes données...

D'abord, l'origine source de chaque liste déroulante doit être "Liste
valeurs".

Ensuite, tu appelles les fonctions données avec Call, hors, je t'avais
dit qu'il suffisait d'affecter le résultat de la fonction à la source
de la liste concernée. Par exemple:
table=ListeTables(BdD)

Ca vaut aussi pour la liste des champs.

Ca va te donner, dans le code du formulaire:

Private Sub List_tab_bdd_Click()
Table.RowSource = ListeTables(BdD)
End Sub

Private Sub List_chp_tab_Click()
champ.RowSource = ListerChampsTable(BdD, Table)
End Sub


Dans les fonctions, le séparateur est bien le point-virgule, pas le
retour à la ligne, ni la virgule. Voici les fonctions telles qu'elles
doivent être :

Public Function ListeTables(ByVal strBase As String) As String
Dim db As Database
Set db = OpenDatabase(strBase)
ListeTables = ""
For Each tdf In db.TableDefs
ListeTables = ListeTables & tdf.Name & ";"
Next
db.Close: Set db = Nothing
End Function

Public Function ListerChampsTable(ByVal strBase As String, ByVal
strTable As String) As String
Dim db As Database, fld As Field
ListerChampsTable = ""
Set db = OpenDatabase(strBase)
For Each fld In db.TableDefs(strTable).Fields
ListerChampsTable = ListerChampsTable & fld.Name & ";"
Next
db.Close: Set db = Nothing
End Function

Voilou !
Testé chez moi, fonctionne impeccable !

Dans ton message
Merci à toi Ze Titi de ta suggestion, un peu de temps pour refaire une p'tiot
base simple qu'il est possible de recupérer là :
http://cjoint.com/?hsobOJTpW1 Si cela te semple plus explicite
Il sans dire, mais aussi et encore mieux en le disant que les références
Microsoft DAO 3.6, Microsoft ADO Ext. 2.8, entre autres sont activées
Il va toujours sans dire , ...
que les deux boutons intermédiaire n'ont qu'une valeur temporaire s'ils
pouvaient disparaître, quel bonheur
Bien en attendant une lecture instructive de ta réponse ou d'un autre
utilisateur
Bon courage ET merci
Denis

Hello denis !

Si ce que t'as proposé Raymond ne fonctionne, c'est qu'il y a un
élément que nous ne connaissons pas dans ton formulaire.
Mets ta base (version minimaliste et zippée) sur
http://cjoint.com
et donne-nous le lien.

En ce jour mémorable du mercredi 18/07/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Re bonjour
tout d'abord un grand merci à tous ceux qui MVP ou amateurs éclairés
viennent au secours des autres
je reprends le fil interrompu
le dernier contenu était de la part de Raymond :
...
Je refais un bout de chemin avec vous.
pour placer les noms de tables d'une base dans une combobox, il faut faire
ceci:
Dim Tdf As DAO.TableDef
Dim Db As DAO.Database
Set Db = OpenDatabase("F:Mes Documentscomptoir.mdb")
Me.Modifiable1.RowSource = ""
For Each Tdf In Db.TableDefs
If Left(Tdf.Name, 4) <> "MSys" Then
Me.Modifiable1.RowSource = Me.Modifiable1.RowSource & Tdf.Name &
";" End If
Next Tdf
Set Db = Nothing
...
Déja chez moi cela ne marche pas, rien dans la zone de liste modifiable ...
je suis sous XP SP2, ACCESS 2003, et je vais craquer c'est quand même
incroyable que aucun fil sur Internet (newsgroup, google, developpez.com,
...) ne taite simplement le sujet ou alors je suis vraiment trop c.., (cela
je commence à en être convaincu)
Bref une rapide re-formulation de ce que je cherche, pour faire simple :
avoir, dans une zone de liste modifiable, la liste des champs d'une table
(dont j'aurai passé le nom en paramètre)
Si il reste encore quelqu'un qui sache, moi je sèche.
Denis


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info