PDF / BILD entfernen und Speicher freigeben
Mahlzeit Zusammen,
um Speicherplatz zu sparen möchte ich, dass ein bestimmtes BILD Feld leer gemacht wird, wenn in einem Dropdown Feld ein bestimmter Wert steht.
Das habe ich mit diesem Code geschafft:
if Ausgeliefert = 1 then
'Fahrzeug Akte' := null
end
Nun habe ich aber schon, +350 Datensätze, die noch ein BILD haben.
Wie kann ich die am besten löschen, ohne es manuell machen zu müssen?
LG
4 Antworten
-
Hallo Martin, mit dem "Bildfeld := null" wird die Datei nicht gelöscht, sondern nur in den Anhang verschoben. Klick in den betreffenden Datensätzen mal auf das Büroklammer-Symbol ...
Es würde also auch keine Schleife helfen, die alle Datensätze durchgeht und das Bildfeld auf diese Weise leert. Wirkliches Löschen von Dateien geht m. W. leider nur per API oder durch Löschen des kompletten Datensatzes. Letzteres ist der Grund, warum viele Nutzer Dateien in einer eigenen Tabelle speichern und nur verknüpfen.
Zum Thema API müsstest du mal hier im Forum suchen, dazu hat schon häufiger was geschrieben. Ansonsten bleibt wohl nur, die Bilder nach und nach alle händisch zu löschen.
-
Weil ich's erst letzte Woche umgesetzt habe: Kunde legt Bild/PDF in einem Bildfeld ab. EinTrigger nach Änderung schiebt das Bild auf den SharePoint und löscht dann via Ninox API die Datei. Den API-Key bekommt man über die NINOX Einstellungen , Icon oben rechts, dann unter "Integrationen". Hier der Teil welcher das Bildfeld leert und den Dateianhang in Ninox löscht:
let me :=this;
let auth := {
Authorization: "Bearer DEIN_API_KEY",
'Content-Type': "application/json"
};let myBild := urlEncode(item(split(text('Fahrzeug Akte'), "/"), 1));
'Fahrzeug Akte' := null;
let response := do as server
http("DELETE", "https://api.ninoxdb.de/v1/teams/" + teamId() + "/databases/" + databaseId() +
"/tables/" +
tableId(this) +
"/records/" +
number(me) +
"/files/" +
myBild, auth, {})
end;Die Variable "response" schreibst Du zur Kontrolle evtl. Fehlermeldungen danach noch in ein mehrzeiliges Textfeld mit:
TEXTFELD := response
-
said:
Nun habe ich aber schon, +350 Datensätze, die noch ein BILD haben.
Wie kann ich die am besten löschen, ohne es manuell machen zu müssen?Wenn in den Datensätzen ausschließlich die von Dir via 'Fahrzeug Akte' := null in den Anhang verschobenen Bilder liegen - also EIN Bild/PDF, kannst Du
let myBild := urlEncode(item(split(text('Fahrzeug Akte'), "/"), 1)); durch
let myBild := urlEncode(item(split(text(first(files(this))), "/"), 1));
ersetzen. Das ganze script mal testweise in einen Button legen und schauen, ob es jeweils für einen Datensatz funktioniert. Wenn es klappt, kannst Du entweder +350 mal den Button drücken oder das Script im Button in eine for-Schleife setzen und aus irgendeinem Datensatz aufrufen. Damit geht er alle Datensatz deiner Tabelle durch. Aber ACHTUNG, es wird immer der erste Dateianhang den er findet gelöscht! Falls es mehrere Dateianhänge in den Datensätze gibt, muss man evtl. noch eine Abfrage nach dem Namen einabauen...!
let auth := {
Authorization: "Bearer DEIN_API_KEY",
'Content-Type': "application/json"
};for i in select DEINETABELLE do
i.(
let me := this;
let myBild := urlEncode(item(split(text('Fahrzeug Akte'), "/"), 1));
'Fahrzeug Akte' := null;
let response := do as server
http("DELETE", "https://api.ninoxdb.de/v1/teams/" + teamId() + "/databases/" + databaseId() +
"/tables/" +
tableId(this) +
"/records/" +
number(me) +
"/files/" +
myBild, auth, {})
end;) end
-
DANKE :)
das Hilft.
LG
Content aside
- Status Answered
- vor 6 MonatenZuletzt aktiv
- 4Antworten
- 102Ansichten
-
5
Folge bereits