{"id":55000275,"date":"2005-06-01T00:00:00","date_gmt":"2021-03-22T16:17:27","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=275"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Transaktionen_in_Access","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/","title":{"rendered":"Transaktionen in Access"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die Durchf&uuml;hrung von Aktualisierungen am Datenbestand wird umso fehleranf&auml;lliger, je mehr Schritten die jeweilige Aktion beinhaltet und je mehr Personen gleichzeitig auf den betroffenen Datenbestand oder Teilmengen davon zugreifen k&ouml;nnen. Transaktionen sind eine Technik, die in beiden F&auml;llen f&uuml;r Sicherheit sorgen und Inkonsistenzen vermeinden helfen.<\/b><\/p>\n<p><b>Wof&uuml;r Transaktionen<\/b><\/p>\n<p>Stellen Sie sich das einfache Beispiel einer Bank vor, in der ein Mitarbeiter einen Betrag von beispielsweise 100 Euro von einem Konto auf ein anderes umbucht. Dazu sind zwei Schritte erforderlich: Man muss dem ersten Konto die 100 Euro abziehen und diese dem zweiten Konto zuschreiben. Diese beiden Vorg&auml;nge m&uuml;ssen untrennbar miteinander verbunden sein; die Durchf&uuml;hrung nur eines der Vorg&auml;nge w&uuml;rde zu einer Inkonsistenz f&uuml;hren. Entweder gibt es dann in der Gesamtbilanz irgendwo 100 Euro zuviel oder zuwenig &#8211; je nachdem, welcher Vorgang schiefgelaufen ist.<\/p>\n<p>Also ben&ouml;tigt man eine Technik, die mehrere Vorg&auml;nge &#8222;sammelt&#8220; und entscheidet, ob die betreffenden &auml;nderungen durchzuf&uuml;hren sind oder verworfen werden.<\/p>\n<p>Im Datenbankbereich lassen sich Operationen als Transaktion zusammenfassen. Mit einer bestimmten Anweisung legt man fest, wann die Transaktion beginnt. Sind alle zusammenh&auml;ngenden Aktionen erledigt, beendet man die Transaktion mit einer weiteren Anweisung. Erst dann wirken sich die durchgef&uuml;hrten &auml;nderungen auf den Datenbestand aus. Es gibt noch eine weitere M&ouml;glichkeit, eine Transaktion zu beenden: Wenn nicht alle enthaltenen Aktionen erfolgreich durchgef&uuml;hrt werden konnten, bricht man die Transaktion ab. In dem Fall werden alle der bis dahin durchgef&uuml;hrten &auml;nderungen am Datenbestand verworfen.<\/p>\n<p><b>Transaktionen in der Praxis<\/b><\/p>\n<p>Das obige Beispiel setzt voraus, dass theoretisch die M&ouml;glichkeit besteht, dass eine der innerhalb der Transaktion durchgef&uuml;hrten Aktionen scheitern k&ouml;nnte &#8211; das kann durchaus passieren, wenn etwa das Konto, von dem der Betrag abgebucht werden soll, nicht die notwendige Deckung aufweist. Kann man nicht einfach vor dem Durchf&uuml;hren der beiden Vorg&auml;nge pr&uuml;fen, ob die Voraussetzungen erf&uuml;llt sind und erst dann die entsprechenden Aktionen durchf&uuml;hren<\/p>\n<p>Die Antwort lautet Jein. Wenn es sich bei dem System um eine Einzelplatzl&ouml;sung handelt, wie es etwa bei einer Buchhaltungssoftware f&uuml;r Freiberufler der Fall sein d&uuml;rfte (die sich in der Regel keinen Mitarbeiterstab f&uuml;r die Regelung ihrer Finanzen leisten), k&ouml;nnen sie locker auf die Verwendung von Transaktionen verzichten.<\/p>\n<p>Wenn es sich aber tats&auml;chlich um eine Software handelt, die in einer Bank oder &auml;hnlichen Institutionen eingesetzt wird, greifen unter Umst&auml;nden mehrere Leute gleichzeitig auf ein und dasselbe Konto zu. Damit diese Vorg&auml;nge sich nicht &uuml;berlappen, sperrt der erste Vorgang die relevanten Tabellen oder Datens&auml;tze und gibt diese erst nach Beendigung der Transaktion wieder frei. Die verwendeten Sperrmechanismen h&auml;ngen dabei von den aktuell f&uuml;r diese Datenbank festgelegten Einstellungen ab. Wenn Sie optimistische Sperrung anwenden, sperrt eine Transaktion die betroffenen Datens&auml;tze erst beim Abschlie&szlig;en der Transaktion; beim pessimistischen Sperren hingegen beginnt die Sperre sofort mit dem Bearbeiten der Daten.<\/p>\n<p><b>Transaktionen und Aktionsabfragen<\/b><\/p>\n<p>Transaktionen k&ouml;nnen sich auf eine oder mehrere Tabellen beziehen. Bereits eine Aktionsabfrage zum Erh&ouml;hen aller Preise in einer Artikel-Tabelle kann Gegenstand einer Transaktion werden, wenn mehrere Datens&auml;tze daran beteiligt sind. Sie m&uuml;ssen allerdings bestimmte Regeln beachten, um die in Access eingebauten Transaktionsmechanismen zu nutzen.<\/p>\n<p>Zum Ausf&uuml;hren von Aktionsabfragen gibt es mehrere M&ouml;glichkeiten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Ausf&uuml;hren der Abfrage per Men&uuml;befehl<\/li>\n<li class=\"aufz-hlung\">Aufruf mit <b>DoCmd.RunSQL<\/b><\/li>\n<li class=\"aufz-hlung\">Aufruf mit <b>CurrentDB.Execute<\/b><\/li>\n<\/ul>\n<p>Die ersten beiden Varianten sind identisch; das <b>DoCmd<\/b>-Objekt verschafft dem Entwickler lediglich Zugriff auf die Men&uuml;elemente per VBA. Zu Beispielzwecken verwenden Sie eine Tabelle, die lediglich die beiden Felder <b>ZahlID <\/b>und <b>Zahl <\/b>enth&auml;lt und unter dem Namen <b>tblZahlen <\/b>gespeichert ist.<\/p>\n<p>Um Fehler w&auml;hrend Transaktionen nachstellen zu k&ouml;nnen, stellen Sie die <b>Feldgr&ouml;&szlig;e <\/b>des Feldes <b>Zahl <\/b>auf <b>Integer <\/b>und die <b>G&uuml;ltigkeitsregel <\/b>auf <b>&gt;0 <\/b>ein &#8211; so kann dieses Feld nur positive Zahlen aufnehmen (s. Bild 2 hinzu.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2005_03\/Transaktionen_5-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Beispieltabelle tblZahlen<\/span><\/b><\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2005_03\/Transaktionen_5-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Beispielwerte in der Tabelle tblZahlen<\/span><\/b><\/p>\n<p><a id=\"anker-12-anchor\" name=\"anker-12-anchor\" \/><\/p>\n<p><b>Implizite Transaktion mit Aktionsabfragen und DoCmd.RunSQL<\/b><\/p>\n<p>Rufen Sie dann im Direktfenster folgende Aktionsabfrage auf, die von den im Feld <b>Zahl <\/b>enthaltenen Werten die Zahl <b>100 <\/b>subtrahiert:<\/p>\n<pre>DoCmd.RunSQL &quot;UPDATE tblZahlen SET Zahl = Zahl - 100&quot;<\/pre>\n<p><!--30percent--><\/p>\n<p>Mit der beschriebenen Beispielkonfiguration und obiger Anweisung sollten Sie eine Meldung wie in Bild 3 erhalten (zuvor kommt &#8211; je nach der Einstellung der Access-Optionen &#8211; noch eine Abfrage, ob Sie die Aktionsabfrage &uuml;berhaupt durchf&uuml;hren m&ouml;chten).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2005_03\/Transaktionen_5-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Bei Fehlern in Aktionsabfragen erscheint eine Meldung.<\/span><\/b><\/p>\n<p>Die Meldung deutet darauf hin, dass Access zwar schon versucht hat, die Abfrage durchzuf&uuml;hren, aber dies noch nicht getan hat &#8211; sonst lie&szlig;e sich diese nicht einfach r&uuml;ckg&auml;ngig machen. Mit einem Klick auf <b>Ja <\/b>f&uuml;hren Sie alle Teile der Abfrage durch, die nicht zu einem Fehler f&uuml;hren, mit einem Klick auf <b>Nein <\/b>brechen Sie die Transaktion ab. Allerdings l&ouml;sen Sie damit einen Fehler aus (s. Bild 4), um den Sie sich mit einer entsprechenden Fehlerbehandlung k&uuml;mmern m&uuml;ssen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2005_03\/Transaktionen_5-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Das Abbrechen einer mit DoCmd.RunSQL gestarteten Aktionsabfrage f&uuml;hrt zu einem Fehler.<\/span><\/b><\/p>\n<p><b>Keine implizite Transaktion mit der Execute-Methode<\/b><\/p>\n<p>In einer professionellen Anwendung m&ouml;chten Sie den Benutzer m&ouml;glicherweise nicht mit so einer Meldung konfrontieren. Im besten Fall k&ouml;nnen Sie vorher absch&auml;tzen, welche Probleme beim Durchf&uuml;hren einer Aktionsabfrage auftreten k&ouml;nnen und legen direkt im Code entsprechende Ma&szlig;nahmen fest.<\/p>\n<p>Die <b>Execute<\/b>-Anweisung des <b>Database<\/b>&#8211; oder <b>Connection<\/b>-Objekts erleichtert dies. <\/p>\n<p>Die in der folgenden Prozedur verwendete Anweisung f&uuml;hrt alle in der Aktionsabfrage enthaltenen Teile aus, die keinen Fehler ausl&ouml;sen:<\/p>\n<pre>Public Sub Aktionsabfrage()\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblZahlen SET Zahl = Zahl - 100&quot;\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Das bringt Sie auch nicht viel weiter, da der Benutzer nicht erf&auml;hrt, das nicht alle gew&uuml;nschten Operationen komplett ausgef&uuml;hrt wurden. Die folgende Variante unterscheidet sich lediglich durch den Parameter <b>dbFailOnError <\/b>in der <b>Execute<\/b>-Anweisung von der vorherigen Version:<\/p>\n<pre>Public Sub AktionsabfrageMF()\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblZahlen SET Zahl = Zahl - 100&quot;, dbFailOnError\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Der Einsatz des Parameters <b>dbFailOnError <\/b>sorgt daf&uuml;r, dass Access bei Problemen mit der Aktionsabfrage entsprechende Fehlermeldungen ausgibt, wie das Beispiel aus Bild 5 zeigt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2005_03\/Transaktionen_5-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Fehler beim Ausf&uuml;hren der Execute-Methode<\/span><\/b><\/p>\n<p>Mit einer Fehlerbehandlung k&ouml;nnen Sie eigene Fehlermeldungen erzeugen und vor allem die Anwendung anschlie&szlig;end fortsetzen.<\/p>\n<p>Aber ist die mit der <b>Execute<\/b>-Methode abgesetzte SQL-Anweisung auch eine implizite Transaktion Werden bereits ge&auml;nderte Datens&auml;tze beim Auftreten eines Fehlers wieder zur&uuml;ckgesetzt Ein Test ergibt: Nein! Probieren Sie die obige Prozedur einmal mit den Daten aus Bild 6 aus. Normalerweise sollte der erste Datensatz ge&auml;ndert werden, dann ein Fehler beim zweiten Datensatz auftreten, weil dessen Wert gr&ouml;&szlig;er als <b>0 <\/b>sein muss und schlie&szlig;lich die &auml;nderungen verworfen werden.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2005_03\/Transaktionen_5-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Beispielkonfiguration zum Testen implizierter Transaktionen per Execute-Methode<\/span><\/b><\/p>\n<p>Das Ergebnis sieht anders aus: Der Wert des ersten Datensatzes wird wie gew&uuml;nscht ge&auml;ndert, aber der letzte Datensatz nicht &#8211; das hei&szlig;t, dass diese scheinbare Transaktion nicht komplett durchgef&uuml;hrt, aber auch nicht r&uuml;ckg&auml;ngig gemacht wurde.<\/p>\n<p><b>Explizite Transaktionen mit DAO<\/b><\/p>\n<p>Abhilfe schafft die Prozedur aus <a href=\"#anker-19-anchor\">Listing 1<\/a>. Diese Prozedur verwendet eine explizite Transaktion und bettet die per <b>Execute<\/b>-Anweisung abgesetzte Aktionsabfrage darin ein.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Beispiel f&uuml;r eine Transaktion mit einer Execute-Anweisung<\/p>\n<pre>Public Sub ExecuteMitTransaktion()\r\n    Dim db As DAO.Database\r\n    Dim wks As DAO.Workspace\r\n    On Error Resume Next\r\n    Set wks = DBEngine.Workspaces(0)\r\n    wks.BeginTrans\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblZahlen SET Zahl = Zahl - 100&quot;, dbFailOnError\r\n    If Err.Number = 0 Then\r\n         wks.CommitTrans\r\n        MsgBox &quot;OK&quot;\r\n    Else\r\n         wks.Rollback\r\n        MsgBox &quot;Abgebrochen&quot;\r\n    End If\r\n    Set db = Nothing\r\n    Set wks = Nothing\r\nEnd Sub<\/pre>\n<p>Dazu erstellen Sie zun&auml;chst einen Verweis auf die aktuelle Sitzung, indem Sie mit der Objektvariablen wks den aktuellen Workspace referenzieren.<\/p>\n<p><b>BeginTrans<\/b>, <b>Commit <\/b>und <b>Rollback <\/b>sind Methoden des <b>Workspace<\/b>-Objekts:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>BeginTrans<\/b>: Startet eine Transaktion.<\/li>\n<li class=\"aufz-hlung\"><b>Rollback<\/b>: Schlie&szlig;t die Transaktion ab und verwirft alle enthaltenen &auml;nderungen.<\/li>\n<li class=\"aufz-hlung\"><b>Commit<\/b>: Schlie&szlig;t die Transaktion ab und &uuml;bernimmt die &auml;nderungen.<\/li>\n<\/ul>\n<p>Mit der <b>BeginTrans<\/b>-Methode starten Sie die Transaktion innerhalb des <b>Workspace<\/b>-Objekts. Die <b>Execute<\/b>-Methode f&uuml;hrt die Aktionsabfrage durch und sorgt mit dem <b>dbFailOnError<\/b>-Parameter daf&uuml;r, dass beim Auftreten eines Fehlers die Eigenschaften des <b>Err<\/b>-Objekts mit entsprechenden Werten best&uuml;ckt werden. Anschlie&szlig;end l&auml;sst sich mit dem Ausdruck <b>Err.Number = 0 <\/b>leicht ermitteln, ob bei der Ausf&uuml;hrung der Aktionsabfrage ein Fehler aufgetreten ist.<\/p>\n<p>Ist das nicht der Fall, sorgt die Methode <b>Commit <\/b>des <b>Workspace<\/b>-Objekts daf&uuml;r, dass die durch <b>Execute<\/b>-Anweisung verursachten &auml;nderungen gespeichert werden, anderenfalls kommt die <b>Rollback<\/b>-Methode zum Tragen und verwirft alle &auml;nderungen.<\/p>\n<p><b>Ohne CommitTrans kein Speichern<\/b><\/p>\n<p>Wenn der G&uuml;ltigkeitsbereich des <b>Workspace<\/b>-Objekts verlassen wird, ohne dass die Transaktion durch <b>CommitTrans <\/b>abgeschlossen wurde, werden die &auml;nderungen automatisch verworfen.<\/p>\n<p><b>Unterst&uuml;tzt ein Recordset Transaktionen<\/b><\/p>\n<p>Die meisten ODBC-Datenquellen unterst&uuml;tzen Transaktionen. Wenn Sie sich nicht sicher sind, ob die Daten, die in einer Transaktion ge&auml;ndert werden sollen, dies auch unterst&uuml;tzen, k&ouml;nnen Sie dies mit der Eigenschaft <b>Transactions <\/b>herausfinden. Mit einer Datensatzgruppe, auf die eine Objektvariable namens <b>rst <\/b>verweist, funktioniert das folgenderma&szlig;en:<\/p>\n<pre>Debug.Print rst.Properties(&quot;Transactions&quot;)<\/pre>\n<p><b>Schachtelung von Transaktionen<\/b><\/p>\n<p>Sie k&ouml;nnen Transaktionen auf bis zu f&uuml;nf Ebenen schachteln. Dabei m&uuml;ssen die von au&szlig;en nach innen gestartet und von innen nach au&szlig;en abgeschlossen werden. Sie k&ouml;nnen also auch die in einer Transaktion durchgef&uuml;hrten und abgeschlossenen Datenoperationen wieder r&uuml;ckg&auml;ngig machen, indem Sie diese in eine weitere Transaktion einschlie&szlig;en.<\/p>\n<p><b>Unvorhergesehene Laufzeitfehler<\/b><\/p>\n<p>Falls Sie einmal auf einen Fehler treffen, den Sie nicht einordnen k&ouml;nnen, liegt es vielleicht daran, dass die Festplatte keinen Platz zum Anlegen der tempor&auml;ren Dateien mehr bietet. Die w&auml;hrend einer Transaktion anfallenden Daten werden in einer tempor&auml;ren Datei zwischengespeichert. Diese Datei befindet sich in dem in der Temp-Umgebungsvariablen angegebenen Verzeichnis.<\/p>\n<p><b>Explizite Transaktionen mit ADO<\/b><\/p>\n<p>Auch ADO bietet die M&ouml;glichkeit expliziter Transaktionen. Dabei gibt es rein &auml;u&szlig;erlich zwei Unterschiede:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Die Transaktion ist kein Bestandteil eines <b>Workspace<\/b>, sondern der aktuellen Verbindung (<b>Connection<\/b>).<\/li>\n<li class=\"aufz-hlung\">Die Methode zum Verwerfen der innerhalb der Transaktion durchgef&uuml;hrten Datenbankoperationen hei&szlig;t <b>RollbackTrans <\/b>und nicht wie unter DAO nur <b>Rollback<\/b>.<\/li>\n<\/ul>\n<p>Eine Transaktion unter ADO sieht wie in dem Beispiel aus <a href=\"#anker-20-anchor\">Listing 2<\/a> aus.<\/p>\n<p class=\"listingueberschrift\">Listing 2: Beispiel f&uuml;r eine Transaktion per ADO<\/p>\n<pre>Public Sub TransaktionMitADO()\r\n    Dim cnn As ADODB.Connection\r\n    Dim rst As ADODB.Recordset\r\n    Set cnn = CurrentProject.Connection\r\n    Set rst = New ADODB.Recordset\r\n    On Error GoTo TransaktionMitADO_Err\r\n    cnn.BeginTrans\r\n    rst.Open &quot;SELECT * FROM tblZahlen&quot;, cnn, adOpenDynamic, adLockOptimistic\r\n    Do While Not rst.EOF\r\n        rst!Zahl = rst!Zahl - 1\r\n        rst.Update\r\n        rst.MoveNext\r\n    Loop\r\n    cnn.CommitTrans\r\n    MsgBox &quot;OK&quot;\r\nTransaktionMitADO_Exit:\r\n    rst.Close\r\n    cnn.Close\r\n    Set rst = Nothing\r\n    Set cnn = Nothing\r\nExit Sub\r\nTransaktionMitADO_Err:\r\ncnn.RollbackTrans\r\nMsgBox &quot;Abgebrochen&quot;\r\nResume TransaktionMitADO_Exit\r\nEnd Sub<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Transaktionen sind in manchen F&auml;llen unverzichtbar &#8211; das beste Beispiel daf&uuml;r sind Operationen mit Bankkonten.<\/p>\n<p>Sie k&ouml;nnen aber auch f&uuml;r andere Zwecke eingesetzt werden &#8211; zum Beispiel zum komfortablen Einsatz von Formularen und Unterformularen, wie der Beitrag <b>Undo in Formularen mit Unterformular <\/b>zeigt (<b>www.access-im-unternehmen.de\/276<\/b>).<\/p>\n<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Transaktionen.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/04AAB5BE-A140-4496-8B41-022700F82859\/aiu_275.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Durchf&uuml;hrung von Aktualisierungen am Datenbestand wird umso fehleranf&auml;lliger, je mehr Schritten die jeweilige Aktion beinhaltet und je mehr Personen gleichzeitig auf den betroffenen Datenbestand oder Teilmengen davon zugreifen k&ouml;nnen. Transaktionen sind eine Technik, die in beiden F&auml;llen f&uuml;r Sicherheit sorgen und Inkonsistenzen vermeinden helfen.<\/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":[662005,66032005,44000021],"tags":[],"class_list":["post-55000275","post","type-post","status-publish","format-standard","hentry","category-662005","category-66032005","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>Transaktionen in Access - 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\/Transaktionen_in_Access\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Transaktionen in Access\" \/>\n<meta property=\"og:description\" content=\"Die Durchf&uuml;hrung von Aktualisierungen am Datenbestand wird umso fehleranf&auml;lliger, je mehr Schritten die jeweilige Aktion beinhaltet und je mehr Personen gleichzeitig auf den betroffenen Datenbestand oder Teilmengen davon zugreifen k&ouml;nnen. Transaktionen sind eine Technik, die in beiden F&auml;llen f&uuml;r Sicherheit sorgen und Inkonsistenzen vermeinden helfen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-22T16:17:27+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531\" \/>\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=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Transaktionen in Access\",\"datePublished\":\"2021-03-22T16:17:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/\"},\"wordCount\":1775,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e914b97f32044afd8e36b2952e412531\",\"articleSection\":[\"2005\",\"3\\\/2005\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/\",\"name\":\"Transaktionen in Access - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e914b97f32044afd8e36b2952e412531\",\"datePublished\":\"2021-03-22T16:17:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e914b97f32044afd8e36b2952e412531\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e914b97f32044afd8e36b2952e412531\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Transaktionen_in_Access\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Transaktionen in Access\"}]},{\"@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":"Transaktionen in Access - 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\/Transaktionen_in_Access\/","og_locale":"de_DE","og_type":"article","og_title":"Transaktionen in Access","og_description":"Die Durchf&uuml;hrung von Aktualisierungen am Datenbestand wird umso fehleranf&auml;lliger, je mehr Schritten die jeweilige Aktion beinhaltet und je mehr Personen gleichzeitig auf den betroffenen Datenbestand oder Teilmengen davon zugreifen k&ouml;nnen. Transaktionen sind eine Technik, die in beiden F&auml;llen f&uuml;r Sicherheit sorgen und Inkonsistenzen vermeinden helfen.","og_url":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-03-22T16:17:27+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Transaktionen in Access","datePublished":"2021-03-22T16:17:27+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/"},"wordCount":1775,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531","articleSection":["2005","3\/2005","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/","url":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/","name":"Transaktionen in Access - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531","datePublished":"2021-03-22T16:17:27+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/e914b97f32044afd8e36b2952e412531"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Transaktionen_in_Access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Transaktionen in Access"}]},{"@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\/55000275","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=55000275"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000275\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}