Avatar billede naza Nybegynder
16. december 2004 - 13:28 Der er 6 kommentarer

Trackchanges ved sletning

Hej

Jeg har i en access database en function der køre hver gang nogen ændre værdien i et felt - Funktionen registrer den gamle værdi og den nye værdi - Dvs. en logfil af alle ændringer.

Men hvis folk sletter en hel linje så bliver der ikke registereret noget. Jeg vil gerne benytte den event der hedder "On Delete" som netop køre en event ved sletning af en linje.
Jeg kan se, at denne event køres for hver post der er i en linje - Dvs. hvis jeg f.eks. sletter en linje hvor der er 5 felter/poster man kan udfylde så køres eventen 5 gange (altså hver gang den sletter et felt/post)

Det jeg så gerne vil er, at jeg vil hente fange værdierne af de felter den sletter. Det jeg søger er en kommando til at hente værdien af netop det felt den er ved at slette - Håber i forstår hvad jeg mener eller skal jeg gerne uddybe :-)

Mvh. Jannik
Avatar billede kabbak Professor
16. december 2004 - 14:12 #1
Lidt fra Access hjælp

Delete, BeforeDelConfirm, AfterDelConfirm Events
                               
The Delete event occurs when the user performs some action, such as pressing the DEL key, to delete a record, but before the record is actually deleted.


The BeforeDelConfirm event occurs after the user deletes to the buffer one or more records, but before Microsoft Access displays a dialog box asking the user to confirm the deletions.


The AfterDelConfirm event occurs after the user confirms the deletions and the records are actually deleted or when the deletions are canceled.

Private Sub Form_BeforeDelConfirm(Cancel As Integer, _
        Response As Integer)
    ' Suppress default Delete Confirm dialog box.
    Response = acDataErrContinue
    ' Display custom dialog box.
    If MsgBox("Delete this record?", vbOKCancel) = vbCancel Then
        Cancel = True
    End If
End Sub

Private Sub Form_AfterDelConfirm(Status As Integer)
    Select Case Status
        Case acDeleteOK
            MsgBox "Deletion occurred normally."
        Case acDeleteCancel
            MsgBox "Programmer canceled the deletion."
        Case acDeleteUserCancel
            MsgBox "User canceled the deletion."
    End Select
End Sub
Avatar billede naza Nybegynder
16. december 2004 - 14:51 #2
Har læst denne hjælpefil - Men det er ikke det jeg søger.

Ovenstående beder bare brugeren om at bekræfte om man vil slette linjen. Det jeg søger er en måde at hente feltnavnet og værdien i feltet på det felt der er ved at blive slettet

F.eks. således at hvis jeg sletter en række med 5 felter - hvis jeg her har mulighed for at hente feltnavn og værdi inden den slettes så kan jeg smide den over i min logfil så man kan se hvad der stod i den linje der blev slettet.

Mvh. Jannik
Avatar billede kabbak Professor
16. december 2004 - 14:54 #3
du skal jo erstatte koden med din kode, det andet er jo et eksempel.



Private Sub Form_BeforeDelConfirm(Cancel As Integer, _
'Kald din funktion her og du kan få den gamle værdi     
 
End Sub
Avatar billede kabbak Professor
16. december 2004 - 14:55 #4
Private Sub Form_BeforeDelConfirm(Cancel As Integer,Response As Integer)
'Kald din funktion her og du kan få den gamle værdi     
End Sub
Avatar billede naza Nybegynder
16. december 2004 - 15:05 #5
Men hvilken kommando skal jeg bruge for at få den til at hente navnet på det felt den er ved at slette? For når jeg markerer en hel linje og klikker slet så vil koden jo blive kørt 5 gange hvis der er 5 felter i linjen. Derfor har jeg brug for at kunne identificerer i min kode hvilket felt der er ved at blive slettet så jeg kan hente værdien af feltet inden den slettes.
16. december 2004 - 15:27 #6
jeg har selv lavet tilsvarende funktion, hvor jeg brugte denne kode:

Private Sub Form_Delete(Cancel As Integer)
    If MsgBox("Ønsker du at slette denne post?", vbQuestion + vbYesNo, "Slet?") = vbYes Then
        SkrivTilHistorik Me.RecordSource, PrimærNøgle, PKey, HandlingSletning
       
        'Brug sendkeys til at acceptere dialogboksen, som spørger om du er sikker.
        'Denne metode er ikke helt pæn, da Sendkeys er lidt fy-fy
        SendKeys "{ENTER}", False
    Else
        DoCmd.CancelEvent
    End If
End Sub


SkrivTilHistorik er den funktion, som opretter en post i min historik-tabel.
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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