AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Locking deaktivieren
Thema durchsuchen
Ansicht
Themen-Optionen

Locking deaktivieren

Ein Thema von hirnstroem · begonnen am 7. Feb 2007 · letzter Beitrag vom 21. Feb 2007
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Locking deaktivieren

  Alt 7. Feb 2007, 09:21
Datenbank: Access • Version: kA • Zugriff über: ADO
'loha Folks,

in einem Projekt sind ein Paar DataSets (TADODataSet), welche über eine Connection (TADOConnection) auf eine Access Datenbank zugreifen. Nun würde ich gerne das Locking deaktivieren, weiss aber nicht wie.

Die verschiedenen möglichen LockTypen wären ltUnspecified, ltReadOnly, ltPessimistic, ltOptimistic, ltBatchOptimistic, aber von diesen macht eigentlich keiner was ich will. ltUnspecified schien mir noch am vernünftigsten, da hier ja nicht auch das Locking geachtet wird. Allerdings kann ich mit ltUnspecified die Datensätze gar nicht mehr editieren, was mich daraus schliessen lässt, dass die Access Datenbank abriegelt und ich dort den LockType angeben muss.

Letztdenendes soll kein Locking stattfinden. Wenn mehrere Benutzer denselben Datensatz gleichzeitig bearbeiten, soll der zuletzt gespeicherte Datensatz massgebend sein...der letzte gewinnt.

Wie bekomme ich das hin?

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Locking deaktivieren

  Alt 7. Feb 2007, 09:48
Zitat von hirnstroem:
Wenn mehrere Benutzer denselben Datensatz gleichzeitig bearbeiten, soll der zuletzt gespeicherte Datensatz massgebend sein...der letzte gewinnt.
Dann ist ltOptimistic genau das Richtige. (das ist auch der Defaultwert der Komponenten)
Otimistic bedeutet die Änderungen im Dataset werden einfach zurückgeschieben in der Hoffnung, dass kein Anderer eine Veränderung vorgenommen hat.
Performanceverbessernd ist, wenn alle Abfragen, die nicht editiert werden auf ltReadOnly gesetzt werden.
Andreas
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Locking deaktivieren

  Alt 7. Feb 2007, 10:22
Heisst optimistisch nicht lediglich, dass beim Speichern eines Datensatzes überprüft wird, ob der ursprüngliche Datensatz noch dieselben Daten enthält? Wenn ja, kann gespeichert werden, wenn nein, kann nicht gespeichert werden.

Optimistisches Locking bewirkt bei mir jedenfalls nichts anderes.
inde deus abest
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Locking deaktivieren

  Alt 7. Feb 2007, 11:13
Nachfolgend ein kurzer Auszug der Access OH zum Thema Sperrungen:

Zitat:
Informationen zur Auswahl einer Strategie zum Sperren von Datensätzen in einer Access-Datenbank unter den Bedingungen einer Mehrbenutzerumgebung
Wenn Sie einen Datensatz bearbeiten, kann Microsoft Access andere Benutzer automatisch daran hindern, den Datensatz zu ändern, bevor Sie Ihre Bearbeitung abgeschlossen haben.

Wenn ein Benutzer exklusiven Zugriff auf einen Datensatz erhält, wird dies Sperrung genannt. Man unterscheidet beim Sperren drei Strategien:

Keine Sperrungen: Microsoft Access sperrt den Datensatz, den Sie gerade bearbeiten, nicht. Wenn Sie versuchen, Änderungen an einem Datensatz, den ein anderer Benutzer ebenfalls geändert hat, zu speichern, zeigt Microsoft Access eine Meldung mit den folgenden Optionen an: Überschreiben der Änderungen des anderen Benutzers, Kopieren Ihrer Version des Datensatzes in die Zwischenablage oder Verwerfen Ihrer Änderungen. Diese Strategie stellt zwar sicher, dass Datensätze immer bearbeitet werden können, es können jedoch Konflikte bei der Bearbeitung auftreten.


Bearbeitete Datensätze: Microsoft Access sperrt den Datensatz, den Sie gerade bearbeiten, so dass kein anderer Benutzer ihn ändern kann. Unter Umständen werden auch andere Datensätze gesperrt, die auf dem Datenträger in unmittelbarer Nähe gespeichert sind. Falls ein anderer Benutzer versucht, einen von Ihnen gesperrten Datensatz zu bearbeiten, zeigt Microsoft Access im Datenblatt des anderen Benutzers den Indikator "Gesperrter Datensatz" an. Diese Strategie stellt sicher, dass Sie begonnene Änderungen immer zu Ende führen können. Sie ist geeignet, wenn es nicht häufig zu Konflikten bei der Bearbeitung kommt.


Alle Datensätze: Microsoft Access sperrt alle Datensätze im Formular oder Datenblatt (und in den zugrunde liegenden Tabellen), die Sie bis zum Schließen des Formulars oder Datenblattes bearbeiten, so dass sie von niemand anderem bearbeitet oder gesperrt werden können. Diese Strategie ist sehr einschränkend. Sie sollten sie nur dann wählen, wenn Sie wissen, dass Sie jeweils der/die einzige sind, der/die die Datensätze bearbeiten muss.
Um Informationen zum Festlegen einer dieser Optionen zu erhalten, klicken Sie auf .

Anmerkung Wenn Sie Daten in einer verknüpften SQL-Datenbanktabelle unter Verwendung von ODBC bearbeiten, sperrt Microsoft Access die Datensätze nicht. Stattdessen steuern die Regeln der SQL-Datenbank die Sperrung. In diesem Fall verhält sich Microsoft Access so, als ob die Einstellung Keine Sperrungen gewählt wurde, unabhängig davon, welche Einstellung Sie für Ihre Datenbank gewählt haben.
Daraus schliesse ich, dass Access nicht in der Lage ist, Sperrungen komplett zu deaktivieren, denn wenn die Option "Keine Sperrungen" aktiviert ist, wird optimistisch gesperrt, der schnellste Gewinnt beim Speichern also.

Nun habe ich Access beigebracht, das Sperren ADO zu überlassen. ADO bietet ja aber nur die im ersten Beitrag erwähnten LockTypen, von welchen keiner mein Bedürfnis abzudecken scheint.

Kann es überhaupt so enirichtet werden, dass der letzte der speichert, egal was sich am Datensatz ändert, auch wirklich speichern kann?!
inde deus abest
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Locking deaktivieren

  Alt 21. Feb 2007, 10:14
*nochmal nachhak*

Ist jemandem bekannt, wie man in einem Projekt, in welchem mit ADO gearbeitet und auf eine Access Datenbank zugegriffen wird, das Sperren von Datensätzen vollständig deaktiviert?!

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz