Suchergebnisse

Suchergebnisse 1-15 von insgesamt 15.

  • Benutzer-Avatarbild

    Guten Morgen, meine Anwendungen sind meist GUI Anwendungen, wo Daten von einer Datenbank angezeigt und verändert werden können. Also nicht wirklich was kompliziertes. Nun wollte ich euch fragen, wie ihr so eine Anwendung im Netzwerk macht, wenn mehrere Benutzer auf die gleichen Datenbanken zugreifen. Speziell interessiert mich das "Record Locking". Ich muss ja im Netzwerk den geladenen Datensatz für die anderen Benutzer sperren, damit keine Datenkonflikte auftreten. D.h. ein Benutzer die Daten d…

  • Benutzer-Avatarbild

    Gleichzeitig wird versucht, einen Timestamp in den Datensatz zu schreiben - das ist der Lock. "Lock holen" darf nur gehen, wenn der vorherige Timestamp abgelaufen ist. Der Timesstamp ist ja eine momentane Zeit. Was meinst du mit "abgelaufen", wenn der Wert wieder auf Date.MinValue gesetzt wird? Der Timestamp sagt aus, wann der Lock verfällt - falls der User seine Eingabe nie beendet. Wie kann ich den Lock verfallen lassen ohne den Wert zu ändern? Denke ich da zu kompliziert oder vestehe ich dein…

  • Benutzer-Avatarbild

    Hallo, aber bei der MyISAM Engine (MySQL) gibt es kein RecordLocking. Da passiert alles auf Tabellen Ebene und das ist, meiner Meinung nach, nicht wirklich brauchbar.

  • Benutzer-Avatarbild

    OK, dache ich mir, dass dies so ähnlich funktioniert. Ja, ist eine plausible Möglichkeit anzuwenden. Danke.

  • Benutzer-Avatarbild

    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed Die Idee gefällt mir auch gut, aber was machst du, wenn ein Datensatz gesperrt wird (in die Tabelle eingetragen) und das Programm abstürzt. Also, das Freigeben nicht mehr stattfindet? Dann muss man manuell die Tabelle löschen?

  • Benutzer-Avatarbild

    Also ich danke euch für eure Anregungen. Ich habe mich jetzt für folgende Variante entschieden und werde dies einmal testen: 1) Es gibt in der Datenabse eine Tabelle: LockTable, wo ich mir alle gesperrten Datensätze (Tabelle, ID, PC-Name, Verfallszeit) merke 2) Soll ein Datensatz zur Bearbeitung geladen werden, wird vorher geprüft, ob dieser in der LockTable vorhanden ist (Tabelle, ID) und ob die Verfallszeit (Datum und Uhrzeit) noch aktuell ist Verfallszeit ist gmeint, dass ich die aktuelle Zei…

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „Und eine Lock-Methode, die ein IDisposable LockObjekt zurückgibt.“ Das weiß ich jetzt nicht, wie das geht? Statische Methoden haben ja kein Dispose oder ? Using setzt aber eine Dispose-Methode voraus oder mache ich eine eine Methode, welche Dispose heißt? Sorry, da habe ich zu wenig Kenntnisse... EDIT: Oder meinst du eine Klasse (LockObject) mit den Eigenschaften des Lock Zustandes, welcher ein IDisposable beinhaltet?

  • Benutzer-Avatarbild

    Also in der Anwendung gibt es zum Editieren von Datensätzen eigene Eingabefenster. D.h. ich würde, nur wenn ein Benutzer einen Datensatz ändern möchte vorher diese Prüfung machen. Beim Durchblättern/Suchen mache ich nix. Nach unseren Erhebungen, wird eher selten etwas geändert, weil wie oft ändert sich eine Kundenadresse? oder Daten von einem Fahrzeug? etc. Nachdem aber auf mehreren Standorten Zugriff auf die Daten besteht, müssen wir eine Prüfung implementieren. Bisher wurde dies im Programm er…

  • Benutzer-Avatarbild

    Zitat von MrTrebron: „Prüfst du auch vor dem Update eines Datensatzes ob noch ein Lock besteht? Use Case: User A lockt einen Datensatz zum Schreiben, Speicher nicht hat aber den Datensatz weiter geöffnet und das Lock läuft ab. User B öffnet den gleichen Datensatz und beantragt ein Lock, erhält dieses weil der Lock von User A abgelaufen ist. User B speichert seine Änderungen. User A fällt auf, dass er seine Änderungen noch nicht gespeichert hat und speichert.“ Ja, das stimmt. Ich prüfen, ob ich n…

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „Ich meine ersteres: Die LockObject-Klasse soll IDisposable implementieren. Die DataRow.Lock-Extension-Methode soll ein LockObject erstellen, welches IDisposable ist. Das LockObject enthält ausserdem Informationen über den Lock-Hole-Versuch, v.a., obs geklappt hat. Die Dispose-Methode des LockObject soll dann in der DB den Lock wieder freigeben.“ Ist jetzt keine Extension aber ist das so gemeint? Prinzipiell gemeint. VB.NET-Quellcode (30 Zeilen)

  • Benutzer-Avatarbild

    Ich habe außer dem obigen Code noch nichts. Bin gerade in der Planungsphase. Wenn diese abgeschlossen ist, kann ich gerne den Code posten.

  • Benutzer-Avatarbild

    Anbei mein Basiscode für das Sperren von Datensätzen in einer MySQL Umgebung. @ErfinderDesRades, ich habe die Klasse nicht wirklich in eine Extension gepackt, weil diese in unserer Anwendung nicht einsetzbar ist. Dennoch habe ich versucht meine Shared Klasse in einer Extension zu benutzen. Vielleicht würde auch das ausreichen. 1) Die Basis der Shared Klasse ist eine LockInfo Klasse, wo die Locking Informationen ausgelesen werden können bzw. gespeichert werden. VB.NET-Quellcode (35 Zeilen) 2) Das…

  • Benutzer-Avatarbild

    Guten Morgen! Wenn jemand obigen Code verwendet bzw. testet, wäre ich für Rückmeldungen dankbar. Ich würde gerne eventuelle Verbesserungen im Code berücksichtigen. Ich danke euch und einen schönen Arbeitstag.

  • Benutzer-Avatarbild

    Ich wünsche mir eigentlich nur, wenn jemand die Klassen in einem Projekt verwendet, mir eine Rückmeldung zu geben. Das Zip ist kein eingenständiges Programm (Solution). Ist auch nicht so gedacht. Es sind die Klassen als einzelne Dateien und diese sollten jederzeit in ein bestehendes Projekt importiert werden können.

  • Benutzer-Avatarbild

    Danke für die Rückmeldungen. Also meine Locking Klasse ist ein statische Klasse. Beschreibung siehe Post# 31 von mir. Ja, wir verwenden die Klasse und sie funktioniert für unsere Bedürfnisse. Allerdings werden in unserer Anwendung nicht oft Datensätze geändert. Wir unterscheiden in unserer Anwendung zwischen Datensätze ansehen, Datensätze editieren oder Datensätze hinzufügen. Dafür gibt es eigene Formulare. Gesperrt wird nur bei Datensätze editieren. Unsere Anwender sitzen in Europa verteilt und…