09. januar 2002 - 15:13Der er
16 kommentarer og 1 løsning
After Update
Jeg har x antal felter med after update funktioner - men den beregning der foretages i disse felter skal nu ændres - det vil sige at de poster der ligger i databasen på nuværende tidspunkt skal ændres efter disse nye beregninger!
Kan det være rigtigt at jeg skal opdatere disse manuelt, på hver eneste og i hvert eneste felt eller kan man lave et lille trick der opdatere alt? i alle poster
cgleerup>If you make your calculations in th e BEFORE update event then the data isnt in th e database yet, and you can CANCEL th eupdate, make your changes and then continee updating again.
There is a parameter in the (forms) BEFORE UPDATE event set this to true (CANCEL = TRUE) if you wnat too cancle the update
Koden svarer til en opdateringsforespørgsel, der ændrer data i tabellen. I mit tilfælde ændrer du i tabellen Tabelnavn i feltet Feltnavn, som du giver værdien False.
jeg har 200 poster som alle indeholder de samme felter, men nogle af disse felter er beregnet ud fra nogle andre felter i postern, altså en kalkulering der foretages med en after update eksempelvis.
som eksempel:
på feltet felt2 sidder følgende funktion - after update, felta + 10
nu skal tallet så ikke længere være + 10 men + 15 i stedet for, og så skal alle poster opdateres efter dette - men det er ikke blot et felt der har ændred sig - det er ganske mange der er beregnet på denne måde - så en måde til at opdatere disse ville være perfekt.
Altså vil jeg gerne have en funktion der aktivere after update på samtlige felter i samtlige poster - kan det lade sig gørè?
If I understand you correctly the existing records have been calculated wrongly and you now want to update them ALL in one go. Then for new records use the CORRECT calculation, IKKE? In the debug window (CTRL+G) enter
DoCmd.RunSQL \"UPDATE YourTable SET YourTable.Felta = YourTable.Felta + 5\"
Det er ikke en fejl, men nogle forhold der har ændret sig - og det gør de måske igen. Desuden har jeg før manglet en løsning på problemet hvor jeg har klarret mig med noget der minder om de forslag her - men nu vil jeg have fundet ud af op alle disse handlinger ikke kan kaldes via makroer.
Således at én makro løber alle handlinger igennem så disse afvikles, og det for alle poster.
Hmm - Jeg tror min testdb forklarer en hel del. Men: Nedenstående kode opdaterer felt3, som er afhængig af felterne felt 1 og felt 2
Private Sub felt2_BeforeUpdate(Cancel As Integer) felt3 = felt1 + felt2 End Sub
Nu har du så indset, at f.eks er en fejl i beregningen af felt3. Denne skal så rettes, det gør du ved hjælp af en SQL-sætning i en kommandoknap. DENNE SQL GENNEMLØBER ALLE POSTER I Tabel1, OG RETTER DEM TIL DEN NYE UDREGNING:
Private Sub Kommandoknap6_Click() DoCmd.RunSQL \"UPDATE Tabel1 SET Tabel1.Felt3 = Felt1 - Felt2;\" Me.Refresh End Sub
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.