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

Mise à jour de tous les enregistrements

10 réponses
Avatar
brucat
Bonsoir,

Voici mon souci.
J'ai un formulaire A avec un controle Date. Il fait le lien avec un sous
formulaire B (Table Y) qui a des controles : "Type", "Frais", "Tarifs" et 2
controles calculés "SFrais", "Nb".
Ce qui me permet de connaitre par date le type de frais
Le controle "SFrais" est mise à jour en fonction de la valeur saisie dans le
champ "Globale" dans la Table X.
Le controle "Nb" est le nombre d'enregistrement
pas de pb pour récuperer ces calculs.
Le controle "Frais" se recalcule à chaque ajout ou suppression
d'enregistrement = Frais / Nb
Ex :
1er saisie : SFrais = 10
Type Frais Tarif
Resto 10 A

2e sasie : SFrais = 10
Type Frais Tarif
Resto 5 A
Ess 5 A

3eme saisie : SFrais = 10
Type Frais Tarif
Resto 3.33 A
Ess 3.33 A
Liv 3.33 B

j'ai donc fais un code à chaque mise à jour de "Type":

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

mais il recalcule uniquement la valeur "Frais" du dernier enregistrement, je
désire qu'il recalcule entiérement tous les enregistrements pour cette date.
J'ai testé avec une requete de mise à jour mais rien................

Merci pour votre aide.

Brucat

10 réponses

Avatar
3stone
Salut,

"brucat"
| Voici mon souci.
[...]
| j'ai donc fais un code à chaque mise à jour de "Type":
|
| Me. B.Frais = Me.B.Sfrais/Me.B.Nb
|
| mais il recalcule uniquement la valeur "Frais" du dernier enregistrement, je
| désire qu'il recalcule entiérement tous les enregistrements pour cette date.
| J'ai testé avec une requete de mise à jour mais rien................


Ou as tu mis ce code ?

Place le dans l'événement form_current


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Michel Lauzon
Bonjour,

Ton code...

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

Est ce du copier|coller... Il y a un espace entre Me. et B.

....


Michel Lauzon
"brucat" a écrit dans le message de news:
cvnp08$r6m$
Bonsoir,

Voici mon souci.
J'ai un formulaire A avec un controle Date. Il fait le lien avec un sous
formulaire B (Table Y) qui a des controles : "Type", "Frais", "Tarifs" et
2 controles calculés "SFrais", "Nb".
Ce qui me permet de connaitre par date le type de frais
Le controle "SFrais" est mise à jour en fonction de la valeur saisie dans
le champ "Globale" dans la Table X.
Le controle "Nb" est le nombre d'enregistrement
pas de pb pour récuperer ces calculs.
Le controle "Frais" se recalcule à chaque ajout ou suppression
d'enregistrement = Frais / Nb
Ex :
1er saisie : SFrais = 10
Type Frais Tarif
Resto 10 A

2e sasie : SFrais = 10
Type Frais Tarif
Resto 5 A
Ess 5 A

3eme saisie : SFrais = 10
Type Frais Tarif
Resto 3.33 A
Ess 3.33 A
Liv 3.33 B

j'ai donc fais un code à chaque mise à jour de "Type":

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

mais il recalcule uniquement la valeur "Frais" du dernier enregistrement,
je désire qu'il recalcule entiérement tous les enregistrements pour cette
date.
J'ai testé avec une requete de mise à jour mais rien................

Merci pour votre aide.

Brucat



Avatar
Michel Lauzon
Bonjour,

Ton code...

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

Est ce du copier|coller... Il y a un espace entre Me. et B.

....


Michel Lauzon
"brucat" a écrit dans le message de news:
cvnp08$r6m$
Bonsoir,

Voici mon souci.
J'ai un formulaire A avec un controle Date. Il fait le lien avec un sous
formulaire B (Table Y) qui a des controles : "Type", "Frais", "Tarifs" et
2 controles calculés "SFrais", "Nb".
Ce qui me permet de connaitre par date le type de frais
Le controle "SFrais" est mise à jour en fonction de la valeur saisie dans
le champ "Globale" dans la Table X.
Le controle "Nb" est le nombre d'enregistrement
pas de pb pour récuperer ces calculs.
Le controle "Frais" se recalcule à chaque ajout ou suppression
d'enregistrement = Frais / Nb
Ex :
1er saisie : SFrais = 10
Type Frais Tarif
Resto 10 A

2e sasie : SFrais = 10
Type Frais Tarif
Resto 5 A
Ess 5 A

3eme saisie : SFrais = 10
Type Frais Tarif
Resto 3.33 A
Ess 3.33 A
Liv 3.33 B

j'ai donc fais un code à chaque mise à jour de "Type":

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

mais il recalcule uniquement la valeur "Frais" du dernier enregistrement,
je désire qu'il recalcule entiérement tous les enregistrements pour cette
date.
J'ai testé avec une requete de mise à jour mais rien................

Merci pour votre aide.

Brucat



Avatar
brucat
Merci pour la réponse

J'ai suivi votre idée. cela recalcule correctement tous les valeurs de mes
enregistrement.
Mais la mise à jour de ses enregistrements s'effectue uniquement lorsque je
reclique dans le controle "Type". Il faut le faire pour chaque ligne.

J'ai mis dans le controle "Type" Me.recalc aprés mise à jour
Mais toujours rien.

Comment faire cette mise à jour automatique
Merci pour votre réponse

Brucat

"3stone" a écrit dans le message de news:

Salut,

"brucat"
| Voici mon souci.
[...]
| j'ai donc fais un code à chaque mise à jour de "Type":
|
| Me. B.Frais = Me.B.Sfrais/Me.B.Nb
|
| mais il recalcule uniquement la valeur "Frais" du dernier
enregistrement, je
| désire qu'il recalcule entiérement tous les enregistrements pour cette
date.
| J'ai testé avec une requete de mise à jour mais rien................


Ou as tu mis ce code ?

Place le dans l'événement form_current


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw




Avatar
brucat
Non il ne s'agit pas d'un copier/coller
"Michel Lauzon" a écrit dans le message de
news: BlQTd.58415$
Bonjour,

Ton code...

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

Est ce du copier|coller... Il y a un espace entre Me. et B.

....


Michel Lauzon
"brucat" a écrit dans le message de news:
cvnp08$r6m$
Bonsoir,

Voici mon souci.
J'ai un formulaire A avec un controle Date. Il fait le lien avec un sous
formulaire B (Table Y) qui a des controles : "Type", "Frais", "Tarifs" et
2 controles calculés "SFrais", "Nb".
Ce qui me permet de connaitre par date le type de frais
Le controle "SFrais" est mise à jour en fonction de la valeur saisie dans
le champ "Globale" dans la Table X.
Le controle "Nb" est le nombre d'enregistrement
pas de pb pour récuperer ces calculs.
Le controle "Frais" se recalcule à chaque ajout ou suppression
d'enregistrement = Frais / Nb
Ex :
1er saisie : SFrais = 10
Type Frais Tarif
Resto 10 A

2e sasie : SFrais = 10
Type Frais Tarif
Resto 5 A
Ess 5 A

3eme saisie : SFrais = 10
Type Frais Tarif
Resto 3.33 A
Ess 3.33 A
Liv 3.33 B

j'ai donc fais un code à chaque mise à jour de "Type":

Me. B.Frais = Me.B.Sfrais/Me.B.Nb

mais il recalcule uniquement la valeur "Frais" du dernier enregistrement,
je désire qu'il recalcule entiérement tous les enregistrements pour cette
date.
J'ai testé avec une requete de mise à jour mais rien................

Merci pour votre aide.

Brucat








Avatar
3stone
Salut,

"brucat"
[...]
| Mais la mise à jour de ses enregistrements s'effectue uniquement lorsque je
| reclique dans le controle "Type". Il faut le faire pour chaque ligne.
|
| J'ai mis dans le controle "Type" Me.recalc aprés mise à jour
| Mais toujours rien.
|
| Comment faire cette mise à jour automatique


Hmm... pas facile de comprendre la situation...


En fait, il ne faut pas oublier d'utiliser *au maximum* les champs
calculés dans les requetes !

Si tu as deux champs dans la source du formulaire, genre :
Total = Prix X Quantité

Ne cherche pas dans le formulaire, mais fait le directement dans la requête...

Un champ calculé...

Total: [Prix] * [Quantité]

Tu obtient un nouveau "champ" qu'il te suffit de coller dans le formulaire.
Si dans le formulaire tu modifie la valeur de "Quantité", le Total sera
recalculé automatiquement...

Ok ?


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
brucat
Bonjour,

Je suis d'accord avec vous mais je doit récuperer la valeur de chaque
enregistrement dans ma table.
Je reprends ma demande à zéro, je n'ai pas été assez clair je suppose.

Nouvel exemple :
Table X champ frais par personne, saisie du champ frais dans le formulaire X
Table Y champ frais par date pour chaque personne, calcul dans le
formulaire Y
Dans le formulaire Y, J'ai crée un champ Total qui reprend le contenu de
TableX.frais
Total =TableX.frais = somme(TableY.frais)
Donc à chaque ajout de frais, je divise Total par le nb d'enregistrement de
la personne
Donc Me.Frais = Me.Total /Me.Nb
Le résultat apparait dans le champ frais de chaque enregistrement

Si je fais un champ calculé (zone détail)dans mon formulaire cela fait bien
le calcul en automatique mais je ne remplie pas ma Table Y.
Si je met Me.Frais = Me.Total /Me.Nb dans l'évenement Form_current et je
garde le controle frais(zone détail), le calcul est ok mais la mise à jour
s'effectue uniquement si je reclique sur chaque enregistrement.

J'espere être assez clair car j'ai le même besoin mais dans le sens inverse.
Je saisie dans le formulaire Y type mais je récupere le total(type) dans le
formulaire X.

De quoi m'occupe ce dimanche enneigé.

Merci pour toutes vos réponses
Brucat



"3stone" a écrit dans le message de news:

Salut,

"brucat"
[...]
| Mais la mise à jour de ses enregistrements s'effectue uniquement lorsque
je
| reclique dans le controle "Type". Il faut le faire pour chaque ligne.
|
| J'ai mis dans le controle "Type" Me.recalc aprés mise à jour
| Mais toujours rien.
|
| Comment faire cette mise à jour automatique


Hmm... pas facile de comprendre la situation...


En fait, il ne faut pas oublier d'utiliser *au maximum* les champs
calculés dans les requetes !

Si tu as deux champs dans la source du formulaire, genre :
Total = Prix X Quantité

Ne cherche pas dans le formulaire, mais fait le directement dans la
requête...

Un champ calculé...

Total: [Prix] * [Quantité]

Tu obtient un nouveau "champ" qu'il te suffit de coller dans le
formulaire.
Si dans le formulaire tu modifie la valeur de "Quantité", le Total sera
recalculé automatiquement...

Ok ?


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw





Avatar
3stone
Salut,

"brucat"
| Table X champ frais par personne, saisie du champ frais dans le formulaire X
| Table Y champ frais par date pour chaque personne, calcul dans le
| formulaire Y
| Dans le formulaire Y, J'ai crée un champ Total qui reprend le contenu de
| TableX.frais
| Total =TableX.frais = somme(TableY.frais)
| Donc à chaque ajout de frais, je divise Total par le nb d'enregistrement de
| la personne
| Donc Me.Frais = Me.Total /Me.Nb
| Le résultat apparait dans le champ frais de chaque enregistrement
|
| Si je fais un champ calculé (zone détail)dans mon formulaire cela fait bien
| le calcul en automatique mais je ne remplie pas ma Table Y.
| Si je met Me.Frais = Me.Total /Me.Nb dans l'évenement Form_current et je
| garde le controle frais(zone détail), le calcul est ok mais la mise à jour
| s'effectue uniquement si je reclique sur chaque enregistrement.
|
| J'espere être assez clair car j'ai le même besoin mais dans le sens inverse.
| Je saisie dans le formulaire Y type mais je récupere le total(type) dans le
| formulaire X.

D'abord, faut dire qu'il fortement déconseillé de *sauver* ce genre de résultat
dans une table... les données existent et peuvent être recalculés au besoin.
Un ou deux simple DSum() DLookup() permettent cela...
Car tu ne sera jamais vraiment sûr que les totaux et autres "précalculés"
seront correct avec certitude.

Si malgré tout...
Pour le sauver dans la table, tu as deux possibilités.

Si le champ fait partie de la source du formulaire, tu y "pousse" la valeur
dans l'événement "après mise à jour" du formulaire:
Me.LeChamp=(ton calcul)

Si le champ ne fait pas partie de la source, tu fait une petite requete
de mise à jour, toujours dans le l'événement du formulaire...
Docmd. Runsql "Update latable lechamp=" & (ton calcul) & " Where id=...


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
brucat
Bonjour,
Vous n'avez remis dans le droit chemin.
Je focalise sur ce que je voulais voir et non sur ce que je pouvais stocker
et visualiser dans un formulaire via une requete.

Donc j'ai fait une formulaire qui a comme source controle une requete.
Cette requete me calcule le controle frais.

Tout est ok

merci beaucoup

"3stone" a écrit dans le message de news:

Salut,

"brucat"
| Table X champ frais par personne, saisie du champ frais dans le
formulaire X
| Table Y champ frais par date pour chaque personne, calcul dans le
| formulaire Y
| Dans le formulaire Y, J'ai crée un champ Total qui reprend le contenu de
| TableX.frais
| Total =TableX.frais = somme(TableY.frais)
| Donc à chaque ajout de frais, je divise Total par le nb d'enregistrement
de
| la personne
| Donc Me.Frais = Me.Total /Me.Nb
| Le résultat apparait dans le champ frais de chaque enregistrement
|
| Si je fais un champ calculé (zone détail)dans mon formulaire cela fait
bien
| le calcul en automatique mais je ne remplie pas ma Table Y.
| Si je met Me.Frais = Me.Total /Me.Nb dans l'évenement Form_current et je
| garde le controle frais(zone détail), le calcul est ok mais la mise à
jour
| s'effectue uniquement si je reclique sur chaque enregistrement.
|
| J'espere être assez clair car j'ai le même besoin mais dans le sens
inverse.
| Je saisie dans le formulaire Y type mais je récupere le total(type) dans
le
| formulaire X.

D'abord, faut dire qu'il fortement déconseillé de *sauver* ce genre de
résultat
dans une table... les données existent et peuvent être recalculés au
besoin.
Un ou deux simple DSum() DLookup() permettent cela...
Car tu ne sera jamais vraiment sûr que les totaux et autres "précalculés"
seront correct avec certitude.

Si malgré tout...
Pour le sauver dans la table, tu as deux possibilités.

Si le champ fait partie de la source du formulaire, tu y "pousse" la
valeur
dans l'événement "après mise à jour" du formulaire:
Me.LeChamp=(ton calcul)

Si le champ ne fait pas partie de la source, tu fait une petite requete
de mise à jour, toujours dans le l'événement du formulaire...
Docmd. Runsql "Update latable lechamp=" & (ton calcul) & " Where id=...


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw






Avatar
brucat
Bonjour,
Vous n'avez remis dans le droit chemin.
Je focalise sur ce que je voulais voir et non sur ce que je pouvais stocker
et visualiser dans un formulaire via une requete.

Donc j'ai fait une formulaire qui a comme source controle une requete.
Cette requete me calcule le controle "frais".

Tout est ok

merci beaucoup

"3stone" a écrit dans le message de news:

Salut,

"brucat"
| Table X champ frais par personne, saisie du champ frais dans le
formulaire X
| Table Y champ frais par date pour chaque personne, calcul dans le
| formulaire Y
| Dans le formulaire Y, J'ai crée un champ Total qui reprend le contenu de
| TableX.frais
| Total =TableX.frais = somme(TableY.frais)
| Donc à chaque ajout de frais, je divise Total par le nb d'enregistrement
de
| la personne
| Donc Me.Frais = Me.Total /Me.Nb
| Le résultat apparait dans le champ frais de chaque enregistrement
|
| Si je fais un champ calculé (zone détail)dans mon formulaire cela fait
bien
| le calcul en automatique mais je ne remplie pas ma Table Y.
| Si je met Me.Frais = Me.Total /Me.Nb dans l'évenement Form_current et je
| garde le controle frais(zone détail), le calcul est ok mais la mise à
jour
| s'effectue uniquement si je reclique sur chaque enregistrement.
|
| J'espere être assez clair car j'ai le même besoin mais dans le sens
inverse.
| Je saisie dans le formulaire Y type mais je récupere le total(type) dans
le
| formulaire X.

D'abord, faut dire qu'il fortement déconseillé de *sauver* ce genre de
résultat
dans une table... les données existent et peuvent être recalculés au
besoin.
Un ou deux simple DSum() DLookup() permettent cela...
Car tu ne sera jamais vraiment sûr que les totaux et autres "précalculés"
seront correct avec certitude.

Si malgré tout...
Pour le sauver dans la table, tu as deux possibilités.

Si le champ fait partie de la source du formulaire, tu y "pousse" la
valeur
dans l'événement "après mise à jour" du formulaire:
Me.LeChamp=(ton calcul)

Si le champ ne fait pas partie de la source, tu fait une petite requete
de mise à jour, toujours dans le l'événement du formulaire...
Docmd. Runsql "Update latable lechamp=" & (ton calcul) & " Where id=...


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw