OVH Cloud OVH Cloud

Contrôle Onglet

10 réponses
Avatar
Kolonna
Bonjour à tous,

J'ai qq p'tits soucis avec un contrôle onglet.

Structure:
Nom de l'onglet: Onglet
composé de 4 onglets soit page1, page2,...contenant chacun 1 formulaire
form1, form2,...

1. Comment se déplace-t-on d'onglet en onglet ?
pour l'instant je fais un
DoCmd.GoToControl "page1"
mais l'utilisateur est alors obligé de scroller pour apercevoir la barre des
onglets (vu la hauteur de mon form1...)
Je fais donc un DoCmd.GoToControl "Onglet" pour pointer sur l'onglet en
question...
Y a-t-il plus simple ?
et surtout qqchose qui évite à l'utilisateur de voir le scroll du formulaire ?

2. question plus généraliste:

J'ai la requete req2, source de form2.
J'ai le contrôle ctrl1 dans form1, parametre de req2.

Si je créé un nouvel enregistrement dans form2, que je reviens dans form1
pour changer ctrl1, alors form2 n'est pas mis à jour, malgré un requery.
J'imagine qu'il faut closer et rouvrir form2 pour avoir une complète mis à
jour. Or mes 2 forms ouverts dans 2 onglets différents!

Quelqu'un a-t-il une solution ?

Merci d'avance,

Kolonna.

10 réponses

Avatar
Raymond [mvp]
Bonsoir.

les onglets ne sont que des containers pour contenir des contrôles de
formulaires ou des formulaires mais ne sont pas considérés comme tels. On ne
les nomment pas pour appeler un contrôles situé dessus.
Dans les onglets on ne peut pas placer des formulaires principaux mais
seulement des sous-formulaires (ou des formulaires indépendants qui sont
considérés comme sous-formulaires). Pour se déplacer d'onglet en onglet, il
suffit de placer le focus sur un contrôle se trouvant sur l'onglet mais
l'onglet n'est jamais visé en tant que contrôle.
Soit on met le focus sur le sous-formulaire par :
Forms!formprincipal!Sous-Form.SetFocus
Soit on met le focus sur un contrôle d'un sous-formulaire
Forms!formprincipal!Sous-Form.SetFocus
Forms!formprincipal!Sous-Form!Moncontrole.SetFocus
dans ce cas on place d'abord le focus sur le sous-formulaire et ensuite sur
le contrôle.

dans le 2e cas, les deux formulaires sont des sous-formulaires séparés et
tout changement d'un contrôle dans la source peut changer les
enregistrements, à condition que le requery soit bien nommé sur le bon
sous-formulaire du style Forms!formprincipal!Sous-Form.Requery
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Bonjour à tous,

J'ai qq p'tits soucis avec un contrôle onglet.

Structure:
Nom de l'onglet: Onglet
composé de 4 onglets soit page1, page2,...contenant chacun 1 formulaire
form1, form2,...

1. Comment se déplace-t-on d'onglet en onglet ?
pour l'instant je fais un
DoCmd.GoToControl "page1"
mais l'utilisateur est alors obligé de scroller pour apercevoir la barre
des
onglets (vu la hauteur de mon form1...)
Je fais donc un DoCmd.GoToControl "Onglet" pour pointer sur l'onglet en
question...
Y a-t-il plus simple ?
et surtout qqchose qui évite à l'utilisateur de voir le scroll du
formulaire ?

2. question plus généraliste:

J'ai la requete req2, source de form2.
J'ai le contrôle ctrl1 dans form1, parametre de req2.

Si je créé un nouvel enregistrement dans form2, que je reviens dans form1
pour changer ctrl1, alors form2 n'est pas mis à jour, malgré un requery.
J'imagine qu'il faut closer et rouvrir form2 pour avoir une complète mis à
jour. Or mes 2 forms ouverts dans 2 onglets différents!

Quelqu'un a-t-il une solution ?

Merci d'avance,

Kolonna.


Avatar
Kolonna
Bonjour,

Ok, j'ai bien compris le fonctionnement des onglets, merci.
Par contre, en faisant un focus sur un contrôle d'un sous-formulaire, j'ai
toujours mon problème de scroll et de la barre d'onglets qui n'apparait pas
en cas de sous-formulaire long en hauteur ?
comment je peux gérer cet aspect ?
peut-être un "faux" controle que je place en haut de la page ?


Concernant le 2ème point, pour simplifier le problème:
si j'ai un bouton Requery sur mon formulaire, celui-ci fonctionne tout le
temps sauf lorsque je suis en train de créer un nouvel enregistrement. La
page ne se met alors pas à jour et reste bloquer sur le nouvel enregistrement
non rempli et non sauvé. Est ce normal ? Il faut je revienne sur un ancien
enregistrement pour que cela se remette à fonctionner.

De nouveau merci ,

Kolonna.

"Raymond [mvp]" wrote:

Bonsoir.

les onglets ne sont que des containers pour contenir des contrôles de
formulaires ou des formulaires mais ne sont pas considérés comme tels. On ne
les nomment pas pour appeler un contrôles situé dessus.
Dans les onglets on ne peut pas placer des formulaires principaux mais
seulement des sous-formulaires (ou des formulaires indépendants qui sont
considérés comme sous-formulaires). Pour se déplacer d'onglet en onglet, il
suffit de placer le focus sur un contrôle se trouvant sur l'onglet mais
l'onglet n'est jamais visé en tant que contrôle.
Soit on met le focus sur le sous-formulaire par :
Forms!formprincipal!Sous-Form.SetFocus
Soit on met le focus sur un contrôle d'un sous-formulaire
Forms!formprincipal!Sous-Form.SetFocus
Forms!formprincipal!Sous-Form!Moncontrole.SetFocus
dans ce cas on place d'abord le focus sur le sous-formulaire et ensuite sur
le contrôle.

dans le 2e cas, les deux formulaires sont des sous-formulaires séparés et
tout changement d'un contrôle dans la source peut changer les
enregistrements, à condition que le requery soit bien nommé sur le bon
sous-formulaire du style Forms!formprincipal!Sous-Form.Requery
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Bonjour à tous,

J'ai qq p'tits soucis avec un contrôle onglet.

Structure:
Nom de l'onglet: Onglet
composé de 4 onglets soit page1, page2,...contenant chacun 1 formulaire
form1, form2,...

1. Comment se déplace-t-on d'onglet en onglet ?
pour l'instant je fais un
DoCmd.GoToControl "page1"
mais l'utilisateur est alors obligé de scroller pour apercevoir la barre
des
onglets (vu la hauteur de mon form1...)
Je fais donc un DoCmd.GoToControl "Onglet" pour pointer sur l'onglet en
question...
Y a-t-il plus simple ?
et surtout qqchose qui évite à l'utilisateur de voir le scroll du
formulaire ?

2. question plus généraliste:

J'ai la requete req2, source de form2.
J'ai le contrôle ctrl1 dans form1, parametre de req2.

Si je créé un nouvel enregistrement dans form2, que je reviens dans form1
pour changer ctrl1, alors form2 n'est pas mis à jour, malgré un requery.
J'imagine qu'il faut closer et rouvrir form2 pour avoir une complète mis à
jour. Or mes 2 forms ouverts dans 2 onglets différents!

Quelqu'un a-t-il une solution ?

Merci d'avance,

Kolonna.







Avatar
Raymond [mvp]
le sous-formulaire étant plus grand que l'onglet il y aura toujours le
problème. soit agrandir l'onglet si c'est possible, soit créer un onglet
supplémentaire pour partager l'onglet qui cause la gêne.

la fonction requery est peut-être mal conçue dans sa syntaxe et ne s'exécute
pas. Un requery exécuté replace la source sur le 1er enregistrement.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Bonjour,

Ok, j'ai bien compris le fonctionnement des onglets, merci.
Par contre, en faisant un focus sur un contrôle d'un sous-formulaire, j'ai
toujours mon problème de scroll et de la barre d'onglets qui n'apparait
pas
en cas de sous-formulaire long en hauteur ?
comment je peux gérer cet aspect ?
peut-être un "faux" controle que je place en haut de la page ?


Concernant le 2ème point, pour simplifier le problème:
si j'ai un bouton Requery sur mon formulaire, celui-ci fonctionne tout le
temps sauf lorsque je suis en train de créer un nouvel enregistrement. La
page ne se met alors pas à jour et reste bloquer sur le nouvel
enregistrement
non rempli et non sauvé. Est ce normal ? Il faut je revienne sur un ancien
enregistrement pour que cela se remette à fonctionner.

De nouveau merci ,

Kolonna.



Avatar
Kolonna
En effet, j'ai un problème dans la syntaxe requery, que je n'arrive pas à
solutionner...
Un "Me.Requery" fonctionne très bien depuis le formulaire à mettre à jour.
Par contre, lorsque j'essaie de mettre à jour ce formulaire depuis un autre
formulaire, ca fonctionne, sauf lorsque le formulaire est ouvert sur un
nouvel enregistrement!!

Voici ma syntaxe:
Forms!Form_principal!Sous_Form.Requery

J'avoue que je vois pas trop d'où ca peut venir...

Merci d'avance Raymond,
Kolonna.



le sous-formulaire étant plus grand que l'onglet il y aura toujours le
problème. soit agrandir l'onglet si c'est possible, soit créer un onglet
supplémentaire pour partager l'onglet qui cause la gêne.

la fonction requery est peut-être mal conçue dans sa syntaxe et ne s'exécute
pas. Un requery exécuté replace la source sur le 1er enregistrement.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Bonjour,

Ok, j'ai bien compris le fonctionnement des onglets, merci.
Par contre, en faisant un focus sur un contrôle d'un sous-formulaire, j'ai
toujours mon problème de scroll et de la barre d'onglets qui n'apparait
pas
en cas de sous-formulaire long en hauteur ?
comment je peux gérer cet aspect ?
peut-être un "faux" controle que je place en haut de la page ?


Concernant le 2ème point, pour simplifier le problème:
si j'ai un bouton Requery sur mon formulaire, celui-ci fonctionne tout le
temps sauf lorsque je suis en train de créer un nouvel enregistrement. La
page ne se met alors pas à jour et reste bloquer sur le nouvel
enregistrement
non rempli et non sauvé. Est ce normal ? Il faut je revienne sur un ancien
enregistrement pour que cela se remette à fonctionner.

De nouveau merci ,

Kolonna.








Avatar
Raymond [mvp]
Si l'enregistrement en cours n'est pas sauvegardé( en nouvel enregistrement,
il n'existe pas encore), le requery ne peut pas fonctionner. Avant de faire
le requery, il faudrait placer la propriété Dirty à False pour sauvegarder
les modifs en cours dont la nouvelle saisie.
un requery sur un sous-formulaire est rare car la source est fonction du
formulaire principal. et surtout pouvoir faire un requery sur la saisie d'un
nouvel enregistrement ne parait pas être une bonne possibilité.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
En effet, j'ai un problème dans la syntaxe requery, que je n'arrive pas à
solutionner...
Un "Me.Requery" fonctionne très bien depuis le formulaire à mettre à jour.
Par contre, lorsque j'essaie de mettre à jour ce formulaire depuis un
autre
formulaire, ca fonctionne, sauf lorsque le formulaire est ouvert sur un
nouvel enregistrement!!

Voici ma syntaxe:
Forms!Form_principal!Sous_Form.Requery

J'avoue que je vois pas trop d'où ca peut venir...

Merci d'avance Raymond,
Kolonna.


Avatar
Kolonna
Je sais pas si j'ai été clair...
Dans mon cas, je fais un requery sur un formulaire qui ne sert en fait que
d'affichage de résultat, puisque la requête qui est relancée va rechercher
son paramètre dans un autre formulaire.
Peu importe alors ce que contient le formulaire, nouvel enregistrement ou
non, la requête est censée être relancée, non ?

Ca fonctionne bien lorsque mes formulaires ne sont pas dans des onglets. Par
contre, dès qu'ils sont dans des onglets, je n'arrive pas à rafraichir les
formulaires correctement, si ce n'est par Me.Requery.



Si l'enregistrement en cours n'est pas sauvegardé( en nouvel enregistrement,
il n'existe pas encore), le requery ne peut pas fonctionner. Avant de faire
le requery, il faudrait placer la propriété Dirty à False pour sauvegarder
les modifs en cours dont la nouvelle saisie.
un requery sur un sous-formulaire est rare car la source est fonction du
formulaire principal. et surtout pouvoir faire un requery sur la saisie d'un
nouvel enregistrement ne parait pas être une bonne possibilité.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
En effet, j'ai un problème dans la syntaxe requery, que je n'arrive pas à
solutionner...
Un "Me.Requery" fonctionne très bien depuis le formulaire à mettre à jour.
Par contre, lorsque j'essaie de mettre à jour ce formulaire depuis un
autre
formulaire, ca fonctionne, sauf lorsque le formulaire est ouvert sur un
nouvel enregistrement!!

Voici ma syntaxe:
Forms!Form_principal!Sous_Form.Requery

J'avoue que je vois pas trop d'où ca peut venir...

Merci d'avance Raymond,
Kolonna.







Avatar
Raymond [mvp]
Ca fonctionne bien lorsque mes formulaires ne sont pas dans des onglets.
Par
contre, dès qu'ils sont dans des onglets, je n'arrive pas à rafraichir les
formulaires correctement, si ce n'est par Me.Requery.


si ça marche par me.requery c'est bien ce que tu veux ?
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Je sais pas si j'ai été clair...
Dans mon cas, je fais un requery sur un formulaire qui ne sert en fait que
d'affichage de résultat, puisque la requête qui est relancée va rechercher
son paramètre dans un autre formulaire.
Peu importe alors ce que contient le formulaire, nouvel enregistrement ou
non, la requête est censée être relancée, non ?

Ca fonctionne bien lorsque mes formulaires ne sont pas dans des onglets.
Par
contre, dès qu'ils sont dans des onglets, je n'arrive pas à rafraichir les
formulaires correctement, si ce n'est par Me.Requery.


Avatar
Kolonna
Non, parce que j'aimerais lancer le rafraichissement depuis un autre
formulaire. Je fais donc un Forms!forms_principal!sous_formulaire.requery, et
là, ca ne marche pas...
Quelle peut être alors la correspondance avec le Me.Requery directement dans
le sous-formulaire, qui lui fonctionne?
je trouve tout ça bizarre...

"Raymond [mvp]" wrote:

Ca fonctionne bien lorsque mes formulaires ne sont pas dans des onglets.
Par
contre, dès qu'ils sont dans des onglets, je n'arrive pas à rafraichir les
formulaires correctement, si ce n'est par Me.Requery.


si ça marche par me.requery c'est bien ce que tu veux ?
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Je sais pas si j'ai été clair...
Dans mon cas, je fais un requery sur un formulaire qui ne sert en fait que
d'affichage de résultat, puisque la requête qui est relancée va rechercher
son paramètre dans un autre formulaire.
Peu importe alors ce que contient le formulaire, nouvel enregistrement ou
non, la requête est censée être relancée, non ?

Ca fonctionne bien lorsque mes formulaires ne sont pas dans des onglets.
Par
contre, dès qu'ils sont dans des onglets, je n'arrive pas à rafraichir les
formulaires correctement, si ce n'est par Me.Requery.







Avatar
Raymond [mvp]
je ne vois pas d'autre solution que Forms!formulaire4!Formulaire1.Requery
par exemple.
tu peux faire aussi:
Forms!formulaire4!Formulaire1.Form.Requery

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Non, parce que j'aimerais lancer le rafraichissement depuis un autre
formulaire. Je fais donc un Forms!forms_principal!sous_formulaire.requery,
et
là, ca ne marche pas...
Quelle peut être alors la correspondance avec le Me.Requery directement
dans
le sous-formulaire, qui lui fonctionne?
je trouve tout ça bizarre...



Avatar
Kolonna
Ben écoute, une fois de plus, merci beaucoup !!!
Car le "Forms!formulaire4!Formulaire1.Form.Requery" fonctionne !!

ouah, je risquais pas de le trouver tout seul,
merci,

Kolonna.


je ne vois pas d'autre solution que Forms!formulaire4!Formulaire1.Requery
par exemple.
tu peux faire aussi:
Forms!formulaire4!Formulaire1.Form.Requery

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kolonna" a écrit dans le message de
news:
Non, parce que j'aimerais lancer le rafraichissement depuis un autre
formulaire. Je fais donc un Forms!forms_principal!sous_formulaire.requery,
et
là, ca ne marche pas...
Quelle peut être alors la correspondance avec le Me.Requery directement
dans
le sous-formulaire, qui lui fonctionne?
je trouve tout ça bizarre...