0

Doppelte Datensätze löschen und NUR aktuellsten behalten

Servus zusammen, 

ich habe eine Tabelle Rechnungen. Mit einem Button erstelle ich eine Rechnung, welche in einer zweiten Tabelle Dokumente gespeichert wird. Nun möchte ich es aber vermeiden, dass ein Dokument mehrmals in der Tabelle Dokumente gespeichert wird und immer nur das aktuellste Dokument behalten. 

Mein Skript sieht aktuell so aus, aber funktioniert leider nicht. 

 

let myFileName := Rechnungsnummer + ".pdf";
let me := this;
let newDoc := (create Dokumente);
importFile(newDoc, printAndSaveRecord(me, "Rechnung_DC_DE"), myFileName);
newDoc.(
    Dokument := myFileName;
    Dokumentname := myFileName;
    Dokumenttyp := 3;
    Erstellungsdatum := today();
    Rechnungen := me
);
popupRecord(newDoc) + ('Rechnung fällig' := today() + 14) +
for i in Dokumente order by now() - 'Zuletzt geändert' do
    delete Dokumente[Dokumentname = i.Dokumentname and Dokumenttyp = i.Dokumenttyp and Nr != i.Nr and
        not substring(Dokumentname, 0, 1)]
end

 

Copy

 

Freu mich auf euer Feedback. 

Viele Grüße,

Andi

5 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Andi, mir ist zwar nicht klar, wie und warum eine Rechnung mehrfach erstellt wird, aber rein technisch gesehen würde ich es so versuchen (nach den newDoc-Zuweisungen):

    [...]
    );
    'Rechnung fällig' := today() + 14;
    delete (select Dokumente
       where Dokumentname = newDoc.Dokumentname and Dokumenttyp = 3 and
       'Zuletzt geändert' < newDoc.'Zuletzt geändert');
    popupRecord(newDoc)
    

    Vor dem Ausprobieren natürlich ein Backup der Datenbank machen oder mit Demodaten arbeiten.

      • Andi_Neumaier
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro Perfekt! Und schon hats geklappt! Vielen Dank für deine Hilfe. 

      Soll eigentlich nur ein Sicherheitsmechanismus sein, sollte mal eine Position vergessen worden sein, oder etwas korrigiert werden, damit auch immer die "aktuellste" Rechnung abgelegt wird. 

      Schönen Sonntag!

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Andi Neumaier Ach so, okay. Dann könnte man die erzeugte PDF-Datei aber auch in einem Bildfeld speichern (Datei := importFile(newDoc ...) und dies bei erneutem "Drucken" einfach mit der aktuellen Version überschreiben. Hätte zudem den Vorteil, dass man nicht immer erst in den Anhang wechseln muss, um das Dokument zu sehen bzw. zu öffnen. Nur so als Idee.

      • Andi_Neumaier
      • vor 1 Jahr
      • Gemeldet - anzeigen

      planox. pro klar, wäre auch möglich - hab das ganze aber noch etwas erweitert. Ich speichere die Dokumente in der Tabelle Dokumente in einem Bildfeld und hole mir das letzte Dokument aber auch immer über ein Formelfeld in den Datensatz von der Rechnungstabelle. Dadurch spart man sich das klicken auf die Anhänge, hat aber trotzdem einen Zentralen Ort wo immer alles abgelegt wird. 👌

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Andi Neumaier Ja, so mache ich es auch in manchen Fällen. Das ist allerdings unabhängig von der Frage, ob man die Bilddatei (in Dokumente) ersetzt oder einen neuen Datensatz erstellt und den älteren löscht. Aber das war wie gesagt nur als zusätzliche Anregung gedacht. Wenn es so für dich passt, dann ist das ja super.