Bonjour tout le monde,
J'aimerais mettre à jour le champ du formulaire après modification d'un des champs de son sous-formulaire (fils). J'aimerais savoir quel code me permettrait de faire ça.
D'avance merci beaucoup pour votre aide.
Bonjour tout le monde,
J'aimerais mettre à jour le champ du formulaire après modification d'un des champs de son sous-formulaire (fils). J'aimerais savoir quel code me permettrait de faire ça.
D'avance merci beaucoup pour votre aide.
Sur l'événement onchange() d'un contrôle du sous-formulaire modifie le formulaire en conséquent.
Tu trouveras dans la FAQ comment atteindre le contrôle d'un autre formulaire afin d'accéder à son contenu ou bien encore le modifier.
J'aime les gâteaux.
Merci.
Bon, j'ai essayer en m'aidant de la FAQ et de l'aide d'Access mais étant un méga-newbie je n'y suis pas arrivé...
Personne n'aurait un exemple de code pour m'aider un peu plus ?
Je précise que le champ du formulaire à mettre à jour est un champ calculé à partir d'un champ des sous-formulaires. C'est pourquoi j'aimerais qu'après mise à jour de ce dernier, la valeur du champ calculé du formulaire père se rafraichisse.
Bon, je me suis tapé plein de FAQ et de tuto depuis hier et même si j'ai compris pas mal de trucs, il reste toujours des zones sombres...
Enfin bref, je n'arrive toujours pas à résoudre mon problème et les délais qu'on me demande commencent à me poser soucis !
Si vous pouviez m'aidé en me donnant le code dont j'ai besion ce serait super !
Je réexplique mon problème plus en détail :
Après toute modification du champ "Facture indemnité" du sous-formulaire frmConfigurationEtudeEtVisites_sub
J'aimerais que le champ "Indemnités calculées" du formulaire frmConfigurationEtudeEtVisites soit mis à jour. Celui-ci est en fait la somme des champs "Facture indemnité" (calculé grace à une requête : qrySumIndemnitéParEtude)
Voilà ce que j'ai fait un peu à taton, mais évidemment ça ne fonctionne pas !
D'avance merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Facture_indemnité_AfterUpdate() DoCmd.Requery frmConfigurationEtudeEtVisites End Sub
il me semble que pour faire ça j'avais fait un truc du genre :
1 - dans le sous form créer un champ calculé correspondant à la valeur que l'on veut sortir de ce sous form en fonction de ses enregistrements
2 - créer un champ "tampon" dans le form père (qu'on rendra invisible) et qui sert juste à contenir la valeur du champ calcul du sous form (Me.Champ1 = Le sous form.champ2 voir la syntaxe exacte mais c'est simple). Tu peux le mettre dans l'ordre tabulation juste après le sous form comme ça dès que tu sors de ton sous form (créer un bouton qui fasse revenir au form père) le champ tampon se met à jour.
3 - me servir de ce champ tampon pour effectuer la mise à jour du champ calculé du form père avec la formule que l'on veut Me.champcalculépère = Me.tampon + Me.prix par exemple
si tu rends le tampon invisible et que tu ne lui attribue pas darrêt tabulation il passe inapperçu
cette solution évite d'avoir à manipuler des formules d'un form à un autre puisque le tampon est simplement = à un autre champ.
a+
Ca y est !!
J'ai fait ça, tout simplement :
Ben oui, c'était pas bien dur, mais à force j'y suis arrivé !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Option Compare Database Private Sub Facture_indemnité_AfterUpdate() Forms("frmConfigurationEtudeEtVisites").Requery End Sub
En tout cas merci pour vos fabuleux tuto et FAQ... J'ai eu (et j'ai toujours) du mal à m'en sortir et tout comprendre, mais à force de lire autant de chose et d'essayer, j'y suis parvenu !
Il faut savoir que je n'ai aucune notion de programmation objet, d'où la difficulté pour moi de comprendre tout ça.
martonpylon12, je n'ai du coup, pas essayer ta méthode... Mais merci quand même. Ca me parait néanmoins un peu lourd, non ?
Enfin j'ai dû très mal m'exprimer pour vous expliquer mon problème.
EDIT : avant de mettre [Résolu] j'ai un petit problème, c'est que mon curseur remonte au premier champ du formulaire père au lieu de continuer son "chemin". Avez vous une méthode pour garder sa position en mémoire et le positionner sur le champ suivant après la mise à jour ?
Docmd.Gotocontrol.TonChamp
a+
ps : effectivement ma méthode était très lourde mais comme je ne connais pas le code, je me débrouille et quand ça marche ça me prend moins de temps que de chercher 5 jours une autre solution
a+
Oui, c'est bien joué. Je n'y avais pas pensé !Envoyé par martonpylon12
Sinon pour Docmd.Gotocontrol.TonChamp le problème c'est que je n'arrive pas à récupérer le bon champ !
J'ai fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Facture_indemnité_AfterUpdate() Dim recordnum As Long recordnum = Form.CurrentRecord Forms("frmConfigurationEtudeEtVisites").Requery DoCmd.GoToRecord , , recordnum End Sub
Quand tu as des zones d'ombre pour la FAQ n'hésite pas à me le faire savoir par message privé, ainsi je pourrai tenter de le rendre plus clair lors d'une prochaine mise à jour. Ce sera bénéfique pour tousEnvoyé par Fend
J'aime les gâteaux.
Ok, j'y penserais. Mais en fait ce qu'il m'a manqué, c'est un tuto d'initiation à VB (parce que le Basic c'est pas la même chose) et à la programmation objet.
Là je me suis directement plongé dans "Définition et manipulation de données avec DAO" et dans les FAQ Access... Et ça demande un minimum de connaisances pour bien tout comprendre !
Sinon, pour mon problème, comment récupérer la position du "curseur" dans la variable ? (Sachant qu'il sera dans le sous-formulaire au moment de l'exécution du code.)
Est-ce que je peux ensuite incrémenter cette position en faisant +1 ?
EDIT : Bon je créé un nouveau topic pour mon problème de focus.
Merci pour votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager