Ich habe einen anderen Ansatz für die nächste Situation gewählt. Es gibt eine Excel-Datenbank, zum Beispiel DataBase.xls und eine Excel-Vorlage Programs.xlt, die beide nicht freigegeben sind und sich in einem Verzeichnis eines Netzwerkservers / einer Netzwerkfestplatte befinden. Jeder Benutzer verwendet eine Kopie der Programmvorlage, also Programs1.xls für den ersten Benutzer und Programsn.xls für den n-ten Benutzer. Die Regeln sind:. Viele gleichzeitige Lesevorgänge sind gleichzeitig möglich. Ohne gleichzeitige Lesevorgänge ist nur ein Schreibvorgang möglich (um Lesevorgänge von "halb" aktualisierten Datensätzen zu vermeiden). Die Lese- und Schreibaktionen sind standardisiert und so kurz wie möglich
Die von mir gewählte Lösung ist ein Schiedsrichter / Schiedsrichter / Schiedsrichter / Schiedsrichter - ich nannte sie Referee.xls. Es handelt sich um eine gemeinsam genutzte Excel-Datei, die sich im selben Verzeichnis befindet und sehr klein ist: Sie besteht nur aus zwei Feldern - einem Lesezähler nRead und einem Schreibzähler nWrite. Jeder Benutzer, der auf die Datenbank zugreifen möchte, sendet dem Schiedsrichter eine Lese- oder Schreibanforderung.
Bei einer Leseanforderung prüft / wartet der Schiedsrichter, bis (mehr) keine Schreibaktionen mehr stattfinden (nWrite = 0), und gewährt dann dem Benutzer einen Lesevorgang, indem er den Zähler nRead um 1 erhöht. Nach Abschluss einer Leseaktion wird der nRead counter wird um 1 verringert.
Bei einer Schreibanforderung prüft / wartet der Schiedsrichter, bis keine Schreibaktionen mehr aktiv sind (nWrite = 0), danach prüft / wartet der Schiedsrichter, bis alle Leseaktionen ausgeführt sind (nRead = 0), und erteilt dann die Schreibanforderung und setze den nWrite-Zähler auf 1. Nachdem die Schreibaktion abgeschlossen ist, wird der Schreibzähler nWrite auf 0 gesetzt. Danach kann der Schiedsrichter neue Lese- und / oder Schreibanforderungen erteilen. Die Wartezeiten werden mit der Funktion "Sleep" in Lib "Kernel32" in Schritten von 1 Sekunde (1000 Millisekunden) implementiert. Die Schritte werden ebenfalls gezählt, und nach 6 Schritten / Sekunden ist eine Leseanforderung abgelaufen, und nach 10 Schritten / Sekunden ist eine Schreibanforderung abgelaufen. Dies hängt jedoch stark von vielen Faktoren ab und sollte in der Praxis gefunden werden.
Dies alles funktioniert sehr gut in einer Excel 2003, Windows XP-Umgebung mit maximal 14 gleichzeitigen Benutzern. Diese Benutzer sind Manager, die auf einer Fläche von 5000 Quadratkilometern an verschiedenen Orten arbeiten und das Tool täglich zum Aktualisieren von medizinischen Kompetenzinformationen, persönlichen Informationen, Terminen usw. für ihre Mitarbeiter verwenden (durchschnittlich 15 Mitarbeiter pro Manager).