{"id":55001195,"date":"2019-06-01T00:00:00","date_gmt":"2020-05-13T20:55:18","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1195"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Neuer_Datensatz_von_Frontend_zu_Backend","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/","title":{"rendered":"Neuer Datensatz von Frontend zu Backend"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>F&uuml;r manche Themen gibt es keine kurze, pr&auml;gnante &Uuml;berschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer tempor&auml;ren Tabelle im Frontend gespeichert wird, bis er fertiggestellt ist. Erst danach soll er in einem Rutsch in die entsprechende Tabelle im Backend kopiert werden. Dadurch wollen wir verhindern, dass die Verbindung unn&ouml;tig lange offen gehalten wird, was beim Zugriff vieler Benutzer gleichzeitig die Performance beeinflussen kann.<\/b><\/p>\n<h2>Beispiel vorbereiten<\/h2>\n<p>Wir ben&ouml;tigen ein Frontend und ein Backend, wobei wir uns die Arbeit vereinfachen wollen. Also erstellen wir zun&auml;chst das Frontend namens <b>NeuerDSFE.accdb <\/b>(mit <b>FE <\/b>f&uuml;r Frontend) und f&uuml;gen dieser eine Tabelle namens <b>tblVorlagen <\/b>hinzu. Die Tabelle enth&auml;lt die drei Felder aus Bild 1. Danach schlie&szlig;en wir die Datenbank und kopieren diese, wobei die neue Datenbank den Namen <b>NeuerDSBE.accdb <\/b>erhalten soll (mit <b>BE <\/b>f&uuml;r Backend).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_001.png\" alt=\"Die Tabelle tblVorgaenge in der Entwurfsansicht\" width=\"499,6607\" height=\"367,2094\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Die Tabelle tblVorgaenge in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Danach &auml;ndern wir den Namen der Tabelle <b>tblVorgaenge <\/b>in <b>tblVorgaengeTemp<\/b>. Au&szlig;erdem erstellen wir eine Verkn&uuml;pfung zur Tabelle <b>tblVorgaenge <\/b>der neuen Backend-Datenbank. Dazu rufen wir den Ribbon-Befehl <b>Externe Daten|Importieren und Verkn&uuml;pfen|Neue Datenquelle|Aus Datenbank|Access <\/b>auf (siehe Bild 2). Die folgenden Schritte sind selbsterkl&auml;rend: Im Dialog <b>Externe Daten &#8211; Access-Datenbank <\/b>w&auml;hlen Sie &uuml;ber die <b>Durchsuchen<\/b>-Schaltfl&auml;che die Backend-Datenbank aus und selektieren die Option zum Erstellen einer Verkn&uuml;pfung.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_002.png\" alt=\"Hinzuf&uuml;gen einer Verkn&uuml;pfung\" width=\"424,7115\" height=\"408,1136\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Hinzuf&uuml;gen einer Verkn&uuml;pfung<\/span><\/b><\/p>\n<p>Im danach erscheinenden Dialog <b>Tabellen verkn&uuml;pfen <\/b>w&auml;hlen Sie die Tabelle <b>tblVorgaenge <\/b>aus und klicken auf <b>OK<\/b>.<\/p>\n<p>Die Tabelle wird nun verkn&uuml;pft und erscheint wie in Bild 3 im Navigationsbereich der Frontend-Anwendung.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_003.png\" alt=\"Die tempor&auml;re und die verkn&uuml;pfte Tabelle\" width=\"424,7115\" height=\"270,4782\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Die tempor&auml;re und die verkn&uuml;pfte Tabelle<\/span><\/b><\/p>\n<p>Wenn Sie nun die eingebundene Tabelle <b>tblVorgaenge <\/b>&ouml;ffnen und den Windows Explorer dabei beobachten, stellen Sie fest, dass die Backend-Datenbank die ganze Zeit als ge&ouml;ffnet markiert wird. Das erkennen Sie daran, dass neben der Datei mit der Endung <b>.accdb <\/b>auch noch eine Datei mit der Endung <b>.laccdb <\/b>erscheint (siehe Bild 4). Damit ist eine Verbindung zu dieser Datei hergestellt, was Vor- und Nachteile haben kann. Wenn das Frontend etwa viel mit dem Backend kommunizieren soll, macht es sogar Sinn, die Verbindung offenzuhalten. Das k&ouml;nnte man beispielsweise erreichen, wenn man beim Starten der Datenbank ein Formular &ouml;ffnet, das an eine Tabelle des Backends gebunden ist und dieses dann ausblendet. Das Formular ist dann weiterhin ge&ouml;ffnet und h&auml;lt die Verbindung aufrecht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_004.png\" alt=\"Das ge&ouml;ffnete Backend\" width=\"499,6607\" height=\"335,8375\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Das ge&ouml;ffnete Backend<\/span><\/b><\/p>\n<p>Im Gegensatz dazu steht die Konstellation, dass viele Benutzer gleichzeitig mit ihrem Frontend auf die Backend-Datenbank zugreifen wollen. In diesem Fall sollte man die Anzahl der Verbindungen zum Backend eher gering halten.<\/p>\n<p>Und hier greift die hier vorgestellte L&ouml;sung, bei der wir davon ausgehen, dass die Benutzer nicht l&auml;ngere Zeit mit den Daten der Backend-Datenbank arbeiten, sondern nur Datens&auml;tze anlegen und diese im Backend speichern wollen. Normalerweise w&uuml;rde man in einem Formular, das an die Tabelle <b>tblVorgaenge <\/b>im Backend gebunden ist, einen neuen Datensatz anlegen, die Daten eingeben und den Datensatz dann speichern. Das Problem ist nur: Auch hier wird die Verbindung vom Zeitpunkt des &Ouml;ffnens des Formulars bis zum Schlie&szlig;en des Formulars aufrechterhalten. Das hei&szlig;t, wenn der Benutzer seinen Datensatz angelegt hat und das Formular nicht schlie&szlig;t, bleibt die Verbindung bestehen. Das wollen wir verhindern.<\/p>\n<h2>Die L&ouml;sung: Tempor&auml;re Datens&auml;tze<\/h2>\n<p>Also legen wir eine tempor&auml;re Tabelle im Frontend an, was wir ja eingangs bereits gemacht haben, indem wir die Tabelle <b>tblVorgaenge <\/b>in <b>tblVorgaengeTemp <\/b>umbenannt haben. Der Tabelle <b>tblVorgaengeTemp <\/b>f&uuml;gen wir noch ein weiteres Feld namens <b>InBackendUebertragen <\/b>hinzu, in dem wir den Zeitpunkt speichern wollen, an dem der Datensatz in die Tabelle <b>tblVorgaenge <\/b>des Backends &uuml;bertragen wurde (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_005.png\" alt=\"Neues Feld in der Tabelle tblVorgaengeTemp\" width=\"424,7115\" height=\"319,6592\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Neues Feld in der Tabelle tblVorgaengeTemp<\/span><\/b><\/p>\n<p>Wir erstellen ein neues Formular namens <b>frmVorgaenge<\/b>, das wir &uuml;ber die Eigenschaft <b>Datensatzquelle <\/b>an die Tabelle <b>tblVorgaengeTemp <\/b>binden. Das Formular sieht in der Entwurfsansicht wie in Bild 6 aus. Es zeigt alle vier Felder der Tabelle <b>tblVorgaengeTemp <\/b>an, wobei der Benutzer das Feld <b>InBackendUebertragen <\/b>nicht bearbeiten k&ouml;nnen soll. Daher stellen wir seine Eigenschaft <b>Aktiviert <\/b>auf <b>Nein<\/b>, <b>Gesperrt <\/b>auf <b>Ja <\/b>und <b>Rahmen <\/b>auf <b>Transparent <\/b>ein.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_006.png\" alt=\"Das Formular frmVorgaenge in der Entwurfsansicht\" width=\"424,7115\" height=\"267,9915\"\/><\/p>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Das Formular frmVorgaenge in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Au&szlig;erdem f&uuml;gen wir dem Formular eine Schaltfl&auml;che namens <b>cmdInBackendUebertragen <\/b>hinzu, mit der der Benutzer den Datensatz nach dem Bearbeiten zum Backend kopieren kann.<\/p>\n<p>Damit das Formular direkt beim Start einen neuen, leeren Datensatz anzeigt, hinterlegen wir f&uuml;r die Ereigniseigenschaft <b>Beim Laden <\/b>die folgende Ereignisprozedur:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     DoCmd.GoToRecord Record:=acNewRec\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die einzige Anweisung dieser Prozedur sorgt daf&uuml;r, dass das Formular einen neuen, leeren Datensatz anzeigt. Wenn das Formular von einem anderen Formular aus ge&ouml;ffnet wird oder &uuml;ber einen Ribbon-Eintrag, k&ouml;nnen Sie die Anzeige des neuen, leeren Datensatzes auch als Parameter in die <b>DoCmd.OpenForm<\/b>-Methode integrieren:<\/p>\n<pre>DoCmd.OpenForm \"frmVorgaenge\", DataMode:=acFormAdd<\/pre>\n<p>Verwenden Sie letztere M&ouml;glichkeit, erscheint das Formular und zeigt nur einen leeren, neuen Datensatz an und bietet nicht die M&ouml;glichkeit, die anderen Datens&auml;tze einzusehen (siehe Bild 7). Wenn Sie es per Doppelklick auf den Eintrag im Navigationsbereich &ouml;ffnen, zeigt es alle Datens&auml;tze an und der Datensatzzeiger wird auf einen leeren, neuen Datensatz verschoben. Sinnvoller ist es in diesem Fall, das Formular nur zum Anzeigen eines neuen, leeren Datensatzes zu &ouml;ffnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_007.png\" alt=\"Das Formular frmVorgaenge mit einem leeren, neuen Datensatz\" width=\"424,7115\" height=\"229,1428\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Das Formular frmVorgaenge mit einem leeren, neuen Datensatz<\/span><\/b><\/p>\n<h2>Schaltfl&auml;che aktivieren und deaktivieren<\/h2>\n<p>Die Schaltfl&auml;che <b>cmdInBackendUebertragen <\/b>soll nur f&uuml;r Datens&auml;tze aktiviert werden, die noch nicht in das Backend &uuml;bertragen wurden. Also pr&uuml;fen wir das in einer Prozedur namens <b>SchaltflaechenAktivieren<\/b>, die wie folgt aussieht:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>SchaltflaechenAktivieren()\r\n     <span style=\"color:blue;\">If <\/span>IsNull(Me!InBackendUebertragen)<span style=\"color:blue;\"> Then<\/span>\r\n         Me!cmdInBackendUebertragen.Enabled = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         Me!cmdInBackendUebertragen.Enabled = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur pr&uuml;ft, ob das Feld <b>InBackendUebertragen <\/b>den Wert <b>Null <\/b>enth&auml;lt. Ist dies der Fall, wird die Schaltfl&auml;che <b>cmdInBackendUebertragen <\/b>aktiviert, anderenfalls wird sie deaktiviert. Das k&ouml;nnen wir auch k&uuml;rzer fassen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>SchaltflaechenAktivieren()\r\n     Me!cmdInBackendUebertragen.Enabled =  IsNull(Me!InBackendUebertragen)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Nun ben&ouml;tigen wir noch ein Ereignis, das beim Anzeigen eines Datensatzes ausgel&ouml;st wird und mit der wir die Prozedur <b>SchaltflaechenAktivieren <\/b>aufrufen. Dazu nutzen wir das Ereignis <b>Beim Anzeigen<\/b>, f&uuml;r das wir die folgende Ereignisprozedur hinterlegen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n     SchaltflaechenAktivieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Und schlie&szlig;lich ben&ouml;tigen wir noch die Prozedur, die nach einem Mausklick auf die Schaltfl&auml;che <b>cmdInBackendUebertragen <\/b>ausgel&ouml;st wird. Diese finden Sie in Listing 1. Diese Prozedur speichert zun&auml;chst die &Auml;nderungen am aktuellen Datensatz, indem sie die Eigenschaft <b>Me.Dirty <\/b>auf den Wert <b>False <\/b>setzt (<b>Me.Dirty <\/b>wird auf <b>True <\/b>gesetzt, sobald der Benutzer den Datensatz bearbeitet). Dann f&uuml;hrt die Prozedur eine <b>INSERT INTO<\/b>-Anweisung aus, welche die Inhalte der beiden Felder <b>Titel <\/b>und <b>Beschreibung <\/b>des aktuellen Datensatzes aus der Tabelle <b>tblVorgaengeTemp <\/b>des Frontends in die Tabelle <b>tblVorgaenge <\/b>des Backends schreibt. Sie pr&uuml;ft anschlie&szlig;end mit der Eigenschaft <b>RecordsAffected<\/b>, wie viele Datens&auml;tze von dieser Aktionsabfrage betroffen waren. Liefert diese den Wert <b>1<\/b>, was zu erwarten ist, stellt sie den Wert des Feldes <b>InBackendUebertragen <\/b>auf das aktuelle Datum samt Uhrzeit ein und speichert die &Auml;nderungen. Au&szlig;erdem ruft es die Prozedur <b>SchaltflaechenAktivieren <\/b>auf und sorgt so f&uuml;r die Deaktivierung der Schaltfl&auml;che <b>cmdInBackendUebertragen<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdInBackendUebertragen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     Me.Dirty = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     db.Execute \"INSERT INTO tblVorgaenge(Titel, Beschreibung) SELECT Titel, Beschreibung FROM tblVorgaengeTemp \" _\r\n         & \"WHERE VorgangID = \" & Me!VorgangID & \" AND InBackendUebertragen IS NULL\", dbFailOnError\r\n     <span style=\"color:blue;\">If <\/span>db.RecordsAffected = 1<span style=\"color:blue;\"> Then<\/span>\r\n         Me!InBackendUebertragen = Now\r\n         Me.Dirty = <span style=\"color:blue;\">False<\/span>\r\n         SchaltflaechenAktivieren\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: &Uuml;bertragen eines Datensatzes in das Backend<\/span><\/b><\/p>\n<p>Das Formular sieht dann wie in Bild 8 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2019_03\/pic_1195_008.png\" alt=\"Das Formular frmVorgaenge nach dem &Uuml;bertragen des neuen Datensatzes\" width=\"424,7115\" height=\"229,1428\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Das Formular frmVorgaenge nach dem &Uuml;bertragen des neuen Datensatzes<\/span><\/b><\/p>\n<h2>Test der Verbindung<\/h2>\n<p>Sie k&ouml;nnen die Datenbank nun einmal neben dem Windows Explorer platzieren, der die Frontend- und die Backenddatei anzeigt. Wenn Sie dann einen neuen Datensatz mit dem Formular <b>frmVorgaenge <\/b>anlegen und auf die Schaltfl&auml;che zum &Uuml;bertragen des Datensatzes in das Backend klicken, werden Sie feststellen, dass die Datei <b>NeuerDSBE.laccdb <\/b>noch nicht einmal kurz aufblinkt. M&ouml;glicherweise sehen Sie diese Datei kurz, wenn der Datensatz wesentlich gr&ouml;&szlig;ere Datenmengen enth&auml;lt. Tatsache ist, dass die Verbindung hier nur sehr kurz hergestellt wird.<\/p>\n<p>Die Daten werden jedenfalls, wovon wir uns durch das &Ouml;ffnen der verkn&uuml;pften Datenbank <b>tblVorgaenge <\/b>&uuml;berzeugen k&ouml;nnen, in die Zieldatenbank geschrieben. Und beim &Ouml;ffnen der verkn&uuml;pften Tabelle <b>tblVorgaenge <\/b>erscheint dann nat&uuml;rlich auch wieder die <b>.laccdb<\/b>-Datei der Backend-Datenbank.<\/p>\n<h2>&Uuml;bertragen ohne Verkn&uuml;pfung<\/h2>\n<p>Vielleicht fragen Sie sich, ob diese Technik auch anwendbar ist, wenn die Frontend-Datenbank keine Verkn&uuml;pfung zu der Zieltabelle im Backend enth&auml;lt. Ja, auch das ist m&ouml;glich. Dazu f&uuml;gen wir dem Formular eine weitere Schaltfl&auml;che hinzu, welche die Prozedur aus Listing 2 ausl&ouml;st. Zu Demonstrationszwecken haben wir die Variable, welche das <b>Database<\/b>-Objekt der Backend-Datenbank referenziert, einmal modulweit im Klassenmodul des Formulars deklariert:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdInBackendUebertragenOhneVerknuepfung_Click()\r\n     Me.Dirty = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> dbBackend = OpenDatabase(CurrentProject.Path & \"NeuerDSBE.accdb\")\r\n     dbBackend.Execute \"INSERT INTO tblVorgaenge(Titel, Beschreibung) VALUES(''\" & Me!Titel & \"'', ''\" & Me!Beschreibung _\r\n         & \"'')\", dbFailOnError\r\n     <span style=\"color:blue;\">If <\/span>dbBackend.RecordsAffected = 1<span style=\"color:blue;\"> Then<\/span>\r\n         Me!InBackendUebertragen = Now\r\n         Me.Dirty = <span style=\"color:blue;\">False<\/span>\r\n         SchaltflaechenAktivieren\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: &Uuml;bertragen eines Datensatzes in das Backend ohne Verkn&uuml;pfung<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>dbBackend<span style=\"color:blue;\"> As <\/span>DAO.Database<\/pre>\n<p>Wenn wir nun die Prozedur starten, erstellt diese einen Verweis auf das <b>Database<\/b>-Objekt der Backend-Datenbank. Diese verwendet sie, um die <b>Execute<\/b>-Anweisung mit der <b>INSERT INTO<\/b>-Abfrage aufzurufen. Die <b>INSERT INTO<\/b>-Anweisung bezieht die zu &uuml;bertragenden Werte diesmal direkt aus den Textfeldern. Die folgenden Schritte entsprechen denen des ersten Beispiels. Die Prozedur liefert das gleiche Ergebnis, aber wenn Sie sich den Windows Explorer anschauen, finden Sie wieder die <b>.laccdb<\/b>-Datei f&uuml;r das Backend vor.<\/p>\n<p>Der Grund daf&uuml;r, dass die Verbindung nicht geschlossen wird, ist die modulweit deklarierte Variable <b>dbBackend<\/b>. Solange das Formular nicht geschlossen wird, existiert auch die Verbindung. Um die Verbindung direkt wieder zu kappen, verschieben Sie entweder die Deklaration von <b>dbBackend <\/b>in die Prozedur oder Sie leeren <b>dbBackend <\/b>dort explizit:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> dbBackend = Nothing<\/pre>\n<p>Damit blinkt die <b>.laccdb<\/b>-Datei noch nicht einmal im Windows Explorer auf.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>NeuerDSBE.accdb<\/p>\n<p>NeuerDSFE.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/E9D3AC3C-70CD-4F62-9940-6A41F87D45BE\/aiu_1195.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>F&uuml;r manche Themen gibt es keine kurze, pr&auml;gnante &Uuml;berschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer tempor&auml;ren Tabelle im Frontend gespeichert wird, bis er fertiggestellt ist. Erst danach soll er in einem Rutsch in die entsprechende Tabelle im Backend kopiert werden. Dadurch wollen wir verhindern, dass die Verbindung unn&ouml;tig lange offen gehalten wird, was beim Zugriff vieler Benutzer gleichzeitig die Perfomance beeinflussen kann.<\/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":[662019,66032019,44000027],"tags":[],"class_list":["post-55001195","post","type-post","status-publish","format-standard","hentry","category-662019","category-66032019","category-Loesungen"],"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>Neuer Datensatz von Frontend zu Backend - 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\/Neuer_Datensatz_von_Frontend_zu_Backend\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Neuer Datensatz von Frontend zu Backend\" \/>\n<meta property=\"og:description\" content=\"F&uuml;r manche Themen gibt es keine kurze, pr&auml;gnante &Uuml;berschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer tempor&auml;ren Tabelle im Frontend gespeichert wird, bis er fertiggestellt ist. Erst danach soll er in einem Rutsch in die entsprechende Tabelle im Backend kopiert werden. Dadurch wollen wir verhindern, dass die Verbindung unn&ouml;tig lange offen gehalten wird, was beim Zugriff vieler Benutzer gleichzeitig die Perfomance beeinflussen kann.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T20:55:18+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0\" \/>\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=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Neuer Datensatz von Frontend zu Backend\",\"datePublished\":\"2020-05-13T20:55:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/\"},\"wordCount\":1639,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/2a0f14f215584c1db0082e76950867a0\",\"articleSection\":[\"2019\",\"3\\\/2019\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/\",\"name\":\"Neuer Datensatz von Frontend zu Backend - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/2a0f14f215584c1db0082e76950867a0\",\"datePublished\":\"2020-05-13T20:55:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/2a0f14f215584c1db0082e76950867a0\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/2a0f14f215584c1db0082e76950867a0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neuer_Datensatz_von_Frontend_zu_Backend\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Neuer Datensatz von Frontend zu Backend\"}]},{\"@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":"Neuer Datensatz von Frontend zu Backend - 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\/Neuer_Datensatz_von_Frontend_zu_Backend\/","og_locale":"de_DE","og_type":"article","og_title":"Neuer Datensatz von Frontend zu Backend","og_description":"F&uuml;r manche Themen gibt es keine kurze, pr&auml;gnante &Uuml;berschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer tempor&auml;ren Tabelle im Frontend gespeichert wird, bis er fertiggestellt ist. Erst danach soll er in einem Rutsch in die entsprechende Tabelle im Backend kopiert werden. Dadurch wollen wir verhindern, dass die Verbindung unn&ouml;tig lange offen gehalten wird, was beim Zugriff vieler Benutzer gleichzeitig die Perfomance beeinflussen kann.","og_url":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T20:55:18+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Neuer Datensatz von Frontend zu Backend","datePublished":"2020-05-13T20:55:18+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/"},"wordCount":1639,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0","articleSection":["2019","3\/2019","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/","url":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/","name":"Neuer Datensatz von Frontend zu Backend - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0","datePublished":"2020-05-13T20:55:18+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/2a0f14f215584c1db0082e76950867a0"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Neuer_Datensatz_von_Frontend_zu_Backend\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Neuer Datensatz von Frontend zu Backend"}]},{"@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\/55001195","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=55001195"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001195\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}