{"id":55001441,"date":"2023-06-01T00:00:00","date_gmt":"2023-06-17T09:30:18","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1441"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Sperrung_durch_Memofeld_statt_anderer_Sitzung","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/","title":{"rendered":"Sperrung durch Memofeld statt anderer Sitzung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/88d8e7656053461395e4cfe088b05008\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Neulich bat mich ein Kunde, mir einmal ein Netzwerkproblem bei ihm anzusehen. Aufgrund der Fehlermeldung konnte es keine andere Ursache geben &#8211; sie lautete &#8222;Aktualisieren nicht m&ouml;glich, momentane Sperrung durch eine andere Sitzung auf diesem Rechner&#8220;. Also haben wir uns diese Sache gemeinsam angesehen und zun&auml;chst schien die Meldung plausibel &#8211; immerhin arbeitete eine andere Mitarbeiterin gerade mit der Datenbank und es konnte gut sein, dass der Datensatz gesperrt war. Allerdings trat das Problem sp&auml;ter immer noch auf, obwohl niemand sonst mehr mit der Datenbank arbeitete. Gemeinsam sind wir dem Problem dann auf die Schliche gekommen. Die &Uuml;berschrift deutet es bereits an: Ein Memofeld spielte eine gro&szlig;e Rolle bei der L&ouml;sung des Problems.<\/p>\n<p><b>Video passend zu diesem Artikel:<\/b><\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/Bv-pj-Ebmac\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/b><\/p>\n<p>Wer mag der Fehlermeldung aus Bild 1 nicht glauben, vor allem, wenn die Daten der betroffenen Tabelle tats&auml;chlich von anderen Nutzern verwendet werden?<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_001.png\" alt=\"Fehlermeldung\" width=\"649,559\" height=\"129,0219\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Fehlermeldung<\/span><\/b><\/p>\n<p>Stutzig macht dann bei genauerem Hinsehen der Hinweis, dass es sich um eine andere Sitzung auf dem gleichen Rechner handelt. Und da waren wir uns doch recht sicher, dass aktuell nur eine Instanz der Datenbank ge&ouml;ffnet war.<\/p>\n<p>Was als konnte dieses Problem verursachen? Um es etwas genauer zu beschreiben: Es trat immer auf, wenn wir versucht haben, einen der Datens&auml;tze der Tabelle in einem Detailformular zu speichern &#8211; also in einem Formular, das von einem &Uuml;bersichtsformular ge&ouml;ffnet wurde, das wiederum die Daten zur Auswahl in einem Unterformular anzeigt.<\/p>\n<p>Hier konnten wir zumindest erkennen, dass die Daten gleichzeitig in zwei verschiedenen Formularen angezeigt wurden. Aber das ist gang und g&auml;be &#8211; ich selbst habe hunderte Datenbanken programmiert, bei denen ein &Uuml;bersichtsformular und ein Detailformular den gleichen Datensatz anzeigten und nie gab es Probleme beim Bearbeiten dieser Daten.<\/p>\n<p>Und es wurde immer omin&ouml;ser: Wir stellten fest, dass das Problem nicht immer auftrat, sondern nur dann, wenn das Memofeld in dem betroffenen Datensatz bereits eine Menge Daten enthielt.<\/p>\n<h2>Konstellation des Problems<\/h2>\n<p>Schauen wir uns an, wie das Problem genau aussieht. Wir haben dieses in einer minimalen Version nachgebaut, um zu experimentieren und eine L&ouml;sung zu finden.<\/p>\n<p>Dazu haben wir zun&auml;chst eine Tabelle namens <b>tblMemofelder <\/b>erstellt, die neben dem Prim&auml;rschl&uuml;sselfeld <b>MemoID <\/b>und einem Feld mit der Bezeichnung des Datensatzes namens <b>Bezeichnung <\/b>noch ein Memofeld namens <b>Memofeld <\/b>enth&auml;lt. Die Tabelle sieht in der Entwurfsansicht wie in Bild 2 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_002.png\" alt=\"Tabelle zum Reproduzieren des Problems\" width=\"549,559\" height=\"398,3041\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tabelle zum Reproduzieren des Problems<\/span><\/b><\/p>\n<p>Dazu haben wir ein Formular mit einem Unterformular hinzugef&uuml;gt. Das Hauptformular hei&szlig;t <b>frmMemofeldUebersicht<\/b> und enth&auml;lt neben einer Schaltfl&auml;che namens <b>cmdDetails <\/b>noch ein Unterformular namens <b>sfmMemofeldUebersicht<\/b>. Dieses Unterformular ist &uuml;ber die Eigenschaft <b>Datensatzquelle <\/b>an die Tabelle <b>tblMemofelder <\/b>gebunden und zeigt alle drei Felder dieser Tabelle an (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_003.png\" alt=\"Formular mit einem Unterformular zur Anzeige aller Datens&auml;tze der Tabelle tblMemofelder\" width=\"549,559\" height=\"381,7405\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Formular mit einem Unterformular zur Anzeige aller Datens&auml;tze der Tabelle tblMemofelder<\/span><\/b><\/p>\n<p>Wechseln wir zur Formularansicht, sehen wir hier die Daten der Tabelle <b>tblMemofelder<\/b> (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_004.png\" alt=\"Formular mit den Daten der Tabelle tblMemofelder in der Formularansicht\" width=\"549,559\" height=\"218,8243\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Formular mit den Daten der Tabelle tblMemofelder in der Formularansicht<\/span><\/b><\/p>\n<h2>Detailformular f&uuml;r die Tabelle tblMemofelder<\/h2>\n<p>Um das Szenario zu vervollst&auml;ndigen, haben wir noch ein Formular erstellt, das direkt an die Tabelle <b>tblMemofelder<\/b> gebunden ist und alle drei Felder dieser Tabelle anzeigt (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_005.png\" alt=\"Formular zur Anzeige eines Datensatzes der Tabelle tblMemofelder\" width=\"549,559\" height=\"362,2692\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Formular zur Anzeige eines Datensatzes der Tabelle tblMemofelder<\/span><\/b><\/p>\n<p>Hier haben wir noch ein Textfeld namens txtMenge hinzugef&uuml;gt, mit dem wir die Menge der Zeichen des im Memofeld enthaltenen Textes ausgeben k&ouml;nnen.<\/p>\n<p>Diese ermitteln wir zu zwei Gelegenheiten:<\/p>\n<ul>\n<li>Beim Anzeigen eines neuen Datensatzes, also beim Datensatzwechsel und<\/li>\n<li>beim &Auml;ndern des enthaltenen Textes.<\/li>\n<\/ul>\n<p>Dazu haben wir die folgenden beiden Prozeduren f&uuml;r die entsprechenden Ereignisse hinterlegt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n     Me!txtMenge = <span style=\"color:blue;\">Len<\/span>(Me!Memofeld)\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Memofeld_Change()\r\n     Me!txtMenge = <span style=\"color:blue;\">Len<\/span>(Me!Memofeld.Text)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit sorgen wir daf&uuml;r, dass wir nicht nur &uuml;ber das Textfeld den Inhalt des Memofeldes sehen, sondern auch noch die aktuelle L&auml;nge (siehe Bild 6). Diese spielt, wie wir gleich sehen werden, eine wichtige Rolle bei unserem Problem.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_006.png\" alt=\"Anzeige von Memofeldinhalten und ihrer L&auml;nge\" width=\"549,559\" height=\"362,2692\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Anzeige von Memofeldinhalten und ihrer L&auml;nge<\/span><\/b><\/p>\n<h2>Maximale Anzahl Zeichen ermitteln<\/h2>\n<p>Bevor wir uns um die Probleme k&uuml;mmern, die durch die oben erw&auml;hnte Sperrung ausgel&ouml;st werden, schauen wir uns zuerst einmal an, wie viele Zeichen wir einem Memofeld &uuml;ber die Benutzeroberfl&auml;che zuweisen k&ouml;nnen. Dazu f&uuml;gen wir dem Formular eine Schaltfl&auml;che hinzu, die solange den Inhalte des Memofeldes vergr&ouml;&szlig;ert und speichert, bis es zu einem Fehler kommt. Die Schaltfl&auml;che hei&szlig;t <b>cmdMemofeldAusreizen <\/b>und l&ouml;st die folgende Prozedur aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdMemofeldAusreizen_Click()\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Do While<\/span> Err.Number = 0\r\n         Me!Memofeld = Me.Memofeld _\r\n             & \" Memofeld mit einem sehr langen Text ...\"\r\n         RunCommand acCmdSaveRecord\r\n         Me!txtMenge = <span style=\"color:blue;\">Len<\/span>(Me!Memofeld)\r\n         DoEvents\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese f&uuml;gt solange die Zeichenfolge <b>Memofeld mit einem sehr langen Text &#8230; <\/b>zum Memofeld hinzu, bis ein Fehler ausgel&ouml;st wird. Nach jedem Hinzuf&uuml;gen ruft die Prozedur die Anweisung zum Speichern des aktuell im Formular angezeigten Datensatzes auf. Wird ein Fehler ausgel&ouml;st, endet die <b>Do While<\/b>-Schleife, die solange l&auml;uft, bis <b>Err.Number <\/b>nicht mehr den Wert <b>0 <\/b>enth&auml;lt.<\/p>\n<p>Nach den ersten paar Durchl&auml;ufen haben wir allerdings gesehen, dass wir bei der L&auml;nge der hinzuzuf&uuml;genden Zeichenkette ewig brauchen werden, um das Memofeld zu f&uuml;llen und haben die Zeichenkette um ein Vielfaches verl&auml;ngert. Bei etwas &uuml;ber 7.000.000 Zeichen erschien dann allerdings nicht etwa eine Fehlermeldung, sondern Access konnte die Anforderung nicht mehr verarbeiten und fror ein. Das geschieht allerdings auch, wenn wir in diesem Zustand versuchen, manuell weitere Zeichen einzugeben. Das Schlie&szlig;en der Anwendung gelang anschlie&szlig;end nur &uuml;ber das Beenden des Tasks im Taskmanager.<\/p>\n<p>Diese Menge an Zeichen erreichen wir allerdings l&auml;ngst nicht, wenn wir uns das oben angerissene Problem ansehen.<\/p>\n<h2>Memofeld in zwei Formularen gleichzeitig ge&ouml;ffnet<\/h2>\n<p>Nun nutzen wir die oben erstellten Formulare zum Reproduzieren unseres Problems. Dabei &ouml;ffnen wir zuerst das Formular <b>frmMemofeldUebersicht<\/b>, markieren den zu untersuchenden Eintrag und &ouml;ffnen dann mit der Schaltfl&auml;che <b>Details <\/b>das Detailformular <b>frmMemofeldDetails <\/b>(siehe Bild 7). Der zu untersuchende Eintrag enth&auml;lt aktuell nur wenige Zeichen, in diesem Fall <b>39<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_007.png\" alt=\"Anzeige des Inhalts eines Memofeldes in zwei verschiedenen Formularen gleichzeitig\" width=\"549,559\" height=\"394,7756\" \/><\/p>\n<p>[<\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Anzeige des Inhalts eines Memofeldes in zwei verschiedenen Formularen gleichzeitig<\/span><\/b><\/p>\n<p>Dort f&uuml;gen wir nun einige weitere Zeichen ein, sodass das Memofeld beispielsweise 3.000 Zeichen anzeigt. Auch das ist kein Problem! Also was f&uuml;hrt nun zu dem eingangs erw&auml;hnten Fehler?<\/p>\n<p>Schlie&szlig;en wir einfach nochmal das Detailformular und aktualisieren den Inhalt des &Uuml;bersichtsformulars mit <b>F5<\/b>. Dann &ouml;ffnen wir den Detaildatensatz erneut und versuchen diesen zu bearbeiten. Und dann tritt der Fehler auf &#8211; siehe Bild 8.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_008.png\" alt=\"Fehler beim &Auml;ndern des Inhalts des Memofeldes\" width=\"549,559\" height=\"307,6555\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Fehler beim &Auml;ndern des Inhalts des Memofeldes<\/span><\/b><\/p>\n<p>Was hat sich nun ge&auml;ndert? Im Gegensatz zum vorherigen Beispiel versuchen wir nun, einen bereits recht langen Inhalt eines Memofeldes zu &auml;ndern. Zuvor war die gespeicherte Version des Memofeldes noch nicht so lang. Der Unterschied ist also, dass beim Auftreten des Fehlers die zu &auml;ndernde Version bereits eine gewisse Anzahl Zeichen enthielt.<\/p>\n<p>Um den Bedingungen, unter denen der Fehler auftritt, auf die Schliche zu kommen, experimentieren wir nun ein wenig mit der Anzahl der Zeichen, ab welcher der Fehler ausgel&ouml;st wird.<\/p>\n<h2>Bearbeitung l&ouml;st keinen Fehler aus, wenn nur ein Formular auf das Memofeld zugreift<\/h2>\n<p>Dazu schlie&szlig;en wir erst einmal das Formular <b>frmMemofeldDetails <\/b>und leeren das Memofeld im Formular <b>frmMemofeldUebersicht<\/b>.<\/p>\n<p>Dann klicken wir auf die Schaltfl&auml;che <b>Details<\/b>, um das Formular <b>frmMemofeldDetails <\/b>erneut zu &ouml;ffnen. In der Prozedur, die durch die dortige Schaltfl&auml;che <b>cmdMemofeldAusreizen <\/b>ausgel&ouml;st wird, &auml;ndern wir nun die Zeile zum Hinzuf&uuml;gen von Text zum Memofeld wie folgt:<\/p>\n<pre>Me.Memofeld = Me.Memofeld & \"x\"<\/pre>\n<p>Damit wird nun nur jeweils ein Zeichen pro Durchlauf der Schleife hinzugef&uuml;gt und dann der enthaltene Text gespeichert. Anschlie&szlig;end rufen wir die Prozedur durch einen Klick auf <b>Memofeld ausreizen <\/b>erneut auf, um zu sehen, wann der Fehler ausgel&ouml;st wird. In diesem Beispiel war das bei 2.038 Zeichen der Fall (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_009.png\" alt=\"Herantasten an den Fehler\" width=\"424,5589\" height=\"171,505\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Herantasten an den Fehler<\/span><\/b><\/p>\n<p>Bei einer genaueren Untersuchung, bei der wir die Zeichenkette auf 2.035 Zeichen einstellten und dann manuell jeweils ein Zeichen hinzuf&uuml;gten und den Datensatz dann speicherten, trat der Fehler jedoch auf, sobald die gespeicherte Version des Datensatzes im Memofeld mehr als 2.036 Zeichen enthielt.<\/p>\n<p>Das bedeutet auch, dass wir, wenn nur eine Instanz des Memofeldes angezeigt wird, wie weiter oben beschrieben viele tausend weitere Zeichen zum Memofeld hinzuf&uuml;gen k&ouml;nnen. Erst wenn wir das Memofeld in mehr als einer Instanz anzeigen, dieses mehr als 2.036 Zeichen enth&auml;lt und wir dann den Inhalt &auml;ndern, tritt der Fehler auf.<\/p>\n<p>Der Fehler tritt also in folgenden F&auml;llen auf:<\/p>\n<ul>\n<li>Erste Bedingung: Das Memofeld wird an mehr als einer Stelle angezeigt und der betroffene Datensatz ist auch markiert (wenn das Memofeld zwar angezeigt wird, aber ein anderer Datensatz markiert ist, gibt es keine Sperrung).<\/li>\n<li>Zweite Bedingung: Die gespeicherte Version des Memofeldes enth&auml;lt mehr als 2.036 Zeichen. Man kann also das Formular &ouml;ffnen, wenn zuvor bereits mehr als 2.036 Zeichen im Memofeld enthalten waren und dann versuchen, den Inhalt zu &auml;ndern und somit den Fehler ausl&ouml;sen.<\/li>\n<li>Oder man &ouml;ffnet das Formular f&uuml;r einen Datensatz, dessen Memofeld weniger als 2.036 Zeichen enth&auml;lt. Dann kann man das Memofeld einmalig auf eine gr&ouml;&szlig;ere Anzahl von Zeichen &auml;ndern und dieses speichern. Sobald man es dann erneut &auml;ndert, wird der Fehler ausgel&ouml;st.<\/li>\n<\/ul>\n<p>Zusammengefasst bedeutet dies:<\/p>\n<p>Der Inhalt eines Memofeldes, das mehr als 2.036 Zeichen enth&auml;lt und an mehr als einer Stelle ge&ouml;ffnet ist, kann nicht ge&auml;ndert werden. Es spielt keine Rolle, ob das Memofeld in der Datenblattansicht einer Tabelle oder Abfrage oder in einem Formular angezeigt wird.<\/p>\n<p>Offensichtlich sperrt Access Memofelder mit mehr als 2.036 Zeichen auf diese Weise f&uuml;r die Bearbeitung in einer anderen als der aktuellen Instanz.<\/p>\n<h2>Fehler im Mehrbenutzerbetrieb<\/h2>\n<p>Wenn wir nun versuchen, einen Datensatz, der in einem Memofeld mehr als 2.036 Zeichen enth&auml;lt, in einer anderen Datenbank zu &ouml;ffnen, die mit der betroffenen Tabelle verkn&uuml;pft ist, erscheint die Meldung aus Bild 10.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_010.png\" alt=\"Fehler, wenn man von einer anderen Datenbank auf einen ge&ouml;ffneten Datensatz zugreift\" width=\"549,559\" height=\"101,6066\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Fehler, wenn man von einer anderen Datenbank auf einen ge&ouml;ffneten Datensatz zugreift<\/span><\/b><\/p>\n<p>Schlie&szlig;en wir das Formular in der anderen Datenbank, k&ouml;nnen wir ohne Probleme &uuml;ber die Tabellenverkn&uuml;pfung auf das Memofeld zugreifen. Anschlie&szlig;end konnten wir die Tabellenverkn&uuml;pfung allerdings problemlos &ouml;ffnen.<\/p>\n<p>Nur beim Versuch, den Datensatz zu &auml;ndern, w&auml;hrend er in einer anderen Datenbank ge&ouml;ffnet war, trat wieder ein Fehler auf &#8211; diesmal allerdings ein anderer (siehe Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_011.png\" alt=\"Fehler beim Versuch, den Inhalt des Memofelds &uuml;ber eine Tabellenverkn&uuml;pfung zu &auml;ndern\" width=\"549,559\" height=\"100,1573\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Fehler beim Versuch, den Inhalt des Memofelds &uuml;ber eine Tabellenverkn&uuml;pfung zu &auml;ndern<\/span><\/b><\/p>\n<p>Aber sperrt Access tats&auml;chlich den vollst&auml;ndigen Datensatz? Nein, das ist nicht der Fall, und damit kommen wir zu einer m&ouml;glichen L&ouml;sung.<\/p>\n<h2>Workaround<\/h2>\n<p>Wir haben verschiedene Dinge ausprobiert, um das Problem zu umgehen &#8211; zum Beispiel haben wir das Detailformular von der Datensatzquelle entkoppelt, indem wir die Felder beim &Ouml;ffnen des Formulars aus den Daten eines f&uuml;r kurze Zeit ge&ouml;ffneten Recordsets gef&uuml;llt haben. Nach einer &Auml;nderung wollten wir die Daten wieder speichern, wahlweise durch das Verwenden eines Recordsets mit <b>Edit&#8230;Update <\/b>oder durch Verwenden einer SQL-Aktualisierungsabfrage mit <b>Execute<\/b>.<\/p>\n<p>Das Formular &ouml;ffnen wir beispielsweise mit der folgenden Prozedur, die durch einen Mausklick auf die neue Schaltfl&auml;che <b>cmdDetailsUngebunden <\/b>im Formular <b>frmMemofeldUebersicht <\/b>ausgel&ouml;st wird:<\/p>\n<pre>DoCmd.OpenForm \"frmMemofeldDetails_Ungebunden\", _\r\n     OpenArgs:=Me!sfmMemofeldUebersicht.Form!MemoID<\/pre>\n<p>Hier &uuml;bergeben wir die ID des anzuzeigenden Datensatzes, die wir aus dem Unterformular auslesen, mit dem &Ouml;ffnungsargument. Im Klassenmodul des Formulars <b>frmMemofeldDetails_Ungebunden <\/b>legen wir f&uuml;r diesen Wert eine eigene Variable im allgemeinen Teil des Moduls an:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>lngMemoID<span style=\"color:blue;\"> As Long<\/span><\/pre>\n<p>Diese f&uuml;llen wir mit der Prozedur, die durch das Ereignis <b>Beim &Ouml;ffnen <\/b>ausgel&ouml;st wird. Hier legen wir au&szlig;erdem ein Recordset an, das den betroffenen Datensatz enth&auml;lt, und schreiben die Werte der Felder des Recordsets in die ungebundenen Textfelder des Formulars:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me.OpenArgs)<span style=\"color:blue;\"> Then<\/span>\r\n         lngMemoID = Me.OpenArgs\r\n         <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n         <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * \" _\r\n             & \"FROM tblMemofelder WHERE MemoID = \" _\r\n             & lngMemoID, dbOpenDynaset)\r\n         Me!txtMemoID = rst!MemoID\r\n         Me!txtBezeichnung = rst!Bezeichnung\r\n         Me!txtMemofeld = rst!Memofeld\r\n         rst.Close\r\n         <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n         <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur, die beim Schlie&szlig;en des Formulars ausgel&ouml;st wird, sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Close()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM \" _\r\n         \"tblMemofelder WHERE MemoID = \" _\r\n         & lngMemoID, dbOpenDynaset)\r\n     rst.Edit\r\n     rst!Bezeichnung = Me!txtBezeichnung\r\n     rst!Memofeld = Me!txtMemofeld\r\n     rst.Update\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Sie &ouml;ffnet ein Recordset auf Basis der Tabelle tblMemofelder mit dem Datensatz, dessen Daten im ungebundenen Formular angezeigt wurden. Dann tr&auml;gt sie die Daten aus den ungebundenen Textfeldern des Formulars in die Felder des Recordsets ein. <\/p>\n<p>&Ouml;ffnen wir das Formular nun f&uuml;r einen Datensatz, dessen Memofeld mehr als 2.036 Zeichen enth&auml;lt und schlie&szlig;en wir dieses anschlie&szlig;end, wird selbst ohne &Auml;nderungen im Textfeld ein Fehler in der Zeile aus Bild 12 ausgel&ouml;st.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_013.png\" alt=\"Fehler beim Versuch, ein Memofeld mit mehr als 2.036 Zeichen zu beschreiben, das bereits ge&ouml;ffnet ist\" width=\"424,5589\" height=\"254,5317\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Fehler beim Versuch, ein Memofeld mit mehr als 2.036 Zeichen zu beschreiben, das bereits ge&ouml;ffnet ist<\/span><\/b><\/p>\n<p>Warum geschieht dies auch ohne &Auml;nderung? Weil es ausreicht, einen Wert in einem Memofeld zu speichern, das mehr als 2.036 Zeichen enth&auml;lt und bereits an irgendeiner anderen Stelle ge&ouml;ffnet ist.<\/p>\n<p>Dieser Workaround funktioniert also nicht.<\/p>\n<h2>Funktionierender Workaround<\/h2>\n<p>Einen funktionierenden Workaround sehen wir im Formular <b>frmMemofeldUebersichtOhneMemo<\/b>. Dieses zeigt im Unterformular ebenfalls Daten der Tabelle <b>tblMemofelder<\/b> an, diesmal aber nicht das Memofeld selbst (siehe Bild 13). Wenn wir nun das Detailformular f&uuml;r den Datensatz mit einem Memofeld mit mehr als 2.036 Zeichen anzeigen, erhalten wir beim &Auml;ndern des Inhalts des Memofeldes keine Fehlermeldung.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1441_014.png\" alt=\"Formular mit Unterformular ohne Memofeld\" width=\"499,5589\" height=\"251,0059\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Formular mit Unterformular ohne Memofeld<\/span><\/b><\/p>\n<p>Damit stellt sich nun die Frage, ob man den Inhalt des Memofeldes &uuml;berhaupt an weiteren Stellen au&szlig;erhalb des Detailformulars zum Bearbeiten anzeigen muss &#8211; und ob es gegebenenfalls Alternativen gibt. <\/p>\n<p>Wir haben noch ein Experiment durchgef&uuml;hrt, bei dem wir die Datensatzquelle des Unterformulars auf eine Abfrage eingestellt haben, bei der nur die ersten 255 Zeichen des Memofeldes angezeigt werden. Dies bewirkte allerdings keinen Unterschied.<\/p>\n<p>Ein Workaround k&ouml;nnte jedoch darin bestehen, die ersten 255 Zeichen bei jeder &Auml;nderung des Memofeldes in einem zus&auml;tzlichen Textfeld in der gleichen Tabelle zu speichern und dessen Inhalt im Unterformular anzuzeigen. Wenn man schon die Daten eines Memofeldes in einem Unterformular anzeigen m&ouml;chte, will man vielleicht ohnehin nicht den kompletten Inhalt dort ausgeben.<\/p>\n<h2>Pr&uuml;fen, ob Datensatz gesperrt ist<\/h2>\n<p>Und f&uuml;r alle F&auml;lle stellen wir noch eine VBA-Funktion vor, die pr&uuml;ft, ob ein Datensatz mit einem Memofeld gerade gesperrt ist beziehungsweise das Memofeld in irgendeinem anderen Feld angezeigt wird.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>IsMemofieldLocked(strTable<span style=\"color:blue;\"> As String<\/span>, _\r\n         strMemofield<span style=\"color:blue;\"> As String<\/span>, strPKField<span style=\"color:blue;\"> As String<\/span>, _\r\n         lngID<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM \" _\r\n         & strTable  & \" WHERE \" & strPKField & \" = \" _\r\n         & lngID, dbOpenDynaset)\r\n     rst.Edit\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     rst.Fields(strMemofield) = \"x\"\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> Err.Number = 0<span style=\"color:blue;\"> Then<\/span>\r\n         IsMemofieldLocked = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Die Funktion wird beispielsweise im Direktbereich wie folgt aufgerufen:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> IsMemofieldLocked(\"tblMemofelder\",  \"Memofeld\", \"MemoID\", 4)<\/pre>\n<p>Damit kann man vor dem &Ouml;ffnen eines Formulars, in dem das Memofeld bearbeitet werden kann, pr&uuml;fen, ob dies &uuml;berhaupt m&ouml;glich ist.<\/p>\n<h2>Test mit schreibgesch&uuml;tztem Datensatz<\/h2>\n<p>Um das auch noch zu erw&auml;hnen: Wir haben auch noch gepr&uuml;ft, was geschieht, wenn wir die Daten im &Uuml;bersichtsformular als schreibgesch&uuml;tztes Recordset anzeigen (durch Einstellen der Eigenschaft <b>Recordsettyp <\/b>auf <b>Snapshot<\/b>). Auch hier wird das Memofeld jedoch gesperrt.<\/p>\n<h2>Test mit Verschieben des Datensatzzeigers<\/h2>\n<p>Schlie&szlig;lich haben wir noch damit experimentiert, den Datensatzzeiger im aufrufenden Formular vor dem &Ouml;ffnen des Detailformulars auf einen neuen, leeren Datensatz zu verschieben, damit der anzuzeigende Datensatz nicht mehr gesperrt wird. Das funktionierte jedoch auch nur, wenn mindestens ein Datensatz zwischen dem anzuzeigenden und dem neuen Datensatz lag. Das ist also auch keine L&ouml;sung, da dies nicht immer gegeben ist.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Der hier beschriebene Fehler ist mir immer wieder in Kundenanfragen &uuml;ber den Weg gelaufen, aber eine abschlie&szlig;ende Ursache oder L&ouml;sung haben wir bisher nicht gefunden. Dieser Beitrag beschreibt nun, wie der Fehler zustandekommt und zeigt verschiedene Ans&auml;tze, um das Problem zu beheben. Die einfachste Variante ist, daf&uuml;r zu sorgen, dass die betroffenen Memofelder nur dann angezeigt werden, wenn sie wirklich ben&ouml;tigt und bearbeitet werden sollen. Damit l&auml;sst sich allerdings nicht ausschlie&szlig;en, dass der gleiche Datensatz von mehreren Benutzern bearbeitet wird. In diesem Fall l&auml;sst sich jedoch mit der oben genannten Funktion <b>IsMemofieldLocked <\/b>pr&uuml;fen, ob das Memofeld bearbeitet werden kann.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>ProblemeMitMemofeldern.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/FFD0A661-BE05-40DC-A058-FABCF424E840\/aiu_1441.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neulich bat mich ein Kunde, mir einmal ein Netzwerkproblem beim ihm anzusehen. Aufgrund der Fehlermeldung konnte es keine andere Ursache geben &#8211; sie lautete &#8222;Aktualisieren nicht m&ouml;glich, momentane Sperrung durch eine andere Sitzung auf diesem Rechner&#8220;. Also haben wir uns diese Sache gemeinsam angesehen und zun&auml;chst schien die Meldung plausibel &#8211; immerhin arbeitete eine andere Mitarbeiterin gerade mit der Datenbank und es konnte gut sein, dass der Datensatz gesperrt war. Allerdings trat das Problem sp&auml;ter immer noch auf, obwohl niemand sonst mehr mit der Datenbank arbeitete. Gemeinsam sind wir dem Problem dann auf die Schliche gekommen. Die &Uuml;berschrift deutet es bereits an: Ein Memofeld spielte eine gro&szlig;e Rolle bei der L&ouml;sung des Problems.<\/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":[662023,66032023,44000021],"tags":[],"class_list":["post-55001441","post","type-post","status-publish","format-standard","hentry","category-662023","category-66032023","category-Tabellen_und_Datenmodellierung"],"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>Sperrung durch Memofeld statt anderer Sitzung - 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\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sperrung durch Memofeld statt anderer Sitzung\" \/>\n<meta property=\"og:description\" content=\"Neulich bat mich ein Kunde, mir einmal ein Netzwerkproblem beim ihm anzusehen. Aufgrund der Fehlermeldung konnte es keine andere Ursache geben - sie lautete &quot;Aktualisieren nicht m&ouml;glich, momentane Sperrung durch eine andere Sitzung auf diesem Rechner&quot;. Also haben wir uns diese Sache gemeinsam angesehen und zun&auml;chst schien die Meldung plausibel - immerhin arbeitete eine andere Mitarbeiterin gerade mit der Datenbank und es konnte gut sein, dass der Datensatz gesperrt war. Allerdings trat das Problem sp&auml;ter immer noch auf, obwohl niemand sonst mehr mit der Datenbank arbeitete. Gemeinsam sind wir dem Problem dann auf die Schliche gekommen. Die &Uuml;berschrift deutet es bereits an: Ein Memofeld spielte eine gro&szlig;e Rolle bei der L&ouml;sung des Problems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-17T09:30:18+00:00\" \/>\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=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Sperrung durch Memofeld statt anderer Sitzung\",\"datePublished\":\"2023-06-17T09:30:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/\"},\"wordCount\":2691,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/88d8e7656053461395e4cfe088b05008\",\"articleSection\":[\"2023\",\"3\\\/2023\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/\",\"name\":\"Sperrung durch Memofeld statt anderer Sitzung - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/88d8e7656053461395e4cfe088b05008\",\"datePublished\":\"2023-06-17T09:30:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/88d8e7656053461395e4cfe088b05008\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/88d8e7656053461395e4cfe088b05008\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sperrung durch Memofeld statt anderer Sitzung\"}]},{\"@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":"Sperrung durch Memofeld statt anderer Sitzung - 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\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/","og_locale":"de_DE","og_type":"article","og_title":"Sperrung durch Memofeld statt anderer Sitzung","og_description":"Neulich bat mich ein Kunde, mir einmal ein Netzwerkproblem beim ihm anzusehen. Aufgrund der Fehlermeldung konnte es keine andere Ursache geben - sie lautete \"Aktualisieren nicht m&ouml;glich, momentane Sperrung durch eine andere Sitzung auf diesem Rechner\". Also haben wir uns diese Sache gemeinsam angesehen und zun&auml;chst schien die Meldung plausibel - immerhin arbeitete eine andere Mitarbeiterin gerade mit der Datenbank und es konnte gut sein, dass der Datensatz gesperrt war. Allerdings trat das Problem sp&auml;ter immer noch auf, obwohl niemand sonst mehr mit der Datenbank arbeitete. Gemeinsam sind wir dem Problem dann auf die Schliche gekommen. Die &Uuml;berschrift deutet es bereits an: Ein Memofeld spielte eine gro&szlig;e Rolle bei der L&ouml;sung des Problems.","og_url":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-06-17T09:30:18+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Sperrung durch Memofeld statt anderer Sitzung","datePublished":"2023-06-17T09:30:18+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/"},"wordCount":2691,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/88d8e7656053461395e4cfe088b05008","articleSection":["2023","3\/2023","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/","url":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/","name":"Sperrung durch Memofeld statt anderer Sitzung - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/88d8e7656053461395e4cfe088b05008","datePublished":"2023-06-17T09:30:18+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/88d8e7656053461395e4cfe088b05008","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/88d8e7656053461395e4cfe088b05008"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Sperrung_durch_Memofeld_statt_anderer_Sitzung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Sperrung durch Memofeld statt anderer Sitzung"}]},{"@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\/55001441","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=55001441"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001441\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}