Datensatz für Eingabe sperren
Hallo zusammen
Gibt es eine Möglichkeit die verhindert, dass während der Eingabe in einem Datensatz jemand anderes auch Zugriff auf diesen Datensatz hat und dadurch parallel Änderungen vornehmen kann. Ich würde das gerne unterbinden. Schön wäre, wenn der User dem der Zugriff verwehrt wird bzw. nur die Leseberechtigung zur Verfügung steht, eine Begründung erhält.
Wie könnte eine solche Umsetzung aussehen und ist dies auch zu realisieren?
Freuen mich auf Eure Ideen und Antworten.
15 Antworten
-
So müsste das funktionieren:
- Du legst einen Tab (="Registerkarte") an, unter dem die Daten stehen, die nach dem Öffnen für andere gesperrt werden sollen.
- Du braucht ein j/n Feld, etwa "Eintrag geöffnet"
- Du brauchst ein Feld vom typ "Nutzer"
- In den Tab, Trigger " vor Öffnen" schreibst Du:
- 'Eintrag geöffnet' := 1;
Anwender := user()
- 'Eintrag geöffnet' := 1;
- In den Tab, Trigger "nach Ausblenden" schreibst Du:
- 'Eintrag geöffnet' := 0;
Anwender := 0
- 'Eintrag geöffnet' := 0;
- Die beiden Felder kannst Du nun auswerten. Z.B.
- Am Datensatz selbst, "Schreibbar wenn"
- Anwender=user()
- Nun kann der Anwender, der den Datensatz gerade gesperrt hat, ihn verändern (auch in mehreren Fenstern), alle anderen können das nicht
- Du kannst die Felder auswerten und eine Meldung "Datensatz zur Zeit in Bearbeitung durch {Anwender}" ausgeben
Probier mal...
-
okay, klar.
An Stelle 4.a muss Du per if/then überprüfen, ob der Satz schon für einen user gesperrt wurde, oder ob er noch offen ist. Sonst wird der Status natürlich einfach überschrieben.
if 'Eintrag geöffnet' !=1 then 'Eintrag geöffnet' := 1; 'Derzeit geöffnet durch' := user() end
-
Auf dem "Ausblenden" Trigger muss eine ähnliche Prüfung stehen:
if 'Derzeit geöffnet durch' = user() then 'Eintrag geöffnet' := 0; 'Derzeit geöffnet durch' := 0 end
-
Leider nein... NINOX hat keine Funktion, um Prozesse zu bestimmten Uhrzeiten abzuarbeiten. Du musst immer ein Ereignis produzieren, das dann bspw. Beim Starten der Datenbank, öffnen der Tabelle etc. ausgeführt wird. So könntest Du zum Bsp beim Öffnen der Datenbank ein Script ausführen, das die betroffenen Tabellen durchsucht und die Sperren wieder aufhebt.
Ich habe in meinen Ansichten immer einen Button "OK", auf dem ein Script liegt, das den Datensatz schließt und alle Aktionen ausführt, die dort vereinfacht liegen können. Nun muss man nur den User noch dazu nötigen, den auch zu drücken ;-)
Natürlich kann man durch komplexere Architekturen hier noch was erreichen... aber das sprengt hier ein bisschen den Rahmen
-
Stephan Stucki
Schau mal in diesen Artikel:
https://forum.ninox.de/t/35ha5fy/lesbar-wenn-schreibbar-wenn-bug-or-feature
Da könnte (das untere Ende des Artikels) noch hilfreich sein.
Content aside
- Status Answered
-
2
„Gefällt mir“ Klicks
- vor 1 JahrZuletzt aktiv
- 15Antworten
- 187Ansichten
-
2
Folge bereits