Automatisierung Änderungsprotokollposten löschen

16. April 2007 12:20

Hi,

ich möchte eine Funktion schreiben, welche mir gewisse Änderungsprotokollposten löscht.

Habe da an 2 Ansaetze gedacht.

1.

Code:
"Änd.-Protokollposten löschen".USEREQUESTFORM := FALSE;
"Änd.-Protokollposten löschen".RUN;


Würde alle vorhandenen löschen? Sofern aber ein Filter hinterlegt war, wird auf diesem zugegriffen, und dann erscheinen da noch 2 Popups, welche ich in R51ß wohl auskommentieren müsste ? Und evtl. Date and Time mit einen neuen FIlter überschreibe?


2.
Code:
function DeleteProtokollposten(){
Änderungsprotokollposten.SETFILTER("Date and Time", '<%1', CURRENTDATETIME-604800000);
WHILE Änderungsprotokollposten.FIND('-') DO
  Änderungsprotokollposten.DELETE;
}


Wenn ich das so mache , Heute - 10 Tage, und rufe das ganze aus einer Codeunit aus auf, bekomme ich die Meldung das "Ihre Zugriffsrechte auf die Tabelle Änderungsprotokollposten es nicht erlauben , Daten zu löschen".

Wundert mich gerade ein bischen, weil ich kann ja den Report 510 über Period. Akt. in der FiBu aufrufen und dort alte Eintraege löschen.

Bekomme ich die Posten nur über Report 510 gelöscht? Stehe gerade ein bischen aufn Schlauch!

Danke euch
Zuletzt geändert von elTorito am 8. April 2013 15:03, insgesamt 2-mal geändert.

Re: Automatisierung Änderungsprotokollposten löschen

16. April 2007 12:34

Hi elTorito!

elTorito hat geschrieben:Wundert mich gerade ein bischen, weil ich kann ja den Report 510 über Period. Akt. in der FiBu aufrufen und dort alte Eintraege löschen.

Das liegt an der Report-Eigenschaft "Permissions". Dort steht nämlich: TableData Change Log Entry=rid. Das heißt, der Report kann - sofern in den Benutzerrechten ein indirektes Löschen erlaubt ist, Datensätze aus der Tabellen Änderungsportokoll löschen.

elTorito hat geschrieben:
Code:
function DeleteProtokollposten(){
Änderungsprotokollposten.SETFILTER("Date and Time", '<%1', CURRENTDATETIME-604800000);
WHILE Änderungsprotokollposten.FIND('-') DO
  Änderungsprotokollposten.DELETE;
}

Das würde ich so machen (ohne WHILE-Schleife):
Code:
function DeleteProtokollposten(){
  Änderungsprotokollposten.SETFILTER("Date and Time", '<%1', CURRENTDATETIME-604800000);
  Änderungsprotokollposten.DELETEALL;
}


Gruß, Marc

Re: Automatisierung Änderungsprotokollposten löschen

16. April 2007 15:26

Hi Marc,

Marc Teuber hat geschrieben:Hi elTorito!

Das würde ich so machen (ohne WHILE-Schleife):
Code:
function DeleteProtokollposten(){
  Änderungsprotokollposten.SETFILTER("Date and Time", '<%1', CURRENTDATETIME-604800000);
  Änderungsprotokollposten.DELETEALL;
}


Gruß, Marc


Danke !

17. April 2007 10:33

Hmm. Gestern ging es , heute will ich den Funktionsaufruf noch einmal testen, und bekomme wieder die Meldung, das die Zugriffsrechte nicht reichen um in der Änderungsprotokollpostentabelle Daten zu löschen.


Wie oben geschrieben, die Funktion befindet sich in einer Codeunit, und besteht lediglich aus:

Name DataType Subtype Length
Änderungsprotokollposten Record Change Log Entry

Code:

Änderungsprotokollposten.SETFILTER("Date and Time", '<%1', CURRENTDATETIME-604800000);
Änderungsprotokollposten.DELETEALL;


Ratlos bin...
:roll:

17. April 2007 10:42

Dann prüfe noch mal die Zugriffsrechte. Eines der beiden folgenden Zustände muss gegeben sein:

1. Du als Benutzer hast über eine Rolle das Zugriffsrecht um in der Tabelle Änderungspotokollposten Datensätze zu löschen (Löschen=Ja)

2. Du als Benutzer hast über eine Rolle das indirekte Zugriffsrecht um in der Tabelle Änderungspotokollposten Datensätze zu löschen (Löschen=Indirekt) und zusätzlich besitzt deine Codeunit die Permission Änderungsprotokollposten zu löschen.

Gruß, Marc

17. April 2007 10:56

Hi,

mein Benutzer hat Rolle SUPER (Allesdürfer).

Habe nun folgendes rausgefunden!!!

Die Zugriffsrechte Fehlermeldung kam nur solange ich nicht den Report 510 (Änd.-Protokoll löschen) ausführe. Wenn der Report einmal ausgeführt wurde, kann ich anschl. meine Funktion (der 2 Zeiler von oben) ausführen, ohne das ein Fehler erscheint.

Habe nun die Datenbank neu gestartet, und Funktion lässt sich noch immer ausführen. Echt seltsam das ganze, ich versuch jetzt mal was ist wenn ich reboote ....

back in 5 min.

hmm. nun lässt die Funktion sich auch ausführen ohne zu meckern...
Ich glaub belassen es bei einen Zufallsfehler, auch wenn der nun schon zum 2ten mal aufgetreten war.

24. April 2007 17:51

Und nun lässt die Funktion sich wieder nicht ausführen... echt Strange das ganze ... grummel ... nun geht es nicht einmal mehr wenn ich vorher den Report 510 ausführe...

Hmm... bzw. meine Funktion laesst sich nur ausführen wenn keine zu löschenden Änderungsposten vorhanden sind. Wenn welche vorhanden die gelöscht werden könnten. Kommt der Fehler mit den Zugriffsrechten.