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

Sauvegarde d'un formulaire

6 réponses
Avatar
Lbrun79
Bonsoir,

J'ai un formulaire qui contient un jeu d'enregistrement que je peux filtrer
ou trier via quelques boutons ou des critères de sélection que je saisis
diretement.

A partir du moment ou l'enregistrement recherché est trouvé, je sélectionne
mon enregistrement et clique sur un bouton qui me permet d'ouvrir un nouveau
formulaire en fermant l'ancien .. en fait je change la propriété SourceObject
de mon formulaire principal pour changer de formulaire.

Lorsque j'ai fini mon action dans le second formulaire, je voudrais en
cliquant sur Retour par exemple, réafficher le premier mais exactement dans
les mêmes conditions qu'au moment ou j'ai cliqué pour lancer le second.. je
voudrais pouvoir récupérer le même jeu d'enregistrement filtré, récupérer mes
critères et mes tris.
En fait je voudrais faire un peu comme dans Internet explorer avec le bouton
précédent.

J'ai bien une solution un peu lourde qui consiste à sauvegader manuellement
le contexte (contenu, le type de certains champs) avant appel et à les
restaurer ensuite mais c'est lourd et assez pénalisant en traitement ..

Existe t-il une façon simple de sauvegarder un formulaire dans un état donné
pour ensuite le restaurer ?

Merci pour vos réponses.

Laurent

6 réponses

Avatar
Raymond [mvp]
Bonsoir.

en exploitation, on ne sauvegarde que le contenu, le contexte étant réservé
aux developpeurs. il n'y a pas besoin de fermer le formulaire1 après avoir
lancé le formulaire2 et réouvrir le formulaire1 après avoir fermé le
formulaire2. On laisse le formulaire1 toujours ouvert

Sur le formulaire1, lancer le formulaire2 en acdialog.

Dim clé As Variant
Me.Dirty = False ' enregistrement
clé = Me.Bookmark ' clé = position
Me.Visible = False
DoCmd.OpenForm "Formulaire2", , , , , acDialog ' attente
Me.Requery ' actualisation
Me.Visible = True
Me.Bookmark = clé

--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Lbrun79" a écrit dans le message de
news:
| Bonsoir,
|
| J'ai un formulaire qui contient un jeu d'enregistrement que je peux
filtrer
| ou trier via quelques boutons ou des critères de sélection que je saisis
| diretement.
|
| A partir du moment ou l'enregistrement recherché est trouvé, je
sélectionne
| mon enregistrement et clique sur un bouton qui me permet d'ouvrir un
nouveau
| formulaire en fermant l'ancien .. en fait je change la propriété
SourceObject
| de mon formulaire principal pour changer de formulaire.
|
| Lorsque j'ai fini mon action dans le second formulaire, je voudrais en
| cliquant sur Retour par exemple, réafficher le premier mais exactement
dans
| les mêmes conditions qu'au moment ou j'ai cliqué pour lancer le second..
je
| voudrais pouvoir récupérer le même jeu d'enregistrement filtré, récupérer
mes
| critères et mes tris.
| En fait je voudrais faire un peu comme dans Internet explorer avec le
bouton
| précédent.
|
| J'ai bien une solution un peu lourde qui consiste à sauvegader
manuellement
| le contexte (contenu, le type de certains champs) avant appel et à les
| restaurer ensuite mais c'est lourd et assez pénalisant en traitement ..
|
| Existe t-il une façon simple de sauvegarder un formulaire dans un état
donné
| pour ensuite le restaurer ?
|
| Merci pour vos réponses.
|
| Laurent
|
|
Avatar
Lbrun79
Merci raymond.

Pour certains besoins effectivement cette solution me convient .. j'ouvre un
second formulaire en maintenant le premier ouvert et je me positionne sur le
bon enreg .. pas de problème de ce coté..

En l'occurrence mon problème est plus complexe.. J'ai un formulaire
principal qui me sert en quelque sorte d'enveloppe et qui ne bouge jamais..en
fonction des besoins et de certaines actions sur ce formulaire principal, le
sous formulaire qu'il contient doit changer .. pour se faire, je fais varier
la propriété Sourceobject du formualire principal (je n'utilise openform que
pour afficher en genéral un petit formulaire en mode boite de dailogue)

Le problème c'est qu'en changeant le nom du formulaire secondaire dans le
formulaire principal, le premier formulaire est automatiquement fermé lorsque
je le remplace par le second .. la solution pour moi est donc bien de pouvoir
quelque part conserver une copie du formulaire (de l'objet form peut-être ?)
et de la restaurer le moment venu..

Merci pour votre réponse.

Laurent


Bonsoir.

en exploitation, on ne sauvegarde que le contenu, le contexte étant réservé
aux developpeurs. il n'y a pas besoin de fermer le formulaire1 après avoir
lancé le formulaire2 et réouvrir le formulaire1 après avoir fermé le
formulaire2. On laisse le formulaire1 toujours ouvert

Sur le formulaire1, lancer le formulaire2 en acdialog.

Dim clé As Variant
Me.Dirty = False ' enregistrement
clé = Me.Bookmark ' clé = position
Me.Visible = False
DoCmd.OpenForm "Formulaire2", , , , , acDialog ' attente
Me.Requery ' actualisation
Me.Visible = True
Me.Bookmark = clé

--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Lbrun79" a écrit dans le message de
news:
| Bonsoir,
|
| J'ai un formulaire qui contient un jeu d'enregistrement que je peux
filtrer
| ou trier via quelques boutons ou des critères de sélection que je saisis
| diretement.
|
| A partir du moment ou l'enregistrement recherché est trouvé, je
sélectionne
| mon enregistrement et clique sur un bouton qui me permet d'ouvrir un
nouveau
| formulaire en fermant l'ancien .. en fait je change la propriété
SourceObject
| de mon formulaire principal pour changer de formulaire.
|
| Lorsque j'ai fini mon action dans le second formulaire, je voudrais en
| cliquant sur Retour par exemple, réafficher le premier mais exactement
dans
| les mêmes conditions qu'au moment ou j'ai cliqué pour lancer le second..
je
| voudrais pouvoir récupérer le même jeu d'enregistrement filtré, récupérer
mes
| critères et mes tris.
| En fait je voudrais faire un peu comme dans Internet explorer avec le
bouton
| précédent.
|
| J'ai bien une solution un peu lourde qui consiste à sauvegader
manuellement
| le contexte (contenu, le type de certains champs) avant appel et à les
| restaurer ensuite mais c'est lourd et assez pénalisant en traitement ..
|
| Existe t-il une façon simple de sauvegarder un formulaire dans un état
donné
| pour ensuite le restaurer ?
|
| Merci pour vos réponses.
|
| Laurent
|
|





Avatar
Raymond [mvp]
Bonjour.

c'est faisable aussi. avant de changer ta sourceobject tu places la clé
primaire de l'enregistrement en cours dans une variable et lorsque tu
reviens tu fais un FindFirst dans le sous-formulaire pour te replacer sur
l'enregistrement quitté. Le problème est de savoir si tu vas revenir
immédiatement ou si d'autres sous-formulaires seront ouverts entre les deux,
auquel cas ça ne fonctionnera pas. Si le sous-formulaire appelé revient
obligatoirement sur le sous-formulaire appelant il faut procéder par l'envoi
de la clé primaire dans OpenArgs de la commande OpenForm et lorsque le
sous-formulaire appelé se ferme il peut ré-ouvrir le sous-formulaire
appelant avec les éléments passés en OpenArgs.
Donc, quelle est ton organisation sur ce point ?

--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Lbrun79" a écrit dans le message de
news:
| Merci raymond.
|
| Pour certains besoins effectivement cette solution me convient .. j'ouvre
un
| second formulaire en maintenant le premier ouvert et je me positionne sur
le
| bon enreg .. pas de problème de ce coté..
|
| En l'occurrence mon problème est plus complexe.. J'ai un formulaire
| principal qui me sert en quelque sorte d'enveloppe et qui ne bouge
jamais..en
| fonction des besoins et de certaines actions sur ce formulaire principal,
le
| sous formulaire qu'il contient doit changer .. pour se faire, je fais
varier
| la propriété Sourceobject du formualire principal (je n'utilise openform
que
| pour afficher en genéral un petit formulaire en mode boite de dailogue)
|
| Le problème c'est qu'en changeant le nom du formulaire secondaire dans le
| formulaire principal, le premier formulaire est automatiquement fermé
lorsque
| je le remplace par le second .. la solution pour moi est donc bien de
pouvoir
| quelque part conserver une copie du formulaire (de l'objet form peut-être
?)
| et de la restaurer le moment venu..
|
| Merci pour votre réponse.
|
| Laurent
|
Avatar
Lbrun79
Merci Raymond pour ta réponse.

J'en comprends le principe mais si j'i bien compris, ce n'est valable que
pour la source de donnée (clé primaire). Le problème c'est que dans mon
sous-formulaire original j'ai aussi des zones qui me servent de critères de
sélection et de tri que je voudrais aussi pouvoir restaurer..

En fait je voudrais pouvoir sauvegarder tous les formulaire appelés dans
leur dernier état de façon a ce que dès lors qu'un formulaire est appelé il
puisse s'afficher à l'identique de son dernier appel..

Mon idée était de cloner dans VB mon objet form au moment de l'appel et
d'ensuite au moment de son appel futur le restaurer .. j'ai réussi a
sauvegarder les contrôles (valeur, type, etc..) un par un mais c'est lourd et
surtout à chaque nouveau formulaire je suis obligé de coder les champs à
sauvegarder/restaurer ..

Je crains d'après tes réponses qu'il faille en rester à cette solution..

Merci quand même
Laurent



Bonjour.

c'est faisable aussi. avant de changer ta sourceobject tu places la clé
primaire de l'enregistrement en cours dans une variable et lorsque tu
reviens tu fais un FindFirst dans le sous-formulaire pour te replacer sur
l'enregistrement quitté. Le problème est de savoir si tu vas revenir
immédiatement ou si d'autres sous-formulaires seront ouverts entre les deux,
auquel cas ça ne fonctionnera pas. Si le sous-formulaire appelé revient
obligatoirement sur le sous-formulaire appelant il faut procéder par l'envoi
de la clé primaire dans OpenArgs de la commande OpenForm et lorsque le
sous-formulaire appelé se ferme il peut ré-ouvrir le sous-formulaire
appelant avec les éléments passés en OpenArgs.
Donc, quelle est ton organisation sur ce point ?

--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Lbrun79" a écrit dans le message de
news:
| Merci raymond.
|
| Pour certains besoins effectivement cette solution me convient .. j'ouvre
un
| second formulaire en maintenant le premier ouvert et je me positionne sur
le
| bon enreg .. pas de problème de ce coté..
|
| En l'occurrence mon problème est plus complexe.. J'ai un formulaire
| principal qui me sert en quelque sorte d'enveloppe et qui ne bouge
jamais..en
| fonction des besoins et de certaines actions sur ce formulaire principal,
le
| sous formulaire qu'il contient doit changer .. pour se faire, je fais
varier
| la propriété Sourceobject du formualire principal (je n'utilise openform
que
| pour afficher en genéral un petit formulaire en mode boite de dailogue)
|
| Le problème c'est qu'en changeant le nom du formulaire secondaire dans le
| formulaire principal, le premier formulaire est automatiquement fermé
lorsque
| je le remplace par le second .. la solution pour moi est donc bien de
pouvoir
| quelque part conserver une copie du formulaire (de l'objet form peut-être
?)
| et de la restaurer le moment venu..
|
| Merci pour votre réponse.
|
| Laurent
|





Avatar
Raymond [mvp]
il n'y a qu'une seule solution , que j'ai déjà utilisée et qui marche:
superposer les deux sous-formulaires (au mm près) et les faire apparaître
par la propriété Visible que tu charges à true/false selon celui que tu veux
voir.
les deux formulaires sont toujours chargés en permanence, tu peux travailler
avec les deux mais un seul est visible à l'instant T.
totalement transparent pour l'utilisateur.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Lbrun79" a écrit dans le message de
news:
| Merci Raymond pour ta réponse.
|
| J'en comprends le principe mais si j'i bien compris, ce n'est valable que
| pour la source de donnée (clé primaire). Le problème c'est que dans mon
| sous-formulaire original j'ai aussi des zones qui me servent de critères
de
| sélection et de tri que je voudrais aussi pouvoir restaurer..
|
| En fait je voudrais pouvoir sauvegarder tous les formulaire appelés dans
| leur dernier état de façon a ce que dès lors qu'un formulaire est appelé
il
| puisse s'afficher à l'identique de son dernier appel..
|
| Mon idée était de cloner dans VB mon objet form au moment de l'appel et
| d'ensuite au moment de son appel futur le restaurer .. j'ai réussi a
| sauvegarder les contrôles (valeur, type, etc..) un par un mais c'est lourd
et
| surtout à chaque nouveau formulaire je suis obligé de coder les champs à
| sauvegarder/restaurer ..
|
| Je crains d'après tes réponses qu'il faille en rester à cette solution..
|
| Merci quand même
| Laurent
|
Avatar
Lbrun79
merci ! effectivement il semble qu'il n'y ait pas d'autres solutions
Laurent


il n'y a qu'une seule solution , que j'ai déjà utilisée et qui marche:
superposer les deux sous-formulaires (au mm près) et les faire apparaître
par la propriété Visible que tu charges à true/false selon celui que tu veux
voir.
les deux formulaires sont toujours chargés en permanence, tu peux travailler
avec les deux mais un seul est visible à l'instant T.
totalement transparent pour l'utilisateur.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Lbrun79" a écrit dans le message de
news:
| Merci Raymond pour ta réponse.
|
| J'en comprends le principe mais si j'i bien compris, ce n'est valable que
| pour la source de donnée (clé primaire). Le problème c'est que dans mon
| sous-formulaire original j'ai aussi des zones qui me servent de critères
de
| sélection et de tri que je voudrais aussi pouvoir restaurer..
|
| En fait je voudrais pouvoir sauvegarder tous les formulaire appelés dans
| leur dernier état de façon a ce que dès lors qu'un formulaire est appelé
il
| puisse s'afficher à l'identique de son dernier appel..
|
| Mon idée était de cloner dans VB mon objet form au moment de l'appel et
| d'ensuite au moment de son appel futur le restaurer .. j'ai réussi a
| sauvegarder les contrôles (valeur, type, etc..) un par un mais c'est lourd
et
| surtout à chaque nouveau formulaire je suis obligé de coder les champs à
| sauvegarder/restaurer ..
|
| Je crains d'après tes réponses qu'il faille en rester à cette solution..
|
| Merci quand même
| Laurent
|