OVH Cloud OVH Cloud

repositionnement après un requery

17 réponses
Avatar
Nathalie Lebas
Bonjour à tous,

J'ai un souci avec un formulaire. Celui-ci présente une liste de lignes
(section détail) avec chacune une quantité à saisir. Pour la saisir, je passe
par un second formulaire (celui parce que la requête de mon premier
formulaire est complexe et qu'elle fait un regroupement). Lorsque la saisie
de la quantité est validée, je fais un requery de mon premier formulaire afin
que les données du second formulaire viennent rafraichir celles du premier.
Le problème est que le requery me positionne à chaque fois à la première de
la section détail du premier formulaire. Il faudrait que le programme reste
positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie

10 réponses

1 2
Avatar
Rv
Salut,

Avant le requery:
objBook = me.recordset.bookmark
Apres le requery:
me.recordset.bookmark = objBook

A+

Rv

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

J'ai un souci avec un formulaire. Celui-ci présente une liste de lignes
(section détail) avec chacune une quantité à saisir. Pour la saisir, je
passe

par un second formulaire (celui parce que la requête de mon premier
formulaire est complexe et qu'elle fait un regroupement). Lorsque la
saisie

de la quantité est validée, je fais un requery de mon premier formulaire
afin

que les données du second formulaire viennent rafraichir celles du
premier.

Le problème est que le requery me positionne à chaque fois à la première
de

la section détail du premier formulaire. Il faudrait que le programme
reste

positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie


Avatar
Nathalie Lebas
Salut,
Merci pour ta réponse.
Si je fais ce que tu as écris dans objbook je récupère "??".
Il doit y avoir un problème ?
A+
--
Nathalie



Salut,

Avant le requery:
objBook = me.recordset.bookmark
Apres le requery:
me.recordset.bookmark = objBook

A+

Rv

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

J'ai un souci avec un formulaire. Celui-ci présente une liste de lignes
(section détail) avec chacune une quantité à saisir. Pour la saisir, je
passe

par un second formulaire (celui parce que la requête de mon premier
formulaire est complexe et qu'elle fait un regroupement). Lorsque la
saisie

de la quantité est validée, je fais un requery de mon premier formulaire
afin

que les données du second formulaire viennent rafraichir celles du
premier.

Le problème est que le requery me positionne à chaque fois à la première
de

la section détail du premier formulaire. Il faudrait que le programme
reste

positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie







Avatar
Rv
J'ai été trop bref pardon!
D'une part objBook est une variable de type variant qu'il faut déclarer.
D'autre part cette variable va servir à stocker un bookmark du recordset du
formulaire. C.a.d. un signet sur la ligne sélectionnée dans le formulaire.

On aurau donc:

Dim objBook as Variant

objBook = me.recordset.bookmark
Me.Requery
Me.recordset.bookmark = objBook

A+

Rv



"Nathalie Lebas" a écrit dans le
message de news:
Salut,
Merci pour ta réponse.
Si je fais ce que tu as écris dans objbook je récupère "??".
Il doit y avoir un problème ?
A+
--
Nathalie



Salut,

Avant le requery:
objBook = me.recordset.bookmark
Apres le requery:
me.recordset.bookmark = objBook

A+

Rv

"Nathalie Lebas" a écrit dans
le


message de news:
Bonjour à tous,

J'ai un souci avec un formulaire. Celui-ci présente une liste de
lignes



(section détail) avec chacune une quantité à saisir. Pour la saisir,
je



passe
par un second formulaire (celui parce que la requête de mon premier
formulaire est complexe et qu'elle fait un regroupement). Lorsque la
saisie

de la quantité est validée, je fais un requery de mon premier
formulaire



afin
que les données du second formulaire viennent rafraichir celles du
premier.

Le problème est que le requery me positionne à chaque fois à la
première



de
la section détail du premier formulaire. Il faudrait que le programme
reste

positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie









Avatar
Nathalie Lebas
Je ne dirais pas que tu as été trop bref mais plutôt que je ne connais pas.
Je pense que mon soucis est plus compliqué que cela :
mon premier formulaire est une liste, mon second, un masque de saisie d'info.
En réalité, il faut que je mémorise la position dans la section détail avant
l'ouverture du second formulaire. Lorsque l'utilisateur ouvre le second
formulaire, il met à jour des données, lorsqu'il le ferme, je fais un requery
de mon premier formulaire encore ouvert, et c'est à ce moment, je pense que
je dois repositionner mon premier formulaire à partir de mon second. C'est là
que je n'y arrive pas.
Suis-je claire ?
Donc j'ai suivi tes instructions, j'ai créé une variable globale de type
variant (appelée memobook). Juste avant l'ouverture du second formulaire
(celui de saisie des données), je fais memobook=me.recordset.bookmark, le
second formulaire s'ouvre. L'utilisateur saisi ses données puis il ferme le
second formulaire. A ce moment, je fais le requery et j'essaye de faire nom
du premier formulaire.recordset.bookmark = memobook, afin de repositionner le
sélecteur du premier formulaire là où il était avant le requery. Mais cela ne
marche pas ! j'ai une erreur 424, objet requis
Peux-tu m'aider ?
Merci
A +
--
Nathalie



J'ai été trop bref pardon!
D'une part objBook est une variable de type variant qu'il faut déclarer.
D'autre part cette variable va servir à stocker un bookmark du recordset du
formulaire. C.a.d. un signet sur la ligne sélectionnée dans le formulaire.

On aurau donc:

Dim objBook as Variant

objBook = me.recordset.bookmark
Me.Requery
Me.recordset.bookmark = objBook

A+

Rv



"Nathalie Lebas" a écrit dans le
message de news:
Salut,
Merci pour ta réponse.
Si je fais ce que tu as écris dans objbook je récupère "??".
Il doit y avoir un problème ?
A+
--
Nathalie



Salut,

Avant le requery:
objBook = me.recordset.bookmark
Apres le requery:
me.recordset.bookmark = objBook

A+

Rv

"Nathalie Lebas" a écrit dans
le


message de news:
Bonjour à tous,

J'ai un souci avec un formulaire. Celui-ci présente une liste de
lignes



(section détail) avec chacune une quantité à saisir. Pour la saisir,
je



passe
par un second formulaire (celui parce que la requête de mon premier
formulaire est complexe et qu'elle fait un regroupement). Lorsque la
saisie

de la quantité est validée, je fais un requery de mon premier
formulaire



afin
que les données du second formulaire viennent rafraichir celles du
premier.

Le problème est que le requery me positionne à chaque fois à la
première



de
la section détail du premier formulaire. Il faudrait que le programme
reste

positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie














Avatar
Eric
Bonsoir,

Et la solution suivante :
Sur clic du bouton qui ouvre le formulaire2
Private Sub Commande0_Click()
memobook = Me.CurrentRecord
DoCmd.OpenForm "LeFormulaire", , , "LaCondition", , acDialog
Me.Requery
Me.Recordset.AbsolutePosition = memobook - 1
End Sub

memobook doit être déclaré dans un module de portée globale en fonction
de son type par Public memobook as Long.

Je ne dirais pas que tu as été trop bref mais plutôt que je ne connais pas.
Je pense que mon soucis est plus compliqué que cela :
mon premier formulaire est une liste, mon second, un masque de saisie d'info.
En réalité, il faut que je mémorise la position dans la section détail avant
l'ouverture du second formulaire. Lorsque l'utilisateur ouvre le second
formulaire, il met à jour des données, lorsqu'il le ferme, je fais un requery
de mon premier formulaire encore ouvert, et c'est à ce moment, je pense que
je dois repositionner mon premier formulaire à partir de mon second. C'est là
que je n'y arrive pas.
Suis-je claire ?
Donc j'ai suivi tes instructions, j'ai créé une variable globale de type
variant (appelée memobook). Juste avant l'ouverture du second formulaire
(celui de saisie des données), je fais memobook=me.recordset.bookmark, le
second formulaire s'ouvre. L'utilisateur saisi ses données puis il ferme le
second formulaire. A ce moment, je fais le requery et j'essaye de faire nom
du premier formulaire.recordset.bookmark = memobook, afin de repositionner le
sélecteur du premier formulaire là où il était avant le requery. Mais cela ne
marche pas ! j'ai une erreur 424, objet requis
Peux-tu m'aider ?
Merci
A +


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Rv
Salut,

Il faudrait préciser la syntaxe car je viens de tester de mon coté et
cela fonctionne (en access2000 et 2002).
Pouvez vous envoyer le code utilisé dans les formulaires pour effectuer
ces manips.

A+

Rv


"Nathalie Lebas" a écrit dans le
message de news:
Je ne dirais pas que tu as été trop bref mais plutôt que je ne connais
pas.

Je pense que mon soucis est plus compliqué que cela :
mon premier formulaire est une liste, mon second, un masque de saisie
d'info.

En réalité, il faut que je mémorise la position dans la section détail
avant

l'ouverture du second formulaire. Lorsque l'utilisateur ouvre le second
formulaire, il met à jour des données, lorsqu'il le ferme, je fais un
requery

de mon premier formulaire encore ouvert, et c'est à ce moment, je pense
que

je dois repositionner mon premier formulaire à partir de mon second. C'est


que je n'y arrive pas.
Suis-je claire ?
Donc j'ai suivi tes instructions, j'ai créé une variable globale de type
variant (appelée memobook). Juste avant l'ouverture du second formulaire
(celui de saisie des données), je fais memobook=me.recordset.bookmark, le
second formulaire s'ouvre. L'utilisateur saisi ses données puis il ferme
le

second formulaire. A ce moment, je fais le requery et j'essaye de faire
nom

du premier formulaire.recordset.bookmark = memobook, afin de repositionner
le

sélecteur du premier formulaire là où il était avant le requery. Mais cela
ne

marche pas ! j'ai une erreur 424, objet requis
Peux-tu m'aider ?
Merci
A +
--
Nathalie



J'ai été trop bref pardon!
D'une part objBook est une variable de type variant qu'il faut déclarer.
D'autre part cette variable va servir à stocker un bookmark du recordset
du


formulaire. C.a.d. un signet sur la ligne sélectionnée dans le
formulaire.



On aurau donc:

Dim objBook as Variant

objBook = me.recordset.bookmark
Me.Requery
Me.recordset.bookmark = objBook

A+

Rv



"Nathalie Lebas" a écrit dans
le


message de news:
Salut,
Merci pour ta réponse.
Si je fais ce que tu as écris dans objbook je récupère "??".
Il doit y avoir un problème ?
A+
--
Nathalie



Salut,

Avant le requery:
objBook = me.recordset.bookmark
Apres le requery:
me.recordset.bookmark = objBook

A+

Rv

"Nathalie Lebas" a écrit
dans




le
message de
news:




Bonjour à tous,

J'ai un souci avec un formulaire. Celui-ci présente une liste de
lignes



(section détail) avec chacune une quantité à saisir. Pour la
saisir,





je
passe
par un second formulaire (celui parce que la requête de mon
premier





formulaire est complexe et qu'elle fait un regroupement). Lorsque
la





saisie
de la quantité est validée, je fais un requery de mon premier
formulaire



afin
que les données du second formulaire viennent rafraichir celles du
premier.

Le problème est que le requery me positionne à chaque fois à la
première



de
la section détail du premier formulaire. Il faudrait que le
programme





reste
positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie
















Avatar
Nathalie Lebas
Bonjour,

Merci de ta réponse. Je viens de tester, cela fonctionne pour le
repositionnement par contre mon formulaire ne se remet pas à jour !
--
Nathalie



Bonsoir,

Et la solution suivante :
Sur clic du bouton qui ouvre le formulaire2
Private Sub Commande0_Click()
memobook = Me.CurrentRecord
DoCmd.OpenForm "LeFormulaire", , , "LaCondition", , acDialog
Me.Requery
Me.Recordset.AbsolutePosition = memobook - 1
End Sub

memobook doit être déclaré dans un module de portée globale en fonction
de son type par Public memobook as Long.

Je ne dirais pas que tu as été trop bref mais plutôt que je ne connais pas.
Je pense que mon soucis est plus compliqué que cela :
mon premier formulaire est une liste, mon second, un masque de saisie d'info.
En réalité, il faut que je mémorise la position dans la section détail avant
l'ouverture du second formulaire. Lorsque l'utilisateur ouvre le second
formulaire, il met à jour des données, lorsqu'il le ferme, je fais un requery
de mon premier formulaire encore ouvert, et c'est à ce moment, je pense que
je dois repositionner mon premier formulaire à partir de mon second. C'est là
que je n'y arrive pas.
Suis-je claire ?
Donc j'ai suivi tes instructions, j'ai créé une variable globale de type
variant (appelée memobook). Juste avant l'ouverture du second formulaire
(celui de saisie des données), je fais memobook=me.recordset.bookmark, le
second formulaire s'ouvre. L'utilisateur saisi ses données puis il ferme le
second formulaire. A ce moment, je fais le requery et j'essaye de faire nom
du premier formulaire.recordset.bookmark = memobook, afin de repositionner le
sélecteur du premier formulaire là où il était avant le requery. Mais cela ne
marche pas ! j'ai une erreur 424, objet requis
Peux-tu m'aider ?
Merci
A +


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Nathalie Lebas
Bonjour,
Voici le code que je viens de tester :
Dans mon premier formulaire :
memobook = Me.CurrentRecord
DoCmd.OpenForm "ExpeditionModifQte", acNormal, , "[expefg_expe]=" &
Me.expefg_expe & " and [expefg_num]=" & Me.expefg_num & "", acFormEdit
Me.Requery
Me.Recordset.AbsolutePosition = memobook - 1
Dans mon second formulaire appelé ExpeditionModifiQté qui permet de saisir
la quantité réellement livrée et de mettre à jour mon premier formulaire qui
présente la liste des fournitures livrées avec les quantités livrées :
Private Sub Form_Close()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub
Avec ce code, le sélecteur se positionne bien (après le requery) sur la
ligne sélectionnée avant la mise à jour mais la mise à jour de la quantité
livrée n'est pas faite.
Merci à vous deux de vos conseils

--
Nathalie



Salut,

Il faudrait préciser la syntaxe car je viens de tester de mon coté et
cela fonctionne (en access2000 et 2002).
Pouvez vous envoyer le code utilisé dans les formulaires pour effectuer
ces manips.

A+

Rv


"Nathalie Lebas" a écrit dans le
message de news:
Je ne dirais pas que tu as été trop bref mais plutôt que je ne connais
pas.

Je pense que mon soucis est plus compliqué que cela :
mon premier formulaire est une liste, mon second, un masque de saisie
d'info.

En réalité, il faut que je mémorise la position dans la section détail
avant

l'ouverture du second formulaire. Lorsque l'utilisateur ouvre le second
formulaire, il met à jour des données, lorsqu'il le ferme, je fais un
requery

de mon premier formulaire encore ouvert, et c'est à ce moment, je pense
que

je dois repositionner mon premier formulaire à partir de mon second. C'est


que je n'y arrive pas.
Suis-je claire ?
Donc j'ai suivi tes instructions, j'ai créé une variable globale de type
variant (appelée memobook). Juste avant l'ouverture du second formulaire
(celui de saisie des données), je fais memobook=me.recordset.bookmark, le
second formulaire s'ouvre. L'utilisateur saisi ses données puis il ferme
le

second formulaire. A ce moment, je fais le requery et j'essaye de faire
nom

du premier formulaire.recordset.bookmark = memobook, afin de repositionner
le

sélecteur du premier formulaire là où il était avant le requery. Mais cela
ne

marche pas ! j'ai une erreur 424, objet requis
Peux-tu m'aider ?
Merci
A +
--
Nathalie



J'ai été trop bref pardon!
D'une part objBook est une variable de type variant qu'il faut déclarer.
D'autre part cette variable va servir à stocker un bookmark du recordset
du


formulaire. C.a.d. un signet sur la ligne sélectionnée dans le
formulaire.



On aurau donc:

Dim objBook as Variant

objBook = me.recordset.bookmark
Me.Requery
Me.recordset.bookmark = objBook

A+

Rv



"Nathalie Lebas" a écrit dans
le


message de news:
Salut,
Merci pour ta réponse.
Si je fais ce que tu as écris dans objbook je récupère "??".
Il doit y avoir un problème ?
A+
--
Nathalie



Salut,

Avant le requery:
objBook = me.recordset.bookmark
Apres le requery:
me.recordset.bookmark = objBook

A+

Rv

"Nathalie Lebas" a écrit
dans




le
message de
news:




Bonjour à tous,

J'ai un souci avec un formulaire. Celui-ci présente une liste de
lignes



(section détail) avec chacune une quantité à saisir. Pour la
saisir,





je
passe
par un second formulaire (celui parce que la requête de mon
premier





formulaire est complexe et qu'elle fait un regroupement). Lorsque
la





saisie
de la quantité est validée, je fais un requery de mon premier
formulaire



afin
que les données du second formulaire viennent rafraichir celles du
premier.

Le problème est que le requery me positionne à chaque fois à la
première



de
la section détail du premier formulaire. Il faudrait que le
programme





reste
positionné sur la ligne que l'utilisateur vient de mettre à jour.
Merci à l'avance

--
Nathalie





















Avatar
Nathalie Lebas
Je viens de tester ceci et cela fonctionne.
Dans mon premier formulaire appelé ExpeditionEjoutClo :
memobook = Me.CurrentRecord
DoCmd.OpenForm "ExpeditionModifQte", acNormal, , "[expefg_expe]=" &
Me.expefg_expe & " and [expefg_num]=" & Me.expefg_num & "", acFormEdit
Dans mon second appelé ExpeditionModifQte :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Forms!ExpeditionAjoutClo.Requery
Forms!ExpeditionAjoutClo.Recordset.AbsolutePosition = memobook - 1
Qu'en pensez-vous ?
Merci à vous deux de votre aide.
a +
--
Nathalie



Bonsoir,

Et la solution suivante :
Sur clic du bouton qui ouvre le formulaire2
Private Sub Commande0_Click()
memobook = Me.CurrentRecord
DoCmd.OpenForm "LeFormulaire", , , "LaCondition", , acDialog
Me.Requery
Me.Recordset.AbsolutePosition = memobook - 1
End Sub

memobook doit être déclaré dans un module de portée globale en fonction
de son type par Public memobook as Long.

Je ne dirais pas que tu as été trop bref mais plutôt que je ne connais pas.
Je pense que mon soucis est plus compliqué que cela :
mon premier formulaire est une liste, mon second, un masque de saisie d'info.
En réalité, il faut que je mémorise la position dans la section détail avant
l'ouverture du second formulaire. Lorsque l'utilisateur ouvre le second
formulaire, il met à jour des données, lorsqu'il le ferme, je fais un requery
de mon premier formulaire encore ouvert, et c'est à ce moment, je pense que
je dois repositionner mon premier formulaire à partir de mon second. C'est là
que je n'y arrive pas.
Suis-je claire ?
Donc j'ai suivi tes instructions, j'ai créé une variable globale de type
variant (appelée memobook). Juste avant l'ouverture du second formulaire
(celui de saisie des données), je fais memobook=me.recordset.bookmark, le
second formulaire s'ouvre. L'utilisateur saisi ses données puis il ferme le
second formulaire. A ce moment, je fais le requery et j'essaye de faire nom
du premier formulaire.recordset.bookmark = memobook, afin de repositionner le
sélecteur du premier formulaire là où il était avant le requery. Mais cela ne
marche pas ! j'ai une erreur 424, objet requis
Peux-tu m'aider ?
Merci
A +


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour,

Ce que je t'avais proposé comme solution mettait bien à jour mon premier
formulaire mais la requête source n'était pas bien complexe.
Apparemment, c'était un problème de réactualisation de ta source mais je
ne vois pas trop pourquoi ca marche avec ton ordonnancement et pas avec
celui que je t'avais proposé puisque la méthode Requery ré-interroge la
source.
Tu pourrais remplacer ta commande DoCmd.DoMenuItem ... par
DoCmd.RunCommand acCmdSaveRecord.
As-tu essayé avec la méthode de RV car les signets c'est pas mal non
plus, voire même plus propre ?


Je viens de tester ceci et cela fonctionne.
Dans mon premier formulaire appelé ExpeditionEjoutClo :
memobook = Me.CurrentRecord
DoCmd.OpenForm "ExpeditionModifQte", acNormal, , "[expefg_expe]=" &
Me.expefg_expe & " and [expefg_num]=" & Me.expefg_num & "", acFormEdit
Dans mon second appelé ExpeditionModifQte :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Forms!ExpeditionAjoutClo.Requery
Forms!ExpeditionAjoutClo.Recordset.AbsolutePosition = memobook - 1
Qu'en pensez-vous ?
Merci à vous deux de votre aide.
a +


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

1 2