Dateien in Bildfeldern und Datensatzanhänge löschen
Eine der besten Methoden, um Speicherplatz in einer Ninox-Lösung freizugeben, ist das regelmäßige Löschen von Dateien, die in Bildfeldern oder als Anhang zu Datensätzen gespeichert sind.
Dateien in Bildfeldern löschen
Das kann mit einem Skript erledigt werden, das die Bildfelder einer ausgewählten Tabelle durchsucht und die gespeicherten Dateien löscht, und anschließend das Bildfeld auf null setzt.
Wichtig: Man muss sowohl die zugrundeliegende Datei löschen als auch das Bildfeld auf null setzen, damit die Änderungen wirksam werden. Hier ein Beispiel:
for r in select Tabelle1 do
removeFile(r.Bild);
removeFile(r.'Bild 2');
r.(Bild := null);
r.('Bild 2' := null)
end;
So kann es umgesetzt werden:
- Die Beispieldatenbank in einen Arbeitsbereich hochladen.
- Die Datenbank öffnen und zu Testzwecken eine Datei in ein Bildfeld einfügen.
- Auf den Button "Bildfeld-Dateien löschen" klicken. Damit wird die hinzugefügte Datei entfernt.
- Dann in den Bearbeitungsmodus wechseln und auf den Button "Bildfeld-Dateien löschen" klicken.
- Das Skript kopieren.
- In der eigenen Datenbank zur Tabelle, aus der die Dateien entfernt werden sollen, gehen.
- Einen Button erstellen und das Skript in die "Beim Klicken"-Formel einfügen. Dabei muss der Tabellenname (z. B. Tabelle1) im select-Befehl durch den aktuellen Tabellennamen und die Bildfeldnamen (z. B. Bild und Bild 2) durch die Namen der aktuell genutzten Bildfelder ersetzt werden.
- Wenn man dann auf den Button klickt, werden alle Dateien in dieser Tabelle gelöscht, und die Bild-Felder, in denen sie gespeichert waren, werden geleert.
Es können auch Datumsfilter im Skript eingebunden werden, so dass nur Dateien von Datensätzen, die in einem bestimmten Zeitraum erstellt wurden, gelöscht werden.
Wenn z. B. das Datum des Feldes "Erstellt am" in einem Datensatz vor einem bestimmten Datum liegt, werden nur die Dateien dieser Datensätze aus den Bildfeldern gelöscht und diese auf null gesetzt.
Hier ein Beispiel:
let cutoffDate := date(2024, 12, 31);
for r in select Tabelle1 do
if r.Auftragsdatum < cutoffDate then
removeFile(r.Bild);
removeFile(r.'Bild 2');
r.(Bild := null);
r.('Bild 2' := null)
end
end;
Dateien in Anhängen sowie Dateien in Bildfelder löschen
Das Prinzip ist ähnlich, aber die Umsetzung erfolgt etwas anders. Dies liegt daran, dass die Funktion files() alle Dateien zurückgibt, die mit einem Datensatz verknüpft sind. Dateien, die in Bildfeldern gespeichert sind, werden in der Dateistruktur als Anhänge abgelegt, auch wenn sie in der Benutzeroberfläche nicht im Abschnitt ‚Anhänge‘ des Datensatzes angezeigt werden.
Hier ein Beispiel:
for r in select Tabelle1 do
for f in files(r) do
removeFile(r, last(split(text(f), "/")))
end
r.(Bild := null);
r.('Bild 2' := null)
end;
So setzt man es in der eigenen Datenbank um:
- Die unten bereitgestellte Datenbank in einen Arbeitsbereich hochladen.
- Die Datenbank öffnen und zu Testzwecken eine Datei als Anhang sowie in den Bildfelder hinzufügen.
- Auf den Button "Anhänge und Bildfeld-Dateien löschen" klicken, um den gerade hinzugefügten Anhang und Dateien aus dem Bildfelder wieder zu entfernen.
- In den Bearbeitungsmodus wechseln und auf den Button "Anhänge und Bildfeld-Dateien löschen" klicken.
- Das Skript kopieren.
- Zur Tabelle, aus der die Dateien entfernen werden sollen, gehen.
- Einen Button erstellen und das Skript in die "Beim Klicken"-Formel einfügen. Dabei muss der Tabellenname im select-Befehl durch aktuellen Tabellennamen ersetzt werden.
- Mit einem Klick auf den Button werden nun alle Dateianhänge sowie in dieser Tabelle gelöscht.
Man kann auch Datumsfilter im Skript einbinden, so dass Datensätze gefiltert werden. Wenn das Datum des Feldes "Erstellt am" vor einem bestimmten Datum liegt, werden nur die Dateien aus den Anhängen dieser Datensätze gelöscht.
Hier ein Beispiel:
let cutOffDate := date(2025, 8, 31);
for r in (select Tabelle1)[number('Erstellt am') < number(cutOffDate)] do
for f in files(r) do
removeFile(r, last(split(text(f), "/")))
end;
r.(Bild := null);
r.('Bild 2' := null)
end;
WICHTIG: In beiden Fällen muss man die Backups der entsprechenden Datenbank nach dem Durchführen dieser Änderungen löschen, damit der Speicherplatz sich wirksam ändert. Achtung: Die Nutzungsübersicht wird nur einmal täglich automatisch aktualisiert. Daher sieht man die Reduzierung der Datenbankgröße möglicherweise erst am nächsten Tag.
Antwort
Content aside
- vor 1 StundeZuletzt aktiv
- 3Ansichten
-
1
Folge bereits
