Private Sub Budget_AfterUpdate()
Forms![Formulaire1].Requery
End Sub
Le problème c'est que chaque fois je mets à jour un champs du sous formulaire
2 le focus se met automatiquement sur le 1er enregistrement. Je voudrais que le
focus reste sur le même enregistrement que j'ai mis à jour.
Merci
"hadrum" <had...@domain-xyz.in> a écrit dans le message de news:
BYidnaMUwsk...@giganews.com...
"hadrum"
| CErnst a écrit le 23/09/2008 à 18h34 :
| > Private Sub Budget_AfterUpdate()
| > dim bk$
| > bk$=Forms![Formulaire1].bookmark
| > Forms![Formulaire1].Requery
| > Forms![Formulaire1].bookmark=bk$
| > End Sub
| >>
| J'ai essayé ce code mais la boite de débogage apparait chaque fois que
| j'introduit une nouvelle valeur. Lorsque j'appuie sur débogage il m'amène à la
| la ligne :
| Forms![Formulaire1].bookmark=bk$
| Noter que la valeur s'enregistre et le focus reviens toujours au premier
| enregistrement
| Auriez vous une idée sur le problème. Merci
Déclare ta variable bk variant (et non string) donc, sans le "$"
Private Sub Budget_AfterUpdate()
dim bk As Variant
' ou simplement Dim Bk
bk=Forms![Formulaire1].bookmark
Forms![Formulaire1].Requery
Forms![Formulaire1].bookmark=bk
End Sub
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Après avoir changer le code et avoir mis à jour 3 valeurs ça a marché pour les
3 premières entrées mais juste après, j'ai eu le même problème que le premier
code. La boite de débogage apparait chaque fois que j'introduit une nouvelle
valeur. Lorsque j'appuie sur débogage il m'amène à la ligne.
Forms![Formulaire1].bookmark=bk
Merci
"hadrum"
[...]
| Après avoir changer le code et avoir mis à jour 3 valeurs ça a marché pour les
| 3 premières entrées mais juste après, j'ai eu le même problème que le premier
| code. La boite de débogage apparait chaque fois que j'introduit une nouvelle
| valeur. Lorsque j'appuie sur débogage il m'amène à la ligne.
| Forms![Formulaire1].bookmark=bk
Ce que je t'ai indiqué fonctionne...
mais dans ton message tu dis :
<---
Dans le sous-formulaire 2 j'ai plusieurs champs auxquels j'ai attribué à chacun
le code suivant pour mettre à jour le formulaire 1.
Private Sub Budget_AfterUpdate()
Forms![Formulaire1].Requery
End Sub
--->
ma question est : pourquoi ?
Lorsque l'on saisi dans un sous-formulaire, il n'y a pas de raison de
faire un requery sur le formulaire principal, sauf usine à gaz...
"hadrum"
| > <---
| > Dans le sous-formulaire 2 j'ai plusieurs champs auxquels j'ai attribué
| > à chacun
| > le code suivant pour mettre à jour le formulaire 1.
| >
| > Private Sub Budget_AfterUpdate()
| > Forms![Formulaire1].Requery
| > End Sub
| > --->
| >
| > ma question est : pourquoi ?
| >
| > Lorsque l'on saisi dans un sous-formulaire, il n'y a pas de raison de
| > faire un requery sur le formulaire principal, sauf usine à gaz...
| Et Bien parce le formulaire que je veux mettre à jour chaque fois que je change
| la valeur dans le sous formulaire est le formulaire principal.
| Et le message d'erreur qui me sort est le suivant, chaque fois que je mets une
| nouvelle valeur dans le sous-formulaire :
| "erreur 3159 Signet non valide" sur la dernière ligne de mon code,
Je ne vois pas ce qui peut être mis à jour dans le formulaire principal
lorsque ce fait un ajout ou modification dans le sous-formulaire.
Sauf si la construction n'est pas saine ou lorsque le sous-formulaire n'est
pas réellement un sous-formulaire, mais un formulaire quelconque imbriqué.
"hadrum"
[...]
| La source de mon formulaire principal est une requête qui fait la somme des
| champs du sous-formulaires. Donc chaque fois que j'introduis une nouvelle valeur
| dans le sous formulaire je veux mettre à jour le formulaire principal pour avoir
| le dernier Total.
C'est bien ce que je disais... ce n'est pas un sous-formulaire...
Pour avoir la somme ou comptage des champs d'un formulaire en mode continu,
il suffit de placer des zones de texte dans son pied de page.
Si tu as un champ qui se nomme [Quantite] tu mets comme source du TextBox:
= Sum([Quantite])
Pour compter les enregistrements, tu mets :
= Count(*)
Pour "fixer" la taille et ajouter des champs autres, tu peux toujours placer
un tel formulaire continu dans un formulaire principal...
Merci
"hadrum"
[...]
| Cette technique je la connais mais j'ai pas voulu l'utiliser car ma requ�te qui
| somme je l'utilise pour g�n�rer des rapports et je m'en sert aussi pour d'autre
| fonctions. Donc je veux vraiment l'utiliser et mettre � jour le formulaire qui
| lui est associ�. J'ai trouver le m�me probl�me sur un autre forum et il parait
| qu'il ont trouver la solution mais j'ai pas trouv� comment l'implanter � mon
| cas.
A relire le fil, je me demande ce que tu cherche � faire r�ellement...
- Tu dis faire de ajouts/modifs dans un sous-formulaire
- Puis tu fais un requery sur le "formulaire principal"
L�, tu dis qu'il se place sur le premier enregistrement
- Tu dis aussi que ce formulaire principal est bas� sur une requ�te
qui fait... des sommes...
Ce formulaire n'aurait donc qu'un seul enregistrement ?
Pour comprendre le bricolage, il faudrait que tu expliques clairement
sur quoi est bas� le formulaire principal, le sous-formulaire et la
relation entre les deux.
Donne un exemple des donn�es que tu manipules.
J'ai deux tables (table1) et (Table2) qui sont li�s par un lien 1 � plusieurs
(Table1)1 � (table2) Plusieurs.
La cl� primaire de la table 1 est un champs appel� Code et la cl� primaire dans
la table 2 est UnicKey et j'ai aussi une cl� �trang�re dans la table 2 appel�
Code qui fait le lien avec la cl� primaire (Code) de la table1.
La table 2 a plusieurs champs principalement des nombres. J'ai aussi une
requ�te (Req1) qui fait la somme des champs de la table 2 par Code.
J'ai �galement un formulaire (Form2) qui a comme source la table 2 et un autre
formulaire (Form1) qui lui a comme source Req 1.
Ensuite j'ai ins�r� le Form2 Dans le Form1.
Mon but est de mettre � jour les sommes du Form1 chaque fois que je change une
valeur des champs du form 2.
Alors j'ai ins�rer la fonction requery apr�s la mise � jour du Form2. Mais
chaque fois que je change une valeur il me retourne au premier enregistrement et
il me sort la boite de d�bogage avec ce message.
erreur 3159 Signet non valide
Je voudrais qu'il reste � l'enregistrement d'o� j'ai effectuer le changement et
faire la mise � jour.
Comme j'ai mentionner au message dernier tu trouveras le m�me probl�me que j'ai
dans ce lien mais j'ai pas compris comment il ont pu r�soudre le probl�me.
Bonjour,
et un truc du style :
Private Sub Budget_AfterUpdate()
Forms![Formulaire1].form.Recordset.Requery
End Sub
Mettant à jour uniquement l'enregistrement du form1 en cour.
Je ne sais pas si j'ai bien tout compris alors désolé si je réponds à
coté...
Mathieu