Datum + Frist
Hallo ich habe ein Austrisdatum z.b 31.12.2020 da soll die frist beginnen von 10 Jahre also das frist datum ist dann 31.12.2030 wie ist da die Formel und ist es möglich das er nach der Frist den Datensatz von selber löscht.
Danke für die Hilfe
11 Antworten
-
Hallo Ralf,
Auf Datenbankebene im Reiter "Optionen" gibt es ein Feld "Nach dem Öffnen der Datenbank folgendes Skript ausführen".
Dort würde ich folgende Formel schreiben:
let myChoice:=select DEINETABELLE where date(year(Austritsdatum)+10,moth(Austritsdatum),day(Austritsdatum))<=today();
if dialog("Frist abgelaufen","Folgende Datensätze sind mehr als 10 Jahre alt:"join(myChoice.(Name+ "Austritsdatum),"
"),["Engültig löschen","Später"])="Engültig löschen" then delete myChoice end -
Danke Leo für deine Hilfe aber bei mir sieht es so aus
er findet die DB nicht
-
Hallo Ralf,
es sollte auch so sein. Merke dir oder schreibe die Tabellennamen auf und schreibe meine Formel darein
Leo
-
Danke Leo habe ich auch hinbekommen nun habe ich aber einen Fehler in der Zeile 3
-
Hallo Ralf, da hatten sich kleine Tippfehler eingeschlichen. Versuch's mal so:
let myChoice := (select Mitgliederdatei where date(year(Austrittsdatum) + 10, month(Austrittsdatum), day(Austrittsdatum))<=today());
if dialog("Frist abgelaufen", "Folgende Datensätze sind mehr als 10 Jahre alt:
" + join(myChoice.(Name + ", " + Austrittsdatum), "
"), ["Endgültig löschen", "Später"]) = "Endgültig löschen" then delete myChoice end
-
Danke Leo jetzte geht es, eine Frage habe ich noch kann mann es so einstellen das er das Fenster nur dann brigt wenn jemand über 10 Jahre ist.
-
@Der Copytexter,
Danke für die Korrektur. Ohne Ninox die Formel zu schreiben geht bei mir immer in die Hose.
@Ralf
Wenn du ei today() das Gleichzeichen weg machst, sollte dann gehen."<=today());" --->>. "< today());"
Leo
-
Hallo Leo,
der Code funktioniert zwar super, aber der Dialog wird bei mir trotz "< today());" immer angezeigt sobald ich die DB öffne, auch, wenn kein Datensatz älter als 10 Jahre ist. Was könnte die Ursache/Lösung sein?
Markus
-
Hallo Markus, ich bin zwar nicht Leo, kann dir aber trotzdem einen Tipp geben. Man müsste eine Abfrage einbauen, ob überhaupt Datensätze gefunden wurden, die der Bedingung "älter als 10 Jahre" entsprechen:
let myChoice := (select Mitgliederdatei where date(year(Austrittsdatum) + 10, month(Austrittsdatum), day(Austrittsdatum)) < today());
if cnt(myChoice) > 0 then
if dialog("Frist abgelaufen", "Folgende Datensätze sind mehr als 10 Jahre alt:
" + join(myChoice.(Name + ", " + Austrittsdatum), "
"), ["Endgültig löschen", "Später"]) = "Endgültig löschen" then
delete myChoice
end
end
-
Ich glaube, ich habe es selbst gelöst:
let myChoice := (select Kunden where date(year('letzte Änderung') + 10, month('letzte Änderung'), day('letzte Änderung')) <= today());
if myChoice != 0 then
if dialog("Frist abgelaufen", "Folgende Datensätze sind mehr als 10 Jahre alt:
" + join(myChoice.(Name + ", " + 'letzte Änderung'), "
"), ["Endgültig löschen", "Später"]) = "Endgültig löschen" then
delete myChoice
end
endSo klappts bei mir
-
Hallo planox, jetzt sehe ich es gerade, wir hatten wohl die gleiche Idee :) Danke!
Content aside
- vor 3 JahrenZuletzt aktiv
- 11Antworten
- 859Ansichten