PDA

View Full Version : Satzsperre



dino
29-11-12, 13:32
User A hat Datensatz zum Ändern in der Eingabemaske. User B möchte Datei auch mit diesen Satz drucken: Programmabbruch. Wie kann ich trotzdem drucken? Mit Query-Druck klappts ja auch!

Fuerchau
29-11-12, 13:34
Beim drucken halt ohne Satzsperre lesen.
a) Datei als IF (Inputfile) definieren
b) chain(n), read(n), reade(n)

dino
29-11-12, 14:30
OK - Danke für den Tipp.

Chris.jan
30-11-12, 10:28
Es gibt da eine alte Methode, die ich immer gerne benutzt habe.

Und zwar kann man eine zusätzliche logische Datei (mit eindeutigem Schlüssel) benutzen. Und zwar die ganze Subfile-Geschichte mit readonly abarbeiten. Dagegen ein Update über den eindeutigen Schlüssel mit das LF abwickeln.
Den kompletten Record zu Beginn lesen und merken. Dann, wennd er user das Update bestätigt folgendes machen:
- den Satz aus dem LF mit Lock lesen
- Inhalt aktuell mit gemerkter Variante vergleichen
=> wenn nicht inzwischen verändert, dann Update schreiben
=> wenn doch verändert, dann den User informieren, daß der Satz inzwischen geändert wurde und ggf. die veränderten Felder auffrischen und als verändert markieren; Update canceln
=> wenn das was der User updaten/schreiben will mit dem aktuellen Inhalt schon übereinstimmt dann erst gar nix updaten.

Eben speziell für Multiuser geeignet!
Das ganze kommt aus der Erfahrung heraus, daß oft manche User vom ersten lesen des Records bis hin zum Update doch schon mal etwas länger brauchen und gerne mal ne Mittagspause einlegen.
Und das dann auch noch mehrere Leute gleichzeitig.

Gleichzeitig wird die Zeit für den Lock auf ein absolutes Minimum reduziert. Man kann auch noch die ObjectLock-Nachricht abfangen und/oder die Änderungsdaten Einblenden. Da geht so einiges.