{"id":55000711,"date":"2010-04-01T00:00:00","date_gmt":"2020-05-22T22:11:48","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=711"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Temporaere_Datensatzgruppen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/","title":{"rendered":"Tempor&auml;re Datensatzgruppen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Als Access&#8220;ler sind Sie es gewohnt, Daten in strukturierter Form in Tabellen zu speichern. Manchmal braucht man diese Daten aber nur ganz kurz, beispielsweise um diese aus einer Textdatei, einem XML-Dokument oder aus anderen Quellen einzulesen und sie zu sortieren oder zu filtern oder in einem Formular anzuzeigen. Daf&uuml;r extra eine Tabelle zu erstellen, w&auml;re in vielen F&auml;llen &uuml;bertrieben. Abhilfe schafft eine tempor&auml;re Datensatzgruppe (temporary recordset), die Sie leicht per ADO erstellen, f&uuml;llen und wieder entsorgen.<\/b><\/p>\n<p><b>Wozu tempor&auml;re Datensatzgruppen<\/b><\/p>\n<p>F&uuml;r den Einsatz einer tempor&auml;ren Datensatzgruppe kommen alle Situationen infrage, bei denen Daten zwar nicht dauerhaft gespeichert werden, aber in strukturierter Form vorliegen m&uuml;ssen. Die hier vorliegende Struktur ist ein Recordset, das beliebig viele Daten enthalten kann und die &uuml;blichen Vorteile des Recordset-Objekts bietet:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Filtern und sortieren der enthaltenen Daten<\/li>\n<li class=\"aufz-hlung\">Anzeige der Daten in Formularen oder Berichten<\/li>\n<li class=\"aufz-hlung\">Anzeige der Daten in Steuerelementen wie Kombinations- oder Listenfeldern<\/li>\n<\/ul>\n<p>Recordsets auf Basis bestehender Tabellen oder Abfragen k&ouml;nnen die beiden Bibliotheken f&uuml;r den Datenzugriff, DAO und ADODB, erstellen. Tempor&auml;re Recordsets erzeugen Sie aber nur mit ADODB, DAO bietet diese M&ouml;glichkeit nicht. W&auml;hrend laut aktuellem Stand DAO die bevorzugte Datenzugriffstechnik f&uuml;r Access-Anwendungen ist, hat ADODB wegen einiger spezieller Funktionen durchaus noch eine Daseinsberechtigung. Neben den hier vorgestellten tempor&auml;ren Datensatzgruppen sind das die <b>Disconnected Recordsets <\/b>(siehe auch den gleichnamigen Beitrag unter <b>www.access-im-unternehmen.de\/437<\/b>).<\/p>\n<p><b>Datenquellen f&uuml;r tempor&auml;re Datensatzgruppen<\/b><\/p>\n<p>In vielen F&auml;llen soll eine Funktion einer Anwendung etwas mit externen Daten durchf&uuml;hren, die beispielsweise aus einer Excel-Datei, einer Textdatei oder einem XML-Dokument stammen. Sie k&ouml;nnen diese Daten dazu in einer tempor&auml;ren Tabelle speichern, in ein Array, ein Collection- oder ein Dictionary-Objekt f&uuml;llen oder auch eine tempor&auml;re Datensatzgruppe verwenden.<\/p>\n<p>Letztere hat gegen&uuml;ber der tempor&auml;ren Tabelle den Vorteil, dass Sie diese nicht extra anlegen m&uuml;ssen, au&szlig;erdem bl&auml;hen Sie mit einer tempor&auml;ren Datensatzgruppe die Datenbank nicht auf, wie es beim Anlegen, F&uuml;llen und L&ouml;schen einer tempor&auml;ren Tabelle der Fall ist. Gegen&uuml;ber dem Array, dem Dictionary oder der Collection (mehr zu diesen M&ouml;glichkeiten erfahren Sie im Beitrag <b>Arrays, Collections und Dictionaries<\/b>, <b>www.access-im-unternehmen.de\/640<\/b>) haben Sie den Vorteil, dass Sie komfortabel &uuml;ber die <b>Recordset<\/b>-Eigenschaften und -Methoden von ADODB auf die Daten zugreifen k&ouml;nnen.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Erstellen einer tempor&auml;ren Datensatzgruppe<\/p>\n<p>Das A und O beim Einsatz einer tempor&auml;ren Datensatzgruppe ist deren Erstellung. Dazu definieren Sie zun&auml;chst eine entsprechende Objektvariable (nachdem Sie sichergestellt haben, dass Ihr VBA-Projekt einen Verweis auf die <b>Microsoft ActiveX Data Objects 2.x Library<\/b> enth&auml;lt) und erzeugen das entsprechende Objekt:<\/p>\n<pre>Dim rst As ADODB.Recordset\r\nSet rst = New ADODB.Recordset<\/pre>\n<p>Danach k&ouml;nnen Sie schon mit dem Hinzuf&uuml;gen der Felder und ihrer Eigenschaften beginnen. Dazu verwenden Sie die <b>Append<\/b>-Anweisung der <b>Fields<\/b>-Auflistung des <b>Recordset<\/b>-Objekts, die folgende Parameter besitzt:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>Name<\/b>: Feldname<\/li>\n<li class=\"aufz-hlung\"><b>Type<\/b>: Felddatentyp<\/li>\n<li class=\"aufz-hlung\"><b>DefinedSize<\/b>: Feldgr&ouml;&szlig;e<\/li>\n<li class=\"aufz-hlung\"><b>Attrib<\/b>: zus&auml;tzliche Attribute f&uuml;r das Feld<\/li>\n<li class=\"aufz-hlung\"><b>FieldValue<\/b>: Wert des Feldes<\/li>\n<\/ul>\n<p>Den Feldnamen k&ouml;nnen Sie entsprechend der g&auml;ngigen Konventionen festlegen. F&uuml;r den Felddatentyp geben Sie eine der folgenden Konstanten an, die den Felddatentypen aus dem Tabellenentwurf entsprechen:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>Zahl (ReplikationID)<\/b>: <b>adGUID <\/b>(<b>72<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Zahl (Integer)<\/b>:<b> adSmallInt <\/b>(<b>2<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Zahl (LongInteger)<\/b>: <b>adInteger <\/b>(<b>3<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Zahl (Single)<\/b>: <b>adSingle <\/b>(<b>4<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Zahl (Double)<\/b>: <b>adDouble <\/b>(<b>5<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>W&auml;hrung<\/b>: <b>adCurrency <\/b>(<b>6<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Datum<\/b>: <b>adDate <\/b>(<b>7<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Ja\/Nein<\/b>: <b>adBoolean <\/b>(<b>11<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Zahl (Byte)<\/b>: <b>adUnsignedTinyInt <\/b>(<b>17<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Zahl (Dezimal)<\/b>: <b>adNumeric <\/b>(<b>131<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Text<\/b>: <b>adVarWChar <\/b>(<b>202<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Memo<\/b>: <b>adLongVarWChar <\/b>(<b>203<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>Hyperlink<\/b>: <b>adLongVarWChar <\/b>(<b>203<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>OLEObjekt<\/b>: <b>adLongVarBinary <\/b>(<b>205<\/b>)<\/li>\n<\/ul>\n<p>Diese Werte haben wir durch Anlegen von Feldern entsprechender Datentypen und Auslesen der Eigenschaft <b>Type <\/b>des <b>Field<\/b>-Objekts gewonnen. Der Parameter <b>DefinedSize <\/b>und somit die Feldgr&ouml;&szlig;e ben&ouml;tigten Sie nur f&uuml;r einige Felddatentypen wie etwa das Textfeld, wo Sie einen Wert bis maximal <b>255 <\/b>einstellen k&ouml;nnen. Unter <b>Attrib <\/b>geben Sie die Attribute der Enumeration <b>FieldAttributeEnum <\/b>ein, die aber in einem tempor&auml;ren Recordset keine Rolle spielen. Schlie&szlig;lich k&ouml;nnen Sie mit <b>FieldValue <\/b>gleich den Wert des Felds angeben. Dieses Feature ist interessant, wenn Sie nur einen Datensatz zum Recordset hinzuf&uuml;gen m&ouml;chten. Anderenfalls f&uuml;llen Sie das Recordset einfach im Anschluss an die Erstellung.<\/p>\n<p><!--30percent--><\/p>\n<p><b>Beispiel f&uuml;r eine tempor&auml;re Datensatzgruppe<\/b><\/p>\n<p>Als Beispiel soll der Inhalt einer einfachen Textdatei in eine tempor&auml;re Datensatzgruppe eingelesen werden. Die Textdatei sieht wie in Bild 1 aus und enth&auml;lt je Zeile einen Namen, dessen Bestandteile durch das Tabulatorzeichen voneinander getrennt sind.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/TemporaereDatensatzgruppen-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Diese Textdatei dient als Datenherkunft f&uuml;r die zu f&uuml;llende tempor&auml;re Datensatzgruppe.<\/span><\/b><\/p>\n<p>Die Funktion <b>NamenEinlesen<\/b> der Beispieldatenbank deklariert und erstellt zun&auml;chst wie oben beschrieben eine neue Datensatzgruppe. Au&szlig;erdem verwendet sie noch eine Variable namens <b>strPerson <\/b>zum Zwischenspeichern der Namen:<\/p>\n<pre>Dim strPerson As String<\/pre>\n<p>Die folgenden beiden Anweisungen f&uuml;gen der Datensatzgruppe <b>rst <\/b>die beiden Felder <b>Vorname <\/b>und <b>Nachname <\/b>hinzu, beide mit dem Datentyp <b>adLongVarWChar<\/b>, was dem Datentyp <b>Text <\/b>des Tabellenentwurfs entspricht:<\/p>\n<pre>With rst\r\n    rst.Fields.Append &quot;Vorname&quot;, _\r\n    adLongVarWChar, 255\r\n    rst.Fields.Append &quot;Nachname&quot;, _\r\n    adLongVarWChar, 255\r\nEnd With<\/pre>\n<p>Mit der <b>Open<\/b>-Methode erwecken wir die Datensatzgruppe zum Leben:<\/p>\n<pre>rst.Open<\/pre>\n<p>Zu beachten ist hier, dass wir Parameter wie die <b>Connection <\/b>gar nicht erst angeben &#8211; immerhin wollen wir ja mit einem tempor&auml;ren Recordset arbeiten.<\/p>\n<p><b>Daten in das Recordset schreiben<\/b><\/p>\n<p>Danach folgt der Teil zum Einlesen der Daten. Die <b>Open<\/b>-Methode &ouml;ffnet die Textdatei zum zeilenweisen Einlesen:<\/p>\n<pre>Open CurrentProject.Path &amp; &quot;\\Personen.txt&quot; _\r\nFor Input As #1<\/pre>\n<p>In einer <b>Do While<\/b>-Schleife liest die Funktion dann jeweils eine Zeile der Textdatei ein und speichert den Inhalt in der Variablen <b>strPerson <\/b>zwischen:<\/p>\n<pre>    Do While Not EOF(1)\r\n        Line Input #1, strPerson<\/pre>\n<p>Sie legt dann einen neuen Datensatz in der tempor&auml;ren Datensatzgruppe an:<\/p>\n<pre>        rst.AddNew<\/pre>\n<p>Die beiden Bestandteile des Namens ermittelt die Funktion durch Aufsplitten der Textzeile an der Stelle mit dem Tabulator-Zeichen und Auswahl des 0-ten (<b>Vorname<\/b>) und ersten Elements (<b>Nachname<\/b>):<\/p>\n<pre>        rst!Vorname = Split(strPerson, vbTab)(0)\r\n        rst!Nachname = Split(strPerson, vbTab)(1)<\/pre>\n<p>Schlie&szlig;lich speichert die <b>Update<\/b>-Methode die &auml;nderungen des Datensatzes und die <b>Loop<\/b>-Anweisung sorgt f&uuml;r den Sprung zur n&auml;chsten Zeile:<\/p>\n<pre>        rst.Update\r\n    Loop<\/pre>\n<p>Die Textdatei kann nun geschlossen werden:<\/p>\n<pre>    Close #1<\/pre>\n<p>Vor der &Uuml;bergabe der Datensatzgruppe an den R&uuml;ckgabewert der Funktion verschieben wir den Datensatzzeiger noch auf den ersten Datensatz:<\/p>\n<pre>    rst.MoveFirst<\/pre>\n<p>Schlie&szlig;lich weist die letzte Anweisung der Funktion dem R&uuml;ckgabewert das resultierende <b>Recordset<\/b>-Objekt zu:<\/p>\n<pre>    Public Function NamenEinlesen() As ADODB.Recordset\r\n        ''... wie oben beschrieben\r\n        Set NamenEinlesen = rst\r\n    End Function<\/pre>\n<p><b>Testen der tempor&auml;ren Datensatzgruppe<\/b><\/p>\n<p>Es steht noch der Test aus, ob die tempor&auml;re Datensatzgruppe tats&auml;chlich mit den gew&uuml;nschten Daten gef&uuml;llt ist. Dies erledigt die folgende Routine, die zun&auml;chst die Funktion <b>NamenEinlesen<\/b> aufruft, die Datens&auml;tze der ermittelten Recordsets durchl&auml;uft und die Werte der einzelnen Felder im Direktfenster ausgibt:<\/p>\n<pre>Public Sub Test_NameEinlesen()\r\n    Dim rst As ADODB.Recordset\r\n    Set rst = NamenEinlesen\r\n    Do While Not rst.EOF\r\n        Debug.Print rst!Vorname, rst!Nachname\r\n        rst.MoveNext\r\n    Loop\r\nEnd Sub<\/pre>\n<p><b>Tempor&auml;re Datensatzgruppen im Praxiseinsatz<\/b><\/p>\n<p>Fehlt nur noch der Nachweis des tats&auml;chlichen Nutzens der tempor&auml;ren Datensatzgruppe. Starten wir einen ersten Versuch, indem wir einem Formular den Ausdruck <b>=NamenEinlesen()<\/b> zum Ermitteln der Datensatzgruppe als Wert der Eigenschaft <b>Datenherkunft<\/b> zuweisen und dessen Inhalt in zwei gebundenen Textfeldern namens <b>txtVorname <\/b>und <b>txtNachname <\/b>ausgeben (der Eigenschaft <b>Steuerelementinhalt <\/b>der beiden Textfelder weisen Sie die Feldnamen des Recordsets zu, also <b>Vorname <\/b>und <b>Nachname<\/b>).<\/p>\n<p>Die Konfiguration aus Bild 2 funktioniert allerdings nicht: Access meckert, weil die angegebene Datensatzquelle nicht vorhanden sei. Letztlich war dieses Verhalten zu erwarten: Immerhin liefert die Funktion ein <b>Recordset<\/b>-Objekt zur&uuml;ck, was nicht gerade dem erwarteten Datentyp der Eigenschaft <b>Datenherkunft <\/b>entspricht. Diese rechnet eher mit der Angabe des Namens einer Tabelle oder Abfrage oder einem SQL-Ausdruck. Also verwenden wir die seit Access 2002 verf&uuml;gbare <b>Recordset<\/b>-Eigenschaft, die allerdings nur per VBA gef&uuml;llt werden kann. Dies erledigen wir in der Ereignisprozedur, die beim &Ouml;ffnen des Formulars ausgel&ouml;st wird:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/TemporaereDatensatzgruppen-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Das F&uuml;llen der Datenherkunft eines Formulars mit einer Funktion l&auml;uft nicht.<\/span><\/b><\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    Set Me.Recordset = NamenEinlesen\r\nEnd Sub<\/pre>\n<p>Und siehe da: Das Formular zeigt, hier in der Datenblattansicht, alle aus der Textdatei eingelesenen Daten an (siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/TemporaereDatensatzgruppen-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Das F&uuml;llen des Formulars war erfolgreich.<\/span><\/b><\/p>\n<p><b>Kombinations- und Listenfelder f&uuml;llen<\/b><\/p>\n<p>Nat&uuml;rlich k&ouml;nnen Sie auch Kombinations- und Listenfelder mit den Daten einer tempor&auml;ren Datensatzgruppe best&uuml;cken &#8211; Sie brauchen dieses einfach nur der Eigenschaft <b>Recordset <\/b>zuzuweisen und die Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>entsprechend einzustellen.<\/p>\n<p>Doch dann offenbart sich wieder einmal der Unterschied zwischen Theorie und Praxis: Obwohl wir die Einstellungen am Listenfeld nach bestem Wissen und Gewissen vorgenommen haben und die Funktion zum Ermitteln des tempor&auml;ren Recordsets nachgewiesenerma&szlig;en ihren Dienst tut, zeigt die Konfiguration aus Bild 4 in der Formularansicht keine Daten an. Die Prozedur zum Zuweisen des Recordsets scheint auch fehlerfrei zu sein, denn immerhin zeigt das Listenfeld vier Zeilen an &#8211; die allerdings leer sind.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/TemporaereDatensatzgruppen-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Auch diese Konfiguration funktioniert nicht auf Anhieb.<\/span><\/b><\/p>\n<p>Der Teufel steckt hier im Detail: Das Listenfeld kann die tempor&auml;ren Daten aus dem Recordset nicht richtig auswerten, weil der <b>LockType <\/b>standardm&auml;&szlig;ig auf <b>adLockBatchOptimistic <\/b>eingestellt wird, das hei&szlig;t, dass &auml;nderungen am Recordset erst nach dem Aufrufen der Methode <b>UpdateBatch <\/b>gespeichert werden. Diesen Aufruf k&ouml;nnen Sie an die <b>Do While<\/b>-Schleife zum F&uuml;llen des Recordsets in der Funktion <b>NamenEinlesen <\/b>anf&uuml;gen:<\/p>\n<pre>rst.UpdateBatch<\/pre>\n<p>Da Sie aber m&ouml;glicherweise weitere Daten zum Recordset hinzuf&uuml;gen m&ouml;chten, sollten Sie von vornherein daf&uuml;r sorgen, dass &auml;nderungen gleichzeitig gespeichert werden. Dazu stellen Sie die Eigenschaft <b>LockType <\/b>des Recordsets vor dem &Ouml;ffnen entweder auf <b>adLockOptimistic <\/b>oder <b>adLockPessimistic <\/b>ein:<\/p>\n<pre>Public Function NamenEinlesen() As ADODB.Recordset\r\n    Set rst = New ADODB.Recordset\r\n    rst.LockType = adLockOptimistic\r\n    ''...\r\nEnd Function<\/pre>\n<p>Damit funktioniert schlie&szlig;lich auch das F&uuml;llen eines Listenfelds, wie Bild 5 zeigt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/TemporaereDatensatzgruppen-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Ein per Recordset gef&uuml;lltes Listenfeld<\/span><\/b><\/p>\n<p><b>Sortieren und filtern<\/b><\/p>\n<p>Wir wollen die Daten des Recordsets nicht nur in Formularen, Berichten und Steuerelementen anzeigen, sondern diese auch sortieren oder filtern. Dies ist ein gro&szlig;er Vorteil etwa gegen&uuml;ber einem Array &#8211; Sie brauchen keinen Code zu produzieren, der die Eintr&auml;ge des Arrays etwa alphabetisch nach der ersten Spalte sortiert. Stattdessen verwenden Sie einfach die entsprechenden ADODB-Methoden. Die folgende Prozedur liest ein Recordset mit der Funktion <b>NamenEinlesen <\/b>ein, sortiert diese aufsteigend nach den Nachnamen und gibt sie im Direktfenster aus:<\/p>\n<pre>Public Sub NamenSortieren()\r\n    Dim rst As ADODB.Recordset\r\n    Set rst = NamenEinlesen\r\n    rst.Sort = &quot;Nachname&quot;\r\n    Do While Not rst.EOF\r\n         Debug.Print rst!Vorname, rst!Nachname\r\n        rst.MoveNext\r\n    Loop\r\nEnd Sub<\/pre>\n<p>Das Filtern eines Recordsets nach bestimmten Kriterien gelingt auf &auml;hnliche Weise:<\/p>\n<pre>rst.Filter = _\r\n&quot;Vorname LIKE ''A*'' AND Nachname LIKE ''M*''&quot;<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Beispiele f&uuml;r diese sehr n&uuml;tzliche Technik finden Sie in den beiden Beitr&auml;gen <b>Individuelle Datensatzauswahl <\/b>(<b>www.access-im-unternehmen.de\/708<\/b>) und <b>Twittern mit Access <\/b>(<b>www.access-im-unternehmen\/715<\/b>).<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>TemporaereDatensatzgruppen.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{7A626110-CF9D-47C2-AC2B-82F6BF4555B7}\/aiu_711.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als Access&#8217;ler sind Sie es gewohnt, Daten in strukturierter Form in Tabellen zu speichern. Manchmal braucht man diese Daten aber nur ganz kurz, beispielsweise um diese aus einer Textdatei, einem XML-Dokument oder aus anderen Quellen einzulesen und sie zu sortieren oder zu filtern  oder in einem Formular anzuzeigen. Daf&uuml;r extra eine Tabelle zu erstellen, w&auml;re in vielen F&auml;llen &uuml;bertrieben. Abhilfe schafft eine tempor&auml;re Datensatzgruppe (temporary recordset), die Sie leicht per ADO erstellen, f&uuml;llen und wieder entsorgen.<\/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":[66022010,662010,44000021],"tags":[],"class_list":["post-55000711","post","type-post","status-publish","format-standard","hentry","category-66022010","category-662010","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Tempor&auml;re Datensatzgruppen - 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\/Temporaere_Datensatzgruppen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tempor&auml;re Datensatzgruppen\" \/>\n<meta property=\"og:description\" content=\"Als Access&#039;ler sind Sie es gewohnt, Daten in strukturierter Form in Tabellen zu speichern. Manchmal braucht man diese Daten aber nur ganz kurz, beispielsweise um diese aus einer Textdatei, einem XML-Dokument oder aus anderen Quellen einzulesen und sie zu sortieren oder zu filtern oder in einem Formular anzuzeigen. Daf&uuml;r extra eine Tabelle zu erstellen, w&auml;re in vielen F&auml;llen &uuml;bertrieben. Abhilfe schafft eine tempor&auml;re Datensatzgruppe (temporary recordset), die Sie leicht per ADO erstellen, f&uuml;llen und wieder entsorgen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:11:48+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5\" \/>\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\\\/Temporaere_Datensatzgruppen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Tempor&auml;re Datensatzgruppen\",\"datePublished\":\"2020-05-22T22:11:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/\"},\"wordCount\":1726,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/058aa91fe2ef4f0cba3dab3176d3a8a5\",\"articleSection\":[\"2\\\/2010\",\"2010\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/\",\"name\":\"Tempor&auml;re Datensatzgruppen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/058aa91fe2ef4f0cba3dab3176d3a8a5\",\"datePublished\":\"2020-05-22T22:11:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/058aa91fe2ef4f0cba3dab3176d3a8a5\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/058aa91fe2ef4f0cba3dab3176d3a8a5\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datensatzgruppen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tempor&auml;re Datensatzgruppen\"}]},{\"@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":"Tempor&auml;re Datensatzgruppen - 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\/Temporaere_Datensatzgruppen\/","og_locale":"de_DE","og_type":"article","og_title":"Tempor&auml;re Datensatzgruppen","og_description":"Als Access'ler sind Sie es gewohnt, Daten in strukturierter Form in Tabellen zu speichern. Manchmal braucht man diese Daten aber nur ganz kurz, beispielsweise um diese aus einer Textdatei, einem XML-Dokument oder aus anderen Quellen einzulesen und sie zu sortieren oder zu filtern oder in einem Formular anzuzeigen. Daf&uuml;r extra eine Tabelle zu erstellen, w&auml;re in vielen F&auml;llen &uuml;bertrieben. Abhilfe schafft eine tempor&auml;re Datensatzgruppe (temporary recordset), die Sie leicht per ADO erstellen, f&uuml;llen und wieder entsorgen.","og_url":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:11:48+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5","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\/Temporaere_Datensatzgruppen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Tempor&auml;re Datensatzgruppen","datePublished":"2020-05-22T22:11:48+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/"},"wordCount":1726,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5","articleSection":["2\/2010","2010","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/","url":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/","name":"Tempor&auml;re Datensatzgruppen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5","datePublished":"2020-05-22T22:11:48+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/058aa91fe2ef4f0cba3dab3176d3a8a5"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datensatzgruppen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Tempor&auml;re Datensatzgruppen"}]},{"@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\/55000711","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=55000711"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000711\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}