Löschbarkeit von Datensätzen steuern
Hallo, ich möchte in einem Formular, in dem ich eine verknüpfte Tabelle als Steuerelement eingebettet habe, einzelne Datensätze aus der verknüpften Tabelle löschen. Das funktioniert auch ganz wunderbar über das Kontextmenü des Steuerelements.
Bei der Tabelle handelt es sich um erbrachte Leistungen, die anschließend mit Rechnungspositionen verknüpft werden. Zum Schluss wird die Rechnung, die die Rechnungspositionen enthält, abgeschlossen.
Ab diesem Zeitpunkt dürfen die erbrachten Leistungen nicht mehr gelöscht werden, weil ansonsten die Rechnungspositionen kein Gegenstück mehr haben und damit inkonsistent wären.
Ich suche jetzt eine Möglichkeit, wie ich einzelne Datensätze einer Tabelle gegen Löschen schützen kann. Ich kann zwar steuern, ob in einen Datensatz geschrieben werden kann (Feld "schreibbar wenn" in den Tabelleneigenschaften), aber ich habe keine Möglichkeit gefunden, ein Löschen formelbasiert zu verhindern.
Gibt es da eine Möglichkeit? - Danke!
9 Antworten
-
Hi,
das Thema haben wir auf der Liste.
Wir empfehlen bei Rechnungen Löschen auf Tabellen Ebene zu deaktivieren.
VG, Alex
-
Hallo,
gibt es bei diesem Thema einen Fortschritt.?
Ich finde diese Fähigkeitslücke erheblich und sie stellt mich gerade vor eine unlösbare Herausforderung. De facto gibt es unzählige Situationen, wo auch ein Editor Datensätze löschen können muss, jedoch nur solange bis bestimmte Bedingungen erfüllt sind und es dann nicht mehr zulässig sein darf.
VG
-
Hallo Ralf,
wie bereits angeführt, kann man das Löschen auf Tabellen-Ebene unterbinden (d.h. nur dem Admin erlauben). Das Löschen für den Anwender kann man mittels einer Befehlsschaltfläche ermöglichen, die Bedingungen hierfür kann man über die Sichtbarkeit des Buttons oder über das hinterlegte Skript selbst abfragen.
Insofern sehe ich hier keine "Fähigkeitslücke", allenfalls ein fehlendes Komfort-Feature... :-)
lg, Torsten
-
Guten Morgen Torsten,
das ist leider nicht korrekt.
Wenn ich auf Tabellenebene das Löschen bspw. für den Editor verbiete und dann einen Button mit einem konditionierten Lösch-Skript einbaue, wird dieses Skript beim Editor gar nicht ausgeführt!
Sprich, der Editor kann 1000x auf die Befehlsschaltfläche "Löschen" klicken, der Datensatz wird nicht gelöscht.
Insofern besteht sehrwohl eine Fähigkeitslücke, denn ich habe lediglich die Wahl zwischen 2 Möglichkeiten:
(1) Der Editor kann den Datensatz niemals löschen, Was ziemlich unzweckmäßig ist, wenn man bspw. mal einen Datensatz fälschlicherweise erzeugt hat.
(2) Der Editor hat Löschberechtigung auf Tabellenebene. Damit kann er Datensatz auch löschen, die nicht mehr löschbar sein sollten, bspw. abgeschlossene Rechnungen.
VG
-
Nachtrag: so ist es zumindest in der Cloud-Version
-
Hallo Ralf,
tatsächlich - im Browser/Cloud funktioniert mein Workflow tatsächlich nicht - hatte ich nicht auf dem Schirm, nutze die App mit der Ninox Cloud und dort funktioniert es wunderbar.
lg, Torsten
-
So als Workaround:
1. ein Ja/Nein Feld namens "deleted" hinzufügen
2. auf Tabellenebe bei lesbar wenn folgendes Skript:
---
not deleted
---
3. bei dem Button "Datensatz Löschen" folgendes Skript:
---
deleted := true;
closeRecord();
openTable("DEIN TABELLENNAME")
---
4. Bei Datenbankoptionen ins Feld 'Nach dem Öffnen folgendes Skript....." :
---
delete select 'DEIN TABELLENNAME' where delete
---
So kann der Editor die Datensätze als Gelöscht markieren und sieht diese nicht mehr. Wenn der Admin dann die Datenbank öffnet, werden die Datensätze entgültig glöscht. Allerdings muss man dann alle Skripte prüfen, welche diese Tabelle einbeziehen und dort wie Bedingung [not delete] hinzufügen.
Leo
-
oh, Schreibfehler:
delete select 'DEIN TABELLENNAME' where deleted
und
[not deleted]
-
Hey Leo,
vielen Dank für die Lösung. Ohne die wäre ich ganz schön ausgeschmissen. Schade, dass seitens Ninoxdb da gar nix zu passieren scheint.
Content aside
- vor 5 JahrenZuletzt aktiv
- 9Antworten
- 2365Ansichten