Wenn jeder Anwender jeden Datensatz bearbeiten kann, dann lass sie das doch einfach machen. Beim Schreiben der Änderung in die
DB kannst du ja mit einer WHERE-Klausel, die alle (relevanten) vorigen Werte enthält, sicherstellen, dass der Datensatz noch unverändert ist. Falls dem nicht so ist, ändert das UPDATE nichts und du kannst das ja dem Anwender mitteilen.
Bei FireDAC kann man das weitegehend automatisieren in dem in der
Query bei UpdateOptions.UpdateMode das upWhereAll oder upWhereChanged einstellt.
Das eigentliche Problem ist etwas anders. Ich muss den Datensatz schon für die anderen Anwender sperren, wenn er durch einen Anwender ausgewählt wird - also noch gar nicht verändert wurde. Es könnte sich ja theoretisch um eine Anrufliste handeln, in der nur das Ergebnis vermerkt werden soll. Wenn ein Anwender einen Datensatz auswählt, sollte er daher schon für die anderen gesperrt sein, damit nicht zwei Anwender gleichzeitig anrufen, bevor sie dann versuchen das Ergebnis zu dokumentieren.
Da man ja auch einfach nur so durch eine solche Liste scrollen kann, um sich vielleicht die besten Einträge rauszusuchen, wollte ich die Auswahl des Datensatzes noch nicht in die
DB schreiben sondern die ID des Datensatzes nur auf die Sperrliste nehmen und schnellstmöglich an alle anderen Anwender verteilen.