{"id":55000463,"date":"2007-06-01T00:00:00","date_gmt":"2021-02-11T21:15:45","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=463"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Sperrmechanismen_in_AccessFormularen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/","title":{"rendered":"Sperrmechanismen in Access-Formularen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im Mehrbenutzerbetrieb kommt es mitunter zur gleichzeitigen Bearbeitung eines Datensatzes durch mehrere Mitarbeiter. In diesem Fall brauchen Sie eine sinnvolle Strategie, um entweder das gleichzeitige &auml;ndern zu verhindern oder aber den Benutzern eine Hilfe zur L&ouml;sung von Schreibkonflikten an die Hand zu geben. Beides liefert der vorliegende Beitrag.<\/b><\/p>\n<\/p><\/div>\n<div class=\"story\">\n<p>Wenn man vom Mehrbenutzerzugriff in Zusammenhang mit Access spricht, handelt es sich entweder um eine in Front- und Backend aufgeteilte Datenbank, deren Bestandteile jeweils als .mdb-Datei daherkommen oder um ein Access-Frontend, das seine Daten von einer SQL-Server-Datenbank bezieht. Dieser Beitrag beschr&auml;nkt sich auf die zuerst genannte Variante und auf den Einsatz von Sperrmechanismen in Access-Formularen.<\/p>\n<p>In der in diesem Beitrag zugrunde gelegten Konfiguration liegt das Backend auf einem Server, der von allen Rechnern mit der Frontend-Datenbank gut erreicht werden kann. Die Bearbeitung der Daten erfolgt au&szlig;erdem ausschlie&szlig;lich &uuml;ber gebundene Formulare, andere Zugriffe wie etwa per DAO oder ADO werden nicht ber&uuml;cksichtigt.<\/p>\n<p><b>Sperren von Datens&auml;tzen<\/b><\/p>\n<p>Das Sperren von Datens&auml;tzen soll Inkonsistenzen von Daten verhindern, die durch das gleichzeitige &auml;ndern durch mehrere Bearbeiter entstehen. Ein Beispiel daf&uuml;r ist der Lagerbestand eines Artikels, der gleichzeitig in zwei Bestellungen aufgenommen wird: Beide Bestellvorg&auml;nge gehen dabei von dem gleichen Lagerbestand aus und speichern jeweils den neuen Lagerbestand, der aus der Differenz der alten Anzahl und der bestellten Anzahl besteht. Dabei speichert das System das Ergebnis des Bearbeiters, der zuletzt auf <b>OK<\/b> geklickt hat.<\/p>\n<p>Um dies zu verhindern, ben&ouml;tigt man Mechanismen, die fr&uuml;hestens beim &ouml;ffnen des Datensatzes durch mehr als einen Benutzer und sp&auml;testens beim Schlie&szlig;en durch den zweiten Benutzer Alarm schlagen.<\/p>\n<p><b>Sperrungsarten<\/b><\/p>\n<p>Access unterst&uuml;tzt mehrere Sperrungsarten, die sich im Umfang der gesperrten Daten und im Ausl&ouml;sezeitpunkt des Mechanismus unterscheiden.<\/p>\n<p>F&uuml;r den Umfang der gesperrten Daten beim Bearbeiten eines Datensatzes gibt es folgende Varianten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Keine Sperrung<\/li>\n<li class=\"aufz-hlung\">Alle Datens&auml;tze der aktuellen Tabelle<\/li>\n<li class=\"aufz-hlung\">Speicherseite, in der sich der aktuelle Datensatz befindet (Jet speichert Daten immer in Bl&ouml;cken &aacute; 4 Kilobyte; daher die Bezeichnung Speicherseite. Wie viele Datens&auml;tze vom Sperren einer Speicherseite betroffen sind, h&auml;ngt von deren Felddatentypen und dem Inhalt ab)<\/li>\n<li class=\"aufz-hlung\">Nur der aktuelle Datensatz<\/li>\n<\/ul>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Optimistisches Sperren<\/p>\n<p>Der Ausl&ouml;sezeitpunkt h&auml;ngt unmittelbar vom Umfang der Sperrung ab: Ohne Sperrung spricht man von optimistischer Sperrung, die wie folgt ausgel&ouml;st wird:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Benutzer A &ouml;ffnet einen Datensatz zum Bearbeiten.<\/li>\n<li class=\"aufz-hlung\">Benutzer B &ouml;ffnet den gleichen Datensatz (oder je nach Sperrungsumfang einen Datensatz derselben Speicherseite oder derselben Tabelle).<\/li>\n<li class=\"aufz-hlung\">Benutzer A speichert den ge&auml;nderten Datensatz.<\/li>\n<li class=\"aufz-hlung\">Benutzer B speichert den ge&auml;nderten Datensatz.<\/li>\n<\/ul>\n<p>Nun tritt ein Schreibkonflikt auf, weil Access feststellt, dass ein Datensatz gespeichert werden soll, dessen Anfangszustand nicht mit dem aktuellen Zustand &uuml;bereinstimmt.<\/p>\n<p>F&uuml;r den Benutzer, der die letzte &auml;nderung speichern m&ouml;chte, gibt es nun drei M&ouml;glichkeiten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Speichern seiner Version des Datensatzes,<\/li>\n<li class=\"aufz-hlung\">Kopieren seiner Version in die Zwischenablage, um diese nach Pr&uuml;fung zu verwenden oder zu verwerfen oder<\/li>\n<li class=\"aufz-hlung\">Verwerfen der eigenen &auml;nderungen.<\/li>\n<\/ul>\n<p><b>Pessimistisches Sperren<\/b><\/p>\n<p>Wenn eine Sperrung im Formular aktiv ist, braucht der erste Benutzer den Datensatz nur zu &ouml;ffnen, damit weitere Benutzer diesen Datensatz oder &#8211; falls Sperrung auf Seitenebene aktiviert ist &#8211; auch weitere Datens&auml;tze nicht mehr bearbeiten k&ouml;nnen.<\/p>\n<p>Interessant ist hier der Zeitpunkt, zu dem die anderen Benutzer erfahren, dass sich ein Datensatz in Bearbeitung befindet: Dieser h&auml;ngt n&auml;mlich vom Aktualisierungsintervall ab, das die Eigenschaft <b>Anzeigeaktualisierungsintervall <\/b>in den Access-Optionen festlegt. Sobald ein Benutzer den Wert eines Feldes ver&auml;ndert und damit die Feldeigenschaft auf &#8222;dirty&#8220; gesetzt hat, dauert es noch ein Weilchen, bis diese Information auf allen Rechnern, deren Access-Instanz ebenfalls diesen Datensatz anzeigt, erscheint. Je kleiner Sie dieses Intervall einstellen, desto mehr belastet dies nat&uuml;rlich das Netz.<\/p>\n<div class=\"abbildung\">\n<table style=\"border-collapse: collapse; border: black 1px solid\">\n<tbody>\n<tr>\n<td>\n<p class=\"kastentabelleheader\">Mit Sperrungen experimentieren<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Die in diesem Beitrag vorgestellten Techniken k&ouml;nnen Sie auch ohne die Aufteilung in Front- und Backend ausprobieren. Sie ben&ouml;tigen einfach nur eine Datenbank mit einer Beispieltabelle sowie zwei Formulare. Wenn Sie denselben Datensatz im ersten Formular und im zweiten Formular &auml;ndern und optimistisches Sperren aktiviert haben (also die Eigenschaft <b>Datens&auml;tze sperren <\/b>den Wert <b>Keine Sperrungen <\/b>aufweist), erhalten Sie denselben Effekt, als wenn Sie dies in zwei unabh&auml;ngigen Frontends ausf&uuml;hren, die auf das gleiche Backend zugreifen. Beachten Sie aber, dass bei dieser Konfiguration einige Verz&ouml;gerungen wegfallen, die beim Netzwerkbetrieb auftreten.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><b>Sperren im Formular<\/b><\/p>\n<p>In Formularen entscheidet grunds&auml;tzlich die Eigenschaft <b>Datens&auml;tze sperren <\/b>&uuml;ber den anzuwendenden Sperrmechanismus (siehe Bild 1). Dabei wirkt sich die Einstellung <b>Bearbeiteter Datensatz <\/b>in Abh&auml;ngigkeit von einer weiteren Eigenschaft unterschiedlich aus (ab Access 2000). Diese Eigenschaft legt man in den Access-Optionen unter <b>Weitere\/DB mit Sperrung auf Datensatzebene &ouml;ffnen <\/b>fest (siehe Bild 2). Nach dem Einstellen dieser Option m&uuml;ssen Sie die Anwendung zun&auml;chst erneut &ouml;ffnen, danach sperrt Access entweder nur noch den aktuell bearbeiteten Datensatz oder die Speicherseite, die diesen Datensatz enth&auml;lt (und damit gegebenenfalls auch andere Datens&auml;tze).<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/Sperrungen-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Einstellungen eines Formulars f&uuml;r die unterschiedlichen Arten der Datensatzsperrung<\/span><\/b><\/p>\n<\/p><\/div>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/Sperrungen-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 2: <br \/>Im Optionen-Dialog legen Sie fest, ob Sie Sperrungen auf Seiten- oder Datensatzebene verwenden m&ouml;chten.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><!--30percent--><\/p>\n<p>Unter Access 2007 finden Sie diese Einstellung &uuml;brigens in den Access-Optionen unter <b>Erweitert\/Erweitert\/Datenbanken mit Sperrung auf Datensatzebene &ouml;ffnen<\/b>.<\/p>\n<p><b>Benutzer f&uuml;hren<\/b><\/p>\n<p>Die Access-Meldung, die beim Auftreten eines Schreibkonflikts auftritt, verunsichert manche Benutzer unter Umst&auml;nden. Das ist aber kein Problem, denn Sie k&ouml;nnen den Schreibkonflikt genau wie Formularfehler abfangen und selbst behandeln.<\/p>\n<p>Dazu legen Sie eine Prozedur f&uuml;r das Ereignis <b>Bei Fehler <\/b>des Formulars an und pr&uuml;fen dort auf die Fehlernummer 7787. Dieser Fehler wird ausgel&ouml;st, wenn im aktuellen Formular ein ge&auml;nderter Datensatz gespeichert werden soll, der in der Zwischenzeit von einem anderen Benutzer ge&auml;ndert wurde.<\/p>\n<p>Nun brauchen Sie nur noch die Fehlermeldung aus Bild 3 durch eine eigene, geeignetere zu ersetzen. Aber m&uuml;ssen Sie das &uuml;berhaupt<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/Sperrungen-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Dieser Dialog erscheint standardm&auml;&szlig;ig, wenn Access gleichzeitige &auml;nderungen eines Datensatzes durch mehr als einen Benutzer feststellt.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Wohl nur, wenn Sie zus&auml;tzlichen Komfort liefern m&ouml;chten &#8211; beispielsweise, um die beiden Versionen des Datensatzes anzuzeigen und dem Benutzer somit eine bessere Entscheidungsgrundlage zu liefern.<\/p>\n<p>Wenn Sie einmal ein einfaches Formular zur Anzeige der Artikel der Nordwind-Datenbank zugrunde legen, k&ouml;nnte dies wie folgt aussehen:<\/p>\n<p>Zun&auml;chst fangen Sie den Schreibkonflikt in der <b>Form_Error<\/b>-Prozedur ab. Dann &ouml;ffnen Sie ein neues Formular, das die neue und die alte Version des Datensatzes nebeneinander anzeigt.<\/p>\n<p>Zus&auml;tzlich weisen Sie den Benutzer mit einem Meldungsfenster darauf hin, dass es einen Schreibkonflikt gibt und er sich f&uuml;r seinen eigenen oder den Datensatz des anderen Benutzers entscheiden kann.<\/p>\n<p>Je nach der Entscheidung des Benutzers behalten Sie entweder die vom zweiten Benutzer ge&auml;nderte Version bei, was einfach ist, oder Sie &uuml;bernehmen die &auml;nderungen des Benutzers des aktuellen Formulars &#8211; und das ist ein wenig komplizierter.<\/p>\n<p>Wie das genau funktioniert, zeigt ein Blick auf den Code aus Listing 1.<\/p>\n<div class=\"abbildung\">\n<table>\n<tbody>\n<tr>\n<td>\n<p class=\"kastentabelleheader\">Listing 1: Diese Routine wird beim gleichzeitigen &auml;ndern eines Datensatzes durch mehr als einen Benutzer ausgel&ouml;st und erm&ouml;glicht eine komfortable Konfliktl&ouml;sung.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<pre>Dim frmKopie As New Form_frmArtikel<\/pre>\n<pre>Private Sub Form_Error(DataErr As Integer, Response As Integer)<\/pre>\n<pre>     Dim db As DAO.Database<\/pre>\n<pre>     Dim rst As DAO.Recordset<\/pre>\n<pre>     Dim fld As DAO.Field<\/pre>\n<pre>     Select Case DataErr<\/pre>\n<pre>         Case 7787<\/pre>\n<pre>             With frmKopie<\/pre>\n<pre>                 .Visible = True<\/pre>\n<pre>                 .Caption = &quot;Ge&auml;nderte Version des Artikels&quot;<\/pre>\n<pre>                 .Recordset.FindFirst &quot;ArtikelID = &quot; &amp; Me.ArtikelID<\/pre>\n<pre>                 DoCmd.MoveSize Me.WindowLeft + Me.InsideWidth, Me.WindowTop<\/pre>\n<pre>                 If MsgBox(&quot;Der Datensatz wurde von einem anderen Benutzer ge&auml;ndert. &quot; _<br \/> &amp; &quot;M&ouml;chten Sie Ihre Version speichern und die andere Version verwerfen&quot;, _<br \/> vbOKCancel, &quot;Schreibkonflikt&quot;) = vbOK Then<\/pre>\n<pre>                     Set db = CurrentDb<\/pre>\n<pre>                     Set rst = db.OpenRecordset(&quot;SELECT * FROM tblArtikel WHERE ArtikelID = &quot; _<br \/> &amp; Me!ArtikelID, dbOpenDynaset)<\/pre>\n<pre>                     rst.Edit<\/pre>\n<pre>                     For Each fld In rst.Fields<\/pre>\n<pre>                         If fld.Name &lt;&gt; &quot;ArtikelID&quot; Then<\/pre>\n<pre>                             rst(fld.Name) = Me(fld.Name)<\/pre>\n<pre>                         End If<\/pre>\n<pre>                     Next fld<\/pre>\n<pre>                     rst.Update<\/pre>\n<pre>                     Response = acDataErrContinue<\/pre>\n<pre>                 Else<\/pre>\n<pre>                     Response = acDataErrAdded<\/pre>\n<pre>                 End If<\/pre>\n<pre>                 frmKopie.Visible = False<\/pre>\n<pre>             End With<\/pre>\n<pre>         Case Else<\/pre>\n<pre>             Response = acDataErrDisplay<\/pre>\n<pre>     End Select<\/pre>\n<pre>End Sub<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>Die erste Zeile sorgt daf&uuml;r, dass parallel zum eigentlich angezeigten Formular bereits eine zweite Instanz des gleichen Formulars erzeugt, aber noch nicht angezeigt wird:<\/p>\n<pre>Dim frmKopie As New Form_frmArtikel<\/pre>\n<p>Die Routine, die durch das Ereignis <b>Bei Fehler <\/b>ausgel&ouml;st wird, deklariert zun&auml;chst drei Variablen f&uuml;r ein <b>Database<\/b>-, ein <b>Recordset<\/b>&#8211; und ein <b>Field<\/b>-Objekt.<\/p>\n<p>Wozu Sie diese ben&ouml;tigen, erfahren Sie weiter unten. Danach folgt direkt die <b>Select Case<\/b>-Anweisung, die zu der zur Fehlernummer passenden Bedingung verzweigt.<\/p>\n<p>Falls der Fehler 7787, also eine &auml;nderung an einem gleichzeitig durch einen anderen Benutzer ge&auml;nderten Datensatz, auftritt, zeigt die Routine die zweite Instanz des Artikel-Formulars an und springt per <b>FindFirst<\/b>-Methode zum gleichen Datensatz, der auch im ersten Formular angezeigt wird. Der Titel dieses Formulars erh&auml;lt einen aussagekr&auml;ftigen Text (&#8222;Ge&auml;nderte Version des Artikels&#8220;) und das Formular wird rechts neben dem Originalformular platziert.<\/p>\n<p>Zus&auml;tzlich erscheint eine Meldung, die den Benutzer dazu auffordert, entweder die eigene &auml;nderung oder die des anderen Benutzers zu &uuml;bernehmen (siehe Bild 4).<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/Sperrungen-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Vergleich zweier parallel ge&auml;nderter Datens&auml;tze und die Aufforderung, sich f&uuml;r eine Variante zu entscheiden<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Soll die &auml;nderung des anderen Benutzers gespeichert werden, ist nichts anderes zu tun als den Wert <b>acDataErrAdded <\/b>mit dem Parameter <b>Response <\/b>zur&uuml;ckzugeben.<\/p>\n<p>Soll jedoch die &auml;nderung des aktuellen Benutzers gespeichert werden, wird es kompliziert:<\/p>\n<p>Dummerweise bietet Access n&auml;mlich f&uuml;r den <b>Response<\/b>-Parameter der <b>Form_Error<\/b>-Prozedur nur die &uuml;blichen Werte an, und die stimmen nicht mit denen des standardm&auml;&szlig;igen Dialogs aus Bild 3 &uuml;berein. Im Detail sorgt der Wert <b>acDataErrDisplay <\/b>nach wie vor daf&uuml;r, dass Access die Standardfehlermeldung anzeigt, die Werte <b>acDataErrAdded <\/b>und <b>acDataErrContinue <\/b>sorgen beide f&uuml;r das &uuml;bernehmen der &auml;nderungen des zweiten Benutzers.<\/p>\n<p>Wie also nun die eigenen &auml;nderungen durchsetzen Dazu speichern Sie einfach den aktuellen Inhalt der gebundenen Steuerelemente des Formulars in einem Recordset, das die aktuelle (und damit die durch den anderen Benutzer ge&auml;nderte) Version des Datensatzes enth&auml;lt &#8211; fertig!<\/p>\n<p>Hier ist noch nicht einmal besonders viel Schreibarbeit notwendig, denn man braucht einfach nur in einer <b>For Each<\/b>-Schleife alle im Recordset enthaltenen Felder zu durchlaufen.<\/p>\n<p>Und wenn das Formular nicht alle Felder der Tabelle anzeigt, dann bauen Sie das Recordset einfach auf einer Abfrage auf, die genau die im Formular enthaltenen Felder liefert.<\/p>\n<p><b>Sperrungen rechtzeitig erkennen<\/b><\/p>\n<p>Bei gr&ouml;&szlig;eren &auml;nderungen w&uuml;rde es Sinn machen, gleichzeitig an einem Datensatz arbeitende Benutzer &uuml;ber ihre Aktivit&auml;t zu unterrichten.<\/p>\n<p>Bei der pessimistischen Sperrung ist das kein Problem: Hier beginnt der erste Benutzer mit der Bearbeitung und alle anderen gucken in die R&ouml;hre. Dumm wird es nur, wenn der aktuelle Bearbeiter des Datensatzes mittendrin beschlie&szlig;t, Mittagspause oder noch schlimmer Feierabend zu machen: l&auml;uft der Rechner weiter und ist der Datensatz in Bearbeitung, k&ouml;nnen die &uuml;brigen Mitarbeiter nicht darauf zugreifen.<\/p>\n<p>Das l&auml;sst sich zwar auch durch den Einbau einer Timeout-Funktion umgehen, aber dies soll aus Platzgr&uuml;nden hier nicht beschrieben werden.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die Frage, ob Sie die optimistische oder pessimistische Sperrung verwenden, h&auml;ngt ganz vom Einsatzzweck ab. Der Vorteil der optimistischen Sperrung liegt in der gegen&uuml;ber der pessimistischen Variante geringeren Netzlast, da nicht immer alle anderen Benutzer informiert werden m&uuml;ssen, wenn ein Datensatz gesperrt ist &#8211; erst beim Speichern der &auml;nderungen eines Datensatzes erfolgt ein Abgleich mit der aktuell gespeicherten Version und ein eventueller Schreibkonflikt tritt auf.<\/p>\n<p>In Anwendungen, bei denen jeder Benutzer st&auml;ndig die aktuellen Informationen vorliegen haben muss, sind pessimistisches Locking und eine hohe Aktualisierungsfrequenz empfehlenswert &#8211; das bedeutet, dass Sie f&uuml;r regelm&auml;&szlig;iges Speichern sorgen und verhindern m&uuml;ssen, dass Mitarbeiter einen offenen Datensatz &uuml;ber die Mittagspause liegen lassen.<\/p>\n<p>Lassen Sie sich bei der Entscheidung f&uuml;r die richtige Locking-Strategie auf keinen Fall zur Annahme von Wahrscheinlichkeiten fehlleiten &#8211; die Aussage &#8222;H&ouml;chstwahrscheinlich greifen niemals zwei Mitarbeiter gleichzeitig auf den gleichen Kundendatensatz zu&#8220; bedeutet letztlich: Es ist immer noch m&ouml;glich, dass es zur gleichzeitigen Bearbeitung kommt.<\/p>\n<p>Vielleicht k&ouml;nnen Sie ja sicherstellen, dass in der Tat der Mitarbeiter A nur die Kundendaten von A bis K und der Mitarbeiter B nur die Kundendaten von L bis Z bearbeitet beziehungsweise bearbeiten darf.<\/p>\n<p>In dem Fall m&uuml;ssten Sie in Ihrer Anwendung zwar den jeweiligen Benutzernamen abfragen und nur die passenden Datens&auml;tze zur Bearbeitung freigeben, aber immerhin brauchen Sie sich so keine Gedanken &uuml;ber eventuelle Schreibkonflikte zu machen.<\/p>\n<p>Falls doch, h&auml;ngt es auch von den F&auml;higkeiten Ihrer Mitarbeiter ab, Schreibkonflikte mit den von Ihnen bereitgestellten Mitteln zu l&ouml;sen: Klappt das, k&ouml;nnen Sie optimistisches Locking einsetzen, klappt es nicht, sollten Sie zum pessimistischen Locking greifen. <\/p>\n<p>Das Locking von Daten spielt auch in DAO und ADO sowie bei ODBC-Verkn&uuml;pfungen eine Rolle. Mehr dar&uuml;ber erfahren Sie den folgenden Ausgaben von Access im Unternehmen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Sperrungen.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/EC138568-0255-4698-AA08-5BC008A607C7\/aiu_463.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Mehrbenutzerbetrieb kommt es mitunter zur gleichzeitigen Bearbeitung eines Datensatzes durch mehrere Mitarbeiter. In diesem Fall brauchen Sie eine sinnvolle Strategie, um entweder das gleichzeitige &Auml;ndern zu verhindern oder aber den Benutzern eine Hilfe zur L&ouml;sung von Schreibkonflikten an die Hand zu geben. Beides liefert der vorliegende Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662007,66032007,44000023],"tags":[],"class_list":["post-55000463","post","type-post","status-publish","format-standard","hentry","category-662007","category-66032007","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Sperrmechanismen in Access-Formularen - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sperrmechanismen in Access-Formularen\" \/>\n<meta property=\"og:description\" content=\"Im Mehrbenutzerbetrieb kommt es mitunter zur gleichzeitigen Bearbeitung eines Datensatzes durch mehrere Mitarbeiter. In diesem Fall brauchen Sie eine sinnvolle Strategie, um entweder das gleichzeitige &Auml;ndern zu verhindern oder aber den Benutzern eine Hilfe zur L&ouml;sung von Schreibkonflikten an die Hand zu geben. Beides liefert der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:15:45+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Sperrmechanismen in Access-Formularen\",\"datePublished\":\"2021-02-11T21:15:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/\"},\"wordCount\":2102,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/052c2e764998482db34a0e040fdbea7d\",\"articleSection\":[\"2007\",\"3\\\/2007\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/\",\"name\":\"Sperrmechanismen in Access-Formularen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/052c2e764998482db34a0e040fdbea7d\",\"datePublished\":\"2021-02-11T21:15:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/052c2e764998482db34a0e040fdbea7d\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/052c2e764998482db34a0e040fdbea7d\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrmechanismen_in_AccessFormularen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sperrmechanismen in Access-Formularen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Sperrmechanismen in Access-Formularen - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/","og_locale":"de_DE","og_type":"article","og_title":"Sperrmechanismen in Access-Formularen","og_description":"Im Mehrbenutzerbetrieb kommt es mitunter zur gleichzeitigen Bearbeitung eines Datensatzes durch mehrere Mitarbeiter. In diesem Fall brauchen Sie eine sinnvolle Strategie, um entweder das gleichzeitige &Auml;ndern zu verhindern oder aber den Benutzern eine Hilfe zur L&ouml;sung von Schreibkonflikten an die Hand zu geben. Beides liefert der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:15:45+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Sperrmechanismen in Access-Formularen","datePublished":"2021-02-11T21:15:45+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/"},"wordCount":2102,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d","articleSection":["2007","3\/2007","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/","url":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/","name":"Sperrmechanismen in Access-Formularen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d","datePublished":"2021-02-11T21:15:45+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/052c2e764998482db34a0e040fdbea7d"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Sperrmechanismen_in_AccessFormularen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Sperrmechanismen in Access-Formularen"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000463"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000463\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}