Dataset - SQL - Multiuser - Update

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Dataset - SQL - Multiuser - Update

    Hallo,

    ich habe eine grundsätzliche Frage, der Handhabung. Wenn man mit Applikation mit Datasets arbeitet die auf SQL-Server zugreifen, muss man dann vor jedem Datensatz einfügen ect. die Fill Option aufrufen weil sonst im Multiuser-Betrieb z.B. die Autoincrement-Funktion nicht klappt, oder gibt es da bessere Lösungen?
    da gibts keine Patentlösungen.

    Eine Möglichkeit ist, dass jeder User nur seine eigenen Daten zu sehen bekommt.

    Eine annere ist, abgerufene Datensätze für annere User zu sperren.

    Eine annere ist, dass einfach drüber-gespeichert wird - egal, ob ein annerer User denselben Datensatz ebenfalls in der Zwischenzeit bearbeitet hat ("last in wins").

    Eine annere ist, in dem Fall stattdessen eine Exception zu werfen.


    Jdfs. erst ein Fill auszuführen, bevor man ein Update macht, stelle ich mir kompliziert vor, denn ein Fill überschreibt ja die Daten, die man eiglich updaten wollte. Oder man muß iwas super-listiges coden (was bei den anneren Möglichkeiten nicht so schwierig ist)
    ich glaub so ganz hast du nicht verstanden; Nehmen wir mal an es gibt eine Kunden-Form, darin enthalten ein Grid-View, daneben die Einzeldaten des aktiven Datensatzes.

    Das ganze im Multiuser-Zugirff, die Kunden-Nummer wird per autoincrement generiert.

    Nun sind 2 User in der Form, der 1. fügt einen neuen Kunden hinzu ---> funzt; der zweite fügt einen Kunden hinzu ---> funzt nicht, weil er die gleich Nummer bekommt wie der erste und die Kd.-Nr. unique ist....dh. ich muß vor jeder Neuanlage zuerst ein neues Fill machen, richtig?

    Deshalb die grundsätzliche Frage wie ihr das macht im Multiuser-Betrieb.

    Checkpoint schrieb:

    Nun sind 2 User in der Form, der 1. fügt einen neuen Kunden hinzu ---> funzt; der zweite fügt einen Kunden hinzu ---> funzt nicht, weil er die gleich Nummer bekommt wie der erste und die Kd.-Nr. unique ist....dh. ich muß vor jeder Neuanlage zuerst ein neues Fill machen, richtig?

    Zufügen von Datensätzen ist kein Problem. Egal, wieviele Clients an einer DB hängen, und gleichzeitig Kunden zufügen: Jeder neue Kunde bekommt von der DB eine individuelle ID zugeteilt.

    Scheinbar gehst du von clientseitiger Primkey-Generierung aus - das macht man aber nur mit besonderen Schlüssel-Typen (Guid), mit denen dieses Problem auch nicht auftritt.
    Ansonsten generiert jeder Client zunächst eine lokale, provisorische ID, und die können ja ruhig auf verschiedenen Clients identisch sein - ist ja nur lokal und provisorisch.

    Beim Abspeichern dann generiert die DB die letztlich gültige ID, und die muß auch wieder an den abspeichernden Client zurückgeschickt werden, dass er seine provisorische ID durch die endgültige austauscht.

    gugge Autowerte inserten.

    Ist umständlich, datenbank-abhängig, und MS liefert eine leidlich vernünftige Lösung nur für SqlServer an - also ich verwende meine DBExtensions - da ist u.a. dieses Thema ein für allemal abgegessen.