OVH Cloud OVH Cloud

formulaire mode continu

10 réponses
Avatar
vince
bonsoir a tous,
j'ai un formulaire en mode continu.
Pour y afficher les données, j'ai le code suivant:

req = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact =
" & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"
Set Rs = Db.OpenRecordset(req)
While Not Rs.EOF
Form_contact_succint.Libelle = Rs!Libelle
Form_contact_succint.reponse = Rs!reponse
Rs.MoveNext
Wend
Rs.Close

ca ne marche cependant pas: le formulaire ne s'agrandit pas (pas d'ajout de
ligne), alors qu'il y a plusieurs données.
Mon formulaire est pourtant bien déclaré en mode continu.
Y at-il une manip a faire, dans le genre ajouter une nouvelle ligne au
formulaire ?

Question subsidiaire: en mode continu, le formulaire s'affiche sous forme de
champs les un a cote des autres. Je préférerais une vue sous forme de
tableaux, car ca permet de redimensionner les colonnes? Est-ce possible ?


Merci.

10 réponses

Avatar
3stone
Salut,

"vince"
j'ai un formulaire en mode continu.
Pour y afficher les données, j'ai le code suivant:

req = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact > " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"
Set Rs = Db.OpenRecordset(req)
While Not Rs.EOF
Form_contact_succint.Libelle = Rs!Libelle
Form_contact_succint.reponse = Rs!reponse
Rs.MoveNext
Wend
Rs.Close

ca ne marche cependant pas: le formulaire ne s'agrandit pas...
<snip>



Normal... ;-)

Mets ton req comme RecordSource tu formulaire !

Me.RecordSource = req



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
vince
D'accord, mais comment çamarche ?
Je t'avouerais que je l'ai mis au hasard dans la boucle, et ça ne donne
rien. J'ai regardé l'aide sur RecordSource mais je ne pige pas trop.
Peux-tu m'éclairer ?

D'avance merci


"3stone" a écrit dans le message de news:

Salut,

"vince"
j'ai un formulaire en mode continu.
Pour y afficher les données, j'ai le code suivant:

req = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE
(An_contact > > " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY


Sous_Num;"
Set Rs = Db.OpenRecordset(req)
While Not Rs.EOF
Form_contact_succint.Libelle = Rs!Libelle
Form_contact_succint.reponse = Rs!reponse
Rs.MoveNext
Wend
Rs.Close

ca ne marche cependant pas: le formulaire ne s'agrandit pas...
<snip>



Normal... ;-)

Mets ton req comme RecordSource tu formulaire !

Me.RecordSource = req



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------












Avatar
3stone
Salut,

"vince"
D'accord, mais comment çamarche ?


Au gaz ;-)))

Je t'avouerais que je l'ai mis au hasard dans la boucle, et ça ne donne
rien. J'ai regardé l'aide sur RecordSource mais je ne pige pas trop.
Peux-tu m'éclairer ?



Pas dans la boucle...

req = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"

Me.RecordSource = req


Mais, faut voir ou se trouve "An_contact" et "Num_contact"



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
vince
Mais, faut voir ou se trouve "An_contact" et "Num_contact"
En fait, An_contact et Num_contact sont 2 variables. Par contre, le bout de

code est exécuté depuis un aute formulaire.
J'ai donc remplacé Me.RecordSource = req par
Form_contact_succint.RecordSource mais ca ne marche touours pas.

Ca fait 2 jours que j'essaie de tourner ça dans tous les sens, sans
résultat. Par contre, j'ai toujours un autre pb, qui est bloquant pour la
suite:
mon formulaire en mode continu n'est pas sous forme de tableau, mais sous
forme de champs placés les uns a cote des autes. Y a t-il moyen d'avoir un
affichage sous forme de tableau ?
Si c'est non, inutile de pousser plus loin poue les pb de recordsource.
En tout cas, merci pour ton aide.


"3stone" a écrit dans le message de news:
#QHD62$
Salut,

"vince"
D'accord, mais comment çamarche ?


Au gaz ;-)))

Je t'avouerais que je l'ai mis au hasard dans la boucle, et ça ne donne
rien. J'ai regardé l'aide sur RecordSource mais je ne pige pas trop.
Peux-tu m'éclairer ?



Pas dans la boucle...

req = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact
" & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"

Me.RecordSource = req


Mais, faut voir ou se trouve "An_contact" et "Num_contact"



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------







Avatar
3stone
Salut,

"vince"
Mais, faut voir ou se trouve "An_contact" et "Num_contact"
En fait, An_contact et Num_contact sont 2 variables. Par contre, le bout de

code est exécuté depuis un aute formulaire.
J'ai donc remplacé Me.RecordSource = req par
Form_contact_succint.RecordSource mais ca ne marche touours pas.



Si le formulaire se nomme "Form_contact_succint", il faut :

Forms!Form_contact_succint.Recordsource

et les variables devraient-être "Public", déclarée dans un module standard.


Ca fait 2 jours que j'essaie de tourner ça dans tous les sens, sans
résultat. Par contre, j'ai toujours un autre pb, qui est bloquant pour la
suite:
mon formulaire en mode continu n'est pas sous forme de tableau, mais sous
forme de champs placés les uns a cote des autes. Y a t-il moyen d'avoir un
affichage sous forme de tableau ?
Si c'est non, inutile de pousser plus loin poue les pb de recordsource.



Tu veux que les contrôlent se "remplissent" les uns à coté des autres ??

Là, effectivement, tu ne pourras faire que par code VBA et encore,
à condition que le nombre de contrôles et champs concernés
soit d'un nombre fixe!!!


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------


Avatar
vince
"3stone" a écrit dans le message de news:
#
Salut,

"vince"
Mais, faut voir ou se trouve "An_contact" et "Num_contact"
En fait, An_contact et Num_contact sont 2 variables. Par contre, le bout

de


code est exécuté depuis un aute formulaire.
J'ai donc remplacé Me.RecordSource = req par
Form_contact_succint.RecordSource mais ca ne marche touours pas.



Si le formulaire se nomme "Form_contact_succint", il faut :

Forms!Form_contact_succint.Recordsource

et les variables devraient-être "Public", déclarée dans un module
standard.



Ca fait 2 jours que j'essaie de tourner ça dans tous les sens, sans
résultat. Par contre, j'ai toujours un autre pb, qui est bloquant pour
la


suite:
mon formulaire en mode continu n'est pas sous forme de tableau, mais
sous


forme de champs placés les uns a cote des autes. Y a t-il moyen d'avoir
un


affichage sous forme de tableau ?
Si c'est non, inutile de pousser plus loin poue les pb de recordsource.



Tu veux que les contrôlent se "remplissent" les uns à coté des autres
??

Je veux que les champs se remplissent les uns en dessous des autres,comme
dans 1 table Excel.
En fait, ca marche tres bien lorsque je crée une requete avec l'assistant,
et lui associe un formulaire. Le pb de la requete est qu'elle est liée a 1
table. Je veux pouvoir utiliser le même formulaire avec plusieurs tables.
C'est pour ca que je fait un formulaire générique (en mode continu), et que
je veux le remplir avec du code vba. Je me retrouve avec 2 pb: je n'arrive a
remplir mon formulaire en ajoutant des lignes: seule la derniere s'affiche,
et je n'arrive pas a présenter le formulaire sous forme de tableau, alors
que ca marche avec le formulaire associé a la requete (affichage type feuile
de données)

L'autre solution que j'envisage, c'est de passer par une table temporaire, a
laquelle sera attachée une requete faite avec l'assistant. L'inconveniant
est que ca génére des opérations d'écriture en table, donc une perte de
temps.


Là, effectivement, tu ne pourras faire que par code VBA et encore,
à condition que le nombre de contrôles et champs concernés
soit d'un nombre fixe!!!


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------








Avatar
3stone
Salut,

"vince"
Je veux que les champs se remplissent les uns en dessous des autres,comme
dans 1 table Excel.
En fait, ca marche tres bien lorsque je crée une requete avec l'assistant,
et lui associe un formulaire. Le pb de la requete est qu'elle est liée a 1
table. Je veux pouvoir utiliser le même formulaire avec plusieurs tables.
C'est pour ca que je fait un formulaire générique (en mode continu), et que
je veux le remplir avec du code vba. Je me retrouve avec 2 pb: je n'arrive a
remplir mon formulaire en ajoutant des lignes: seule la derniere s'affiche,
et je n'arrive pas a présenter le formulaire sous forme de tableau, alors
que ca marche avec le formulaire associé a la requete (affichage type feuile
de données)

L'autre solution que j'envisage, c'est de passer par une table temporaire, a
laquelle sera attachée une requete faite avec l'assistant. L'inconveniant
est que ca génére des opérations d'écriture en table, donc une perte de
temps.




Il fallait expliquer directement ce que tu souhaitait !


Pour autant que le nombre de champs soient constants:

à l'ouverture du formulaire continu...

Forms!TonFormulaire.RecordSource = TaRequete
txtCtrl1 = champ1
txtCtrl2 = champ2
txtCtrl3 = champ3
txtCtrl4 = ...

en réaliter, on peut automatiser cela en lissant la
collection "Fields" dans une boucle, et on attribue
le nom des champs au nom des controlles.

mais bon... ;-)



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
vince
"3stone" a écrit dans le message de news:
Il fallait expliquer directement ce que tu souhaitait !


Pour autant que le nombre de champs soient constants:

à l'ouverture du formulaire continu...

Forms!TonFormulaire.RecordSource = TaRequete
Ma requete est

req = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"

Forms!contact_succint.RecordSource = req me génère une erreur: "Impossible
de trouver le formulaire 'contact_succint',
mais Form_contact_succint.RecordSource = req n'en provoque pas.

txtCtrl1 = champ1
txtCtrl2 = champ2
txtCtrl3 = champ3
txtCtrl4 = ...


donc, chez moi, il faut que je mette (en fait c'est une question):
Form_contact_succint.Libelle = Libelle
Form_contact_succint.reponse = reponse
En tout cas, ça ne fonctionne pas.
Il n'y a pas besoin de OpenRecordset, ou de boucle, ou de .... ?

Voici mon bout de code. Les données sont bien récupérées, mais mon
formulaire ne s'agrandit pas (pas d'ajout de lignes en fonction du nbre
d'enregistrements récupérés):
strsql = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact
= " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"
Set Rs = Db.OpenRecordset(strsql)
Form_contact_succint.RecordSource = strsql
Do Until Rs.EOF
Form_contact_succint.Libelle = Rs(0)
Form_contact_succint.reponse = Rs(1)
Rs.MoveNext
Loop



en réaliter, on peut automatiser cela en lissant la
collection "Fields" dans une boucle, et on attribue
le nom des champs au nom des controlles.

mais bon... ;-)



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------






Avatar
3stone
re,

"vince"

Forms!contact_succint.RecordSource = req me génère une erreur: "Impossible
de trouver le formulaire 'contact_succint',
mais Form_contact_succint.RecordSource = req n'en provoque pas.

txtCtrl1 = champ1
txtCtrl2 = champ2
txtCtrl3 = champ3
txtCtrl4 = ...


donc, chez moi, il faut que je mette (en fait c'est une question):
Form_contact_succint.Libelle = Libelle
Form_contact_succint.reponse = reponse
En tout cas, ça ne fonctionne pas.



Ton formulaire s'appelle comment ?

Si "Form_contact_succint" alors:

Forms!Form_contact_succint!Libelle = ...



Il n'y a pas besoin de OpenRecordset, ou de boucle, ou de .... ?

Voici mon bout de code. Les données sont bien récupérées, mais mon
formulaire ne s'agrandit pas (pas d'ajout de lignes en fonction du nbre
d'enregistrements récupérés):
strsql = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE (An_contact
= " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"
Set Rs = Db.OpenRecordset(strsql)
Form_contact_succint.RecordSource = strsql
Do Until Rs.EOF
Form_contact_succint.Libelle = Rs(0)
Form_contact_succint.reponse = Rs(1)
Rs.MoveNext
Loop



J'ai déjà précisé qu'il ne faut PAS de boucle sur le recordset
mais bien sur les champs!!!

Field(0) .... filed(n)

pour attribuer le nom d'un champ à la source de zone de texte.#


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------


Avatar
vince
Bon laisse tomber, je n'y comprend rien et je ne m'en sort pas. Je ne trouve
pas d'exemples sur le web et je n'ai pas envie d'y passer le WE.
En tout cas, merci beaucoup pour ton aide et désolé de t'avoir fait perdre
ton temps :((

"3stone" a écrit dans le message de news:

re,

"vince"

Forms!contact_succint.RecordSource = req me génère une erreur:
"Impossible


de trouver le formulaire 'contact_succint',
mais Form_contact_succint.RecordSource = req n'en provoque pas.

txtCtrl1 = champ1
txtCtrl2 = champ2
txtCtrl3 = champ3
txtCtrl4 = ...


donc, chez moi, il faut que je mette (en fait c'est une question):
Form_contact_succint.Libelle = Libelle
Form_contact_succint.reponse = reponse
En tout cas, ça ne fonctionne pas.



Ton formulaire s'appelle comment ?

Si "Form_contact_succint" alors:

Forms!Form_contact_succint!Libelle = ...



Il n'y a pas besoin de OpenRecordset, ou de boucle, ou de .... ?

Voici mon bout de code. Les données sont bien récupérées, mais mon
formulaire ne s'agrandit pas (pas d'ajout de lignes en fonction du nbre
d'enregistrements récupérés):
strsql = "SELECT Libelle, Reponse FROM " & bdd_contact & " WHERE
(An_contact


= " & An_contact & " And Num_contact = " & Num_contact & ") ORDER BY
Sous_Num;"
Set Rs = Db.OpenRecordset(strsql)
Form_contact_succint.RecordSource = strsql
Do Until Rs.EOF
Form_contact_succint.Libelle = Rs(0)
Form_contact_succint.reponse = Rs(1)
Rs.MoveNext
Loop



J'ai déjà précisé qu'il ne faut PAS de boucle sur le recordset
mais bien sur les champs!!!

Field(0) .... filed(n)

pour attribuer le nom d'un champ à la source de zone de texte.#


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------