0

Datensatz nach 10 Jahren automatisch löschen nach abfrage

Hey,
ich bin grade auf der Suche nach einer Lösung für unser Problem.
Ich möchte eine Funktion schreiben die einen Datensatz nach 10 Jahren löscht, aber vorher eine E-Mail sendet, um eine Bestätigung einzuholen. Könnte mir da einer weiterhelfen? LG Max und Danke

14 Antworten

null
    • Developer by Smartplanung
    • smartplanung
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Wenn da auf den Tag genau und zu 100% verlässlich funktionieren soll, geht das nur mit externer Anbindung von der aus ein Cronjob gestartet wird, welcher die entsprechenden Datensätze prüft. Das kann man dann 1 mal am Tag prüfen lassen. Wenn Datensätze zum löschen vorhanden sind, kann man eine Mail versenden.

    Alternativ, jedoch abhängig davon, dass jemand täglich mit Ninox arbeitet, beim Start der Datenbank die Records abfragen, ob ein Datum > 10 Jahre ist. Wenn ja, kann auch hier eine Mail mit sendMail() gesendet werden oder man erstellt eine Benachrichtigung z.B. in einem Dashboard oder einen dialog().

    Damit die Abfrage nicht bei jedem Öffnen durchgeführt wird, kann man in irgendeiner Tabelle, z.B. Dashboard ein Datumsfeld hinterlegen, wo beim Öffnen abgeglichen wird, ob heute schon abgefragt wurde.

    Die Alternative ist halt nicht 100% zuverlässig, weil sie für die Prüfung mindestens geöffnet werden muss.

      • filling_max
      • vor 5 Monaten
      • Gemeldet - anzeigen

        vielen Dank für deine schnelle Antwort. Könntest du mir vielleicht auch einen Code geben der das darstellt. Ich habe nicht so wirklich Ahnung, wie ich sowas erstellen sollte. Und vielleicht könntest du mir noch sagen was mit Trigger beim öffnen der Datenbank gemeint ist, wie kann ich das da rein packen. Viele Dank für deine Mühe 

      • Developer by Smartplanung
      • smartplanung
      • vor 5 Monaten
      • Gemeldet - anzeigen

       

      • Admin Modus in der Datenbank aktivieren
      • in die Hauptübersicht der Datenbank, welche beim Öffnen der Datenbank angezeigt wird
      • Optionen anklicken
      • und dann das Feld "Trigger nach Öffnen" anklicken. Dort kann dann das Script rein. Schau Dir mal den Post weiter unten von mir an, da sind passende Beispiele drin.
      • filling_max
      • vor 4 Monaten
      • Gemeldet - anzeigen

       hey ich bin grade dabei einen Code zu schreiben. 

      if cnt(select Mitarbeiter where Austrittsdatum < now() and not Austrittsdatum) > 0 then
          alert("Es gibt offene Termine in der Vergangenheit")
      end

      Ich möchte gerne das dass Feld Austrittsdatum in der Tabelle Mitarbeiter überprüft wird ob dieser schon 10 Jahre ausgeschieden ist und wenn ja soll eine Benachrichtigung ans Dashboard gesendet werden und der Datensatz soll gelöscht werden. Kann du mir vielleicht helfen bei der Script Erstellung

      • Developer by Smartplanung
      • smartplanung
      • vor 4 Monaten
      • Gemeldet - anzeigen

       erstelle ein Ja-/Nein Feld im Dashboard, welches Du auf true setzt ,statt einen Alert auszugeben. Zusätzlich fügst Du noch eine Ansicht im Dashboard ein mit dem gleichen Select, nur ohne cnt(). Die Ansicht machst Du nur sichtbar, wenn das Ja-/Nein Feld true ist.

      Das Ja-/Nein Feld setzt Du in dessen Einstellungen ganz unten auf Globale Variable, damit das im Browser und nicht auf dem Server gespeichert wird und setzt den Standard-Wert auf Nein. So hast Du bei jedem Refresh das Feld auf Nein, bis die Prüfung im Start-Script was anderes sagt.

      Wenn gewünscht kann man zusätzlich einen Button einblenden lassen, welcher weitere Aktionen durchführt. Z.B. das Ja-/Nein Feld wieder auf false setzen, um die Ansicht auszublenden oder was auch immer.

    • KGV_Sonneneck_eV_Neuha
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Hallo, ich Klinke mich da mal mit ein.  

    Mich würde das für Termine interessieren. 

    Ich habe eine Tabelle Termine wo die Termine erfasse. 

    Felder sind Termin - Datum-Zeit-, Termingrund und Beschreibung, sowie ein Ja/nein Feld Erledigung.

    Ideal wäre es, wenn beim öffnen der Datenbank die Abfrage der Tabelle Termine erfolgen würde, bis der Termin als erledigt ist.

    Leider habe ich nicht mal ansatzweise, wie das zu bewerkstelligen wäre.

    Gruß Axel

      • Developer by Smartplanung
      • smartplanung
      • vor 5 Monaten
      • Gemeldet - anzeigen

      KGV Sonneneck e.V. Neuhardenberg eine Möglichkeit wäre sowas wie:

      if cnt( select Tabelle where Datum < today() and not Erledigung) > 0 then
      alert("Es gibt offene Termine in der Vergangenheit")
      end

      Wenn Datum+Uhrzeit-Feld:

      if cnt( select Tabelle where Termin < now() and not Erledigung) > 0 then
      alert("Es gibt offene Termine in der Vergangenheit")
      end

      Wenn Datum und Uhrzeit (hier wirds vielleicht etwas knifflig weil Ninox das mit Unix-Zeiten nicht hinbekommt):

      if cnt( select Tabelle where Datum <= today() and Uhrzeit < time(now()) and not Erledigung) > 0 then
      alert("Es gibt offene Termine in der Vergangenheit")
      end

       

      Das packst Du in den Trigger beim öffnen der Datenbank.

      Eine alternative Möglichkeit wäre aber auch sich im Dashboard eine Tabelle mit den entsprechenden Terminen anzeigen zu lassen, wenn es welche gibt. Die Sichtbarkeit kann man genauso darüber steuern, damit ggf. keine leere Tabelle angezeigt wird.

      • KGV_Sonneneck_eV_Neuha
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Hallo Patrick vielen Dank für die schnelle Antwort. Ich werde mal das Testen. Ich melde mich dann wenn es geklappt hat oder auch nicht geklappt hat

      • KGV_Sonneneck_eV_Neuha
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Hallo Patrick, das hat alles super geklappt (2.Variante). Hab’s dann gleich so eingerichtet, dass die Tabelle Termine, bei offenen Terminen, auch geöffnet wird. Sind keine vorhanden öffnet sich das Dashboard. Nochmals Danke und einen schönen 1. Advent.

      grüsse aus Berlin Axel

    • Bernhard_Schulze.1
    • vor 4 Monaten
    • Gemeldet - anzeigen

    Hallo!

    Das könnte generell ein Thema zur DSGVO sein, zu der es unterschiedliche Löschfristen gibt:

    https://www.datenschutzexperte.de/loeschkonzept-im-unternehmen/

    Teilweise zwingend, teilweise mit den gesetzlichen Aufbewahrungsfristen abzugleichen.

    • filling_max
    • vor 4 Monaten
    • Gemeldet - anzeigen

     ok, weist du wie man das Code speziell darstellen kann?

      • Bernhard_Schulze.1
      • vor 4 Monaten
      • Gemeldet - anzeigen

       Oh je, das ist nur ein konzeptioneller Ansatz, dem ich selbst keinerlei Code nachlegen kann. Aber die genannten Vorschläge zu den Triggern sollten das auch abbilden können, wenn sie den entsprechenden Tabellen hinterlegt werden.

    • Ninox-Professional
    • planoxpro
    • vor 4 Monaten
    • Gemeldet - anzeigen

    Hallo, ich sehe hier eher ein sachliches Problem. Denn das Ansinnen, Datensätze nach Ablauf einer Aufbewahrungsfrist automatisch zu löschen, setzt ja erst mal ein zuverlässiges Bezugsdatum voraus. Die internen Werte 'Erstellt am' und 'Zuletzt geändert' sind dazu wohl eher ungeeignet, da sie nichts über den tatsächlichen Beginn der Frist aussagen. Der Kunde bspw., den man vor X Jahren in Ninox angelegt hat, kann ja immer noch ein aktiver sein. Man müsste also zusätzliche Kriterien prüfen, z. B. die letzte Aktivität, wenn das Datenmodell es hergibt.

    Praktikabel wäre eine Automatisierung deshalb m. E. überhaupt nur bei Daten, die mit einem Gültigkeitsdatum versehen sind, das als Beginn der Aufbewahrungsfrist betrachtet werden kann. Also zum Beispiel bei Belegen wie Rechnungen, die ja immer ein Rechnungsdatum haben. Aber selbst die würde ich nicht zum Stichtag nach Ablauf der Frist automatisch löschen.

    Die meisten Ninox-User betrifft es wohl sowieso erst in einigen Jahren ...😉 Aber wenn man vielleicht zehn und mehr Jahre alte Rechnungen importiert hat, dann könnte man, z. B. im Dashboard oder auf einer speziellen Admin-Seite, eine Ansicht der betreffenden Tabelle erstellen und diese entsprechend filtern. So ließen sich die potenziell zu löschenden Daten noch mal überprüfen und dann ggf. mit einem Button löschen (oder eine Löschmarkierung setzen).

    Da wir hier ja wohl über Zeiträume von mindestens mehreren Jahren sprechen, könnte man das m. E. durchaus von Zeit zu Zeit manuell mit einer Ansicht überprüfen und zum Löschen ggf. auf den Button klicken. Der Code zum Selektieren der Daten könnte bspw. so aussehen (am Beispiel der Rechnungen mit einer Aufbewahrungsfrist von 10 Jahren):

    let myYears := 10;
    let myExDate := date(year(today()) - myYears, month(today()), day(today()));
    select Rechnungen where Rechnungsdatum < myExDate
    
    • Bernhard_Schulze.1
    • vor 4 Monaten
    • Gemeldet - anzeigen

    Hallo! Ich habe bei den in Frage kommenden Tabellen bzw. Datensätzen (ohne Trigger-Script!) eine Auswahl "Löschfrist beachten" hinterlegt. In Kombination mit einem Erstellungs-Datum und einem Feld "Lebensdauer" kann ich z.B. zum Jahreswechsel manuell prüfen, welche Datensätze fällig wären. Ist zwar mit etwas Arbeit verbunden, aber der Jahreswechsel bietet sich dazu einfach an. Und es geht ja letztendlich nur um die personenbezogenen Daten.

    Langfristige Geschäftsbeziehungen, z.B. Kunden, die man schon seit über 10 Jahre bedient, oder Lieferanten, die man immer wieder in Anspruch nimmt, kann man dann davon ausnehmen.

    Z.B. alle Daten mit der Auswahl "Löschfrist beachten" und die älter als die eingestellte Lebensdauer sind in einer Auswahltabelle darstellen und einzeln oder pauschal zu löschen. Eventuell noch ein Feld "aktiv/inaktiv" - da sollten der Fantasie keine Grenzen gesetzt sein ;-)

Content aside

  • vor 4 MonatenZuletzt aktiv
  • 14Antworten
  • 109Ansichten
  • 5 Folge bereits