Avatar billede petersen7913 Forsker
25. januar 2021 - 12:17 Der er 11 kommentarer og
3 løsninger

Hvornår fanger AfterUpdate? Er Dirty eller Change bedre?

Jeg har en tabel med SalesVolume. Når den ændres skal jeg beregne andre felter i andre tabeller.

Jeg har lagt min kode på AfterUpdate, men det ser ud til at den nye værdi ikke er commited ned i tabellen. Jeg har en forespørgsel, der vælger den ændrede værdi og summer den med andre.

Vil det være bedre at lægge beregningerne på OnDirty? OnChange ser ud til ikke at være det rigtige valg.

Pft.
Avatar billede terry Ekspert
25. januar 2021 - 12:47 #1
Nothing is commited to the table until the form.AfterUpdate is fired, you shouldnt update other tables when a field.afterupdate event occures
Avatar billede petersen7913 Forsker
25. januar 2021 - 13:01 #3
Tak, det er en oversigt, som jeg får meget glæde af.
Så det vil være bedre at lægge min kode på Exit, ser det ud til?
Avatar billede terry Ekspert
25. januar 2021 - 13:18 #4
Exit? Exiting a field wont update the record
Avatar billede terry Ekspert
25. januar 2021 - 13:20 #5
if you need to update other tables after you update a value in the current table, then I think you should wait until you update the record, IE afterupdate of the form
Avatar billede terry Ekspert
25. januar 2021 - 13:21 #6
If you update on control.exit then the user can undo the changes by pressing ctrl, and theat would mean the data in the other tables is now wrong :-(
Avatar billede petersen7913 Forsker
25. januar 2021 - 13:32 #7
Det lyder rigtigt, tak :)
Avatar billede terry Ekspert
25. januar 2021 - 13:44 #8
selv tak
Avatar billede petersen7913 Forsker
25. januar 2021 - 13:51 #9
Hm... jeg lægger min kode i form.AfterUpdate.
Men hvordan kan jeg se se hvilke(t) felt, der er ændret. Der er jo ingen grund til at lave genberegninger, hvis Volume-feltet ikke er ændret.
Avatar billede terry Ekspert
25. januar 2021 - 14:09 #10
Just let me test something...
Avatar billede petersen7913 Forsker
25. januar 2021 - 14:17 #11
Takker, jeg holder en kort kaffepause ;)
Avatar billede terry Ekspert
25. januar 2021 - 14:17 #12
OK, move the code to the BEFORE update event of the form.
Here you can test the fields OldValue

So if Me.YourField isnt the same as MeYourField.OldValue then update other tables
Avatar billede petersen7913 Forsker
25. januar 2021 - 14:36 #13
Virker perfekt :)
Avatar billede terry Ekspert
25. januar 2021 - 14:47 #14
;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Netcompany A/S

Test Specialist

Cognizant Technology Solutions Denmark ApS

Senior DeltaV Engineer