20. august 2014 - 12:59Der er
6 kommentarer og 1 løsning
Opdater Form efter Record delete
Hej Eksperter,
Jeg har en form med to child forms. Jeg vil gerne have at hvis jeg sletter en record i den ene child form, så skal en kolonne opdateres i den anden child form.
De to child forms er ikke relateret.
Jeg har en AfterUpdate event på den ene child form der fint opdaterer den anden child form, men jeg har meget svært ved at få Access til at håndtere events efter record deletes.
Jeg har forsøgt mig med Form_Delete event, men eftersom den value der skal bruges endnu ikke er ændret i det step, virker det ikke rigtigt.
Jeg har også forsøgt mig med Form_Current, men jeg synes ikke altid at den trigger når den skal og yderligerer resulterer den i et hav af unødvendige triggers og får hele formen til at blinke konstant og afbryde normal indtastning.
Her er et eksempel på min AfterUpdate (som virker fint):
Private Sub txtQUANTITY_AfterUpdate()
'Calculate Total Weight Me.txtTOTAL_WEIGHT = calcTotalWeight()
'Force save record DoCmd.RunCommand acCmdSaveRecord
'Update 'Parent' Total Weight Form_frmOrderProductMixed.mixedWeight (Me.MIXED_BOX_ID) Form_frmOrderProductMixed.Refresh
Når records i Form1 tilføjes/ændres/slettes skal total stk holdes opdateret i Form2.
Ved ændringer og tilføjelser klarer jeg det ved det stykke kode jeg oprindeligt vedhæftede spørgsmålet (AfterUpdate) og det virker upåklageligt.
Når jeg sletter en record kan jeg fange eventet i Form_Delete, men record'en er ikke slettet før Form_Delete er afsluttet. Dette betyder at min mixedWeight funktion i Form2 ikke ser ændringen og henter en inkorrekt sum.
BeforeDelConfirm and AfterDelConfirm are only triggered if you suppress the standard Deletion Confirmation in Access, but I'm not using confirmations for these deletions, so they are never triggered.
Jeg har løst problemet, men det er ikke kønt og jeg ville ønske Access havde en ordentlig AfterDelete (ligesom de har AfterUpdate).
Til info har jeg valgt at gøre brug af Form_Timer og Form_Delete. Ved at slette en record aktiveres Form_Delete som starter Form_Timer der igangsætter opdateringen og slår timeren fra igen:
Private Sub Form_Timer()
Me.Requery
'Update 'Sibling' Total Weight Form_frmOrderProductMixed.mixedWeight (Me.MIXED_BOX_ID) Form_frmOrderProductMixed.Refresh
Me.TimerInterval = 0
End Sub
Private Sub Form_Delete(Cancel As Integer)
Me.TimerInterval = 1
End Sub
Synes godt om
Ny brugerNybegynder
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.