{"id":55000012,"date":"2001-04-01T00:00:00","date_gmt":"2020-05-11T12:07:03","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=12"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Verwaltung_von_Daten_ohne_Tabelle","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/","title":{"rendered":"Verwaltung von Daten ohne Tabelle"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Einige Anwendungen erfordern die tempor&auml;re Verwaltung von Daten &#8211; d.h., die Daten werden im Programmverlauf ermittelt, f&uuml;r einen bestimmten Zweck verwendet und anschlie&szlig;end wieder gel&ouml;scht. Selbstverst&auml;ndlich k&ouml;nnte man f&uuml;r solche F&auml;lle Tabellen anlegen, die Daten w&auml;hrend der Bearbeitung darin speichern und die Tabelle anschlie&szlig;end wieder l&ouml;schen. Das ist aber erstens aufwendig und zweitens w&auml;chst die Gr&ouml;&szlig;e der Datenbank schnell ins Unermessliche, wenn der Anwender sie nicht regelm&auml;&szlig;ig komprimiert. Daher verwenden Sie entweder Datenfelder &#8211; sogenannte Arrays &#8211; oder die seit Access 2000 verf&uuml;gbaren ungebundenen Datensatzgruppen.<\/b><\/p>\n<p>Datenfelder (im Fachjargon: Arrays) dienen zum Speichern mehrerer Werte in einer einzigen Variablen. So k&ouml;nnen Sie sich &#8211; im Gegensatz zu einfachen Variablen &#8211; eine Menge Deklarationen und Wertzuweisungen speichern.<\/p>\n<h2>G&uuml;ltigkeitsbereiche von Datenfeldern<\/h2>\n<p>Datenfelder haben einen G&uuml;ltigkeitsbereich, der wie bei allen anderen Variablen von der Art der Deklaration abh&auml;ngt. Dabei gibt es prinzipiell drei M&ouml;glichkeiten:<\/p>\n<li>Das Datenfeld soll im ganzen Anwendungsbereich verf&uuml;gbar sein. Deklarieren Sie das Datenfeld dann mit der Public-Anweisung im Deklarationsteil eines Moduls.<\/li>\n<li>Das Datenfeld soll innerhalb eines Moduls verf&uuml;gbar sein. Deklarieren Sie das Datenfeld mit der Private-Anweisung im Deklarationsteil des gew&uuml;nschten Moduls.<\/li>\n<li>Das Datenfeld soll nur innerhalb einer Prozedur oder Funktion verf&uuml;gbar sein. Deklarieren Sie das Datenfeld dann mit der Private-Anweisung innerhalb der gew&uuml;nschten Prozedur oder Funktion.<\/li>\n<h2>Statische und dynamische Datenfelder<\/h2>\n<li>Datenfelder k&ouml;nnen als statische oder dynamische Variablen deklariert werden. Der Unterschied ist, dass Sie bei statischen Datenfeldern bereits bei der Deklaration wissen m&uuml;ssen, wie viele Elemente das Datenfeld enthalten soll.<\/li>\n<h2>Statische Datenfelder<\/h2>\n<li>Das ist z.B. der Fall, wenn Sie die Namen aller Monate in einem Datenfeld speichern m&ouml;chten. In dem Fall wissen Sie vorher, dass es sich um zw&ouml;lf Elemente handelt. Die Deklaration lautet dann folgenderma&szlig;en:<\/li>\n<pre>Dim Monatsnamen(12) as String<\/pre>\n<p>Zumindest lautet die Deklaration so, wenn Sie davon ausgehen, dass die einzelnen Daten von der Zahl Eins ausgehend durchnummeriert werden. Das ist aber standardm&auml;&szlig;ig nicht der Fall: Stattdessen beginnt der Index f&uuml;r Datenfelder bei der Zahl Null. Und da Sie mit der Zahl 12 die obere Bereichsgrenze angegeben haben, k&ouml;nnen Sie nun theoretisch 13 Daten in das Datenfeld eingeben &#8211; von 0 bis 12.<\/p>\n<p>Um die Anzahl der Elemente des Datenfeldes nun tats&auml;chlich auf den Wert 12 festzulegen, gibt es zwei M&ouml;glichkeiten. Entweder setzen Sie die obere Grenze auf den Wert 11, wie in folgender Anweisung:<\/p>\n<pre>Public Monatsnamen(11) As String<\/pre>\n<p>Oder Sie setzen die untere Bereichsgrenze auf den Wert 1. Dazu verwenden Sie den folgenden Befehl und setzen gleichzeitig wieder die obere Grenze auf den Wert 12:<\/p>\n<pre>Option Base 1\r\nPublic Monatsnamen(12) As String<\/pre>\n<p>Auf diese Weise k&ouml;nnen Sie nun die Monatsnamen von 1 bis 12 durchnummeriert in die gew&uuml;nschte Variable einlesen. Dazu verwenden Sie eine kleine Prozedur:<\/p>\n<pre>Sub MonatsnamenZuweisen()\r\n    Monatsnamen(1) = \"Januar\"\r\n    Monatsnamen(2) = \"Februar\"\r\n    ....\r\n    Monatsnamen(12) = \"Dezember\"\r\n    \r\nEnd Sub<\/pre>\n<p>Wenn Sie allerdings einen Monatsnamen eingeben m&ouml;chten, dessen Index au&szlig;erhalb des angegebenen Bereichs liegt, erscheint eine Fehlermeldung (siehe Bild 1). Um das zu testen, geben Sie einfach im Testfenster die folgende Anweisung ein:<\/p>\n<pre>Monatsnamen(13) = \"Fantasiemonat\"<\/pre>\n<p><IMG height=\"127\" src=\"..\/fileadmin\/_temp_\/{085D39B7-9691-410F-81CE-FF776EB0CAFB}\/pic001.png\" width=\"259\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Fehlermeldung nach der Eingabe eines unzul&auml;ssigen Feldindizes<\/span><\/b><\/p>\n<p>Sie k&ouml;nnen die eingelesenen Monatsnamen nun beispielsweise mit der folgenden Anweisung ausgeben lassen:<\/p>\n<pre>Debug.Print Monatsnamen(1)<\/pre>\n<p>Oder Sie verwenden eine kleine Prozedur, um alle Monate auszugeben:<\/p>\n<pre>Sub MonateAusgeben()\r\n    Dim i As Integer\r\n    For i = 1 To 12\r\n        Debug.Print \"Name des \" _\r\n            & i & \".ten Monats: \" _\r\n            & Monatsname(i)\r\n    Next\r\nEnd Sub<\/pre>\n<p>Die Angabe der unteren Grenze mit der Option Base-Anweisung k&ouml;nnen Sie allerdings auch umgehen, falls Sie mehrere Datenfelder verwenden und nicht alle die gleiche Untergrenze haben sollen. Geben Sie dazu die Untergrenze und die Obergrenze explizit in der Deklaration des Datenfeldes an:<\/p>\n<pre>Public Monatsname(1 to 12) As String<\/pre>\n<p>Sie k&ouml;nnen die Monatsnamen auch direkt als Liste eingeben. Dazu verwenden Sie die Array-Funktion. Die Funktion arbeitet allerdings nur mit Variant-Variablen, daher m&uuml;ssen Sie zuvor eine entsprechende Variable deklarieren:<\/p>\n<p>Public Monatsname As Variant<\/p>\n<p>Anschlie&szlig;end k&ouml;nnen Sie der Variablen mit dem folgenden Befehl die gew&uuml;nschte Monatsliste zuweisen:<\/p>\n<pre>Monatsname = Array(\"Januar\", \"Februar\", \"M&auml;rz\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\")<\/pre>\n<p>In den bisherigen Beispielen haben Sie lediglich eindimensionale Datenfelder kennengelernt. Sie k&ouml;nnen aber auch zweidimensionale Datenfelder verwenden. Das ist z.B. sinnvoll, wenn Sie zu den Monatsnamen auch noch die jeweilige Anzahl Tage speichern m&ouml;chten. Die Deklaration f&uuml;r ein solches Datenfeld sieht folgenderma&szlig;en aus:<\/p>\n<pre>Public Monatsdaten(1 To 12, 1 To 2) As Variant<\/pre>\n<p>Wahrscheinlich fragen Sie sich nun, warum das Datenfeld als Variant deklariert wird. Der Grund ist, dass man f&uuml;r das komplette Feld nur einen Datentyp angeben kann. Da die Anzahl der Tage eines Monats im Datenformat String nicht besonders sinnvoll erscheint, verwenden Sie hier den Datentypen Variant. F&uuml;r Daten dieses Datentyps k&ouml;nnen beliebige Formate mit Ausnahme von Zeichenketten fester L&auml;nge und benutzerdefinierter Datentypen verwendet werden.<\/p>\n<p>Die Zuweisung der Daten eines zweidimensionalen Feldes erfolgt beispielsweise wie in folgender Prozedur:<\/p>\n<pre>Sub MonatsdatenZuweisen()\r\n    Monatsdaten(1, 1) = \"Januar\"\r\n    Monatsdaten(2, 1) = \"Februar\"\r\n    ....\r\n    Monatsdaten(12, 1) = \"Dezember\"\r\n    \r\n    Monatsdaten(1, 2) = 31\r\n    Monatsdaten(2, 2) = 28\r\n    ....\r\n    Monatsdaten(12, 2) = 31\r\nEnd Sub<\/pre>\n<p>Zus&auml;tzlich zu den Monatsnamen enth&auml;lt das Datenfeld nun noch die Anzahl Tage des jeweiligen Monats. Das Feld sieht nun etwa folgenderma&szlig;en aus:<\/p>\n<p>Monatsdaten(X,Y)<\/p>\n<p>Y=1<\/p>\n<p>Y=2<\/p>\n<p>X=1<\/p>\n<p>Januar<\/p>\n<p>31<\/p>\n<p>X=2<\/p>\n<p>Februar<\/p>\n<p>28<\/p>\n<p>&#8230;<\/p>\n<p>&#8230;<\/p>\n<p>&#8230;<\/p>\n<p>X=3<\/p>\n<p>Dezember<\/p>\n<p>31<\/p>\n<p>Auf die beschriebene Weise k&ouml;nnen Sie beliebig gro&szlig;e Felder anlegen.<\/p>\n<h2>Dynamische Datenfelder<\/h2>\n<p>Dynamische Datenfelder k&ouml;nnen Sie verwenden, wenn Sie bei der Deklaration noch nicht genau wissen, wie viele Daten das Feld aufnehmen soll.<\/p>\n<p>Wenn Sie beispielsweise Daten aus einer Textdatei einlesen m&ouml;chten, aber nicht wissen, wie viele Zeilen die Datei enth&auml;lt, ist ein dynamisches Datenfeld die richtige Wahl.<\/p>\n<p>F&uuml;r das folgende Beispiel legen Sie bitte eine Textdatei wie in Bild 2 an.<\/p>\n<p><IMG height=\"177\" src=\"..\/fileadmin\/_temp_\/{085D39B7-9691-410F-81CE-FF776EB0CAFB}\/pic002.png\" width=\"264\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Textdatei mit einer Liste von Namen und Altersangaben<\/span><\/b><\/p>\n<p>Die im folgenden vorgestellte Anwendung soll die Daten in einer Tabelle namens tblAltersangaben speichern. Sie fragen nun zu Recht, warum man die Eintr&auml;ge nicht direkt in eine geeignete Tabelle schreiben kann. Der Grund ist, dass  man zun&auml;chst die Informationen einer Zeile mit einer geeigneten Funktion auseinandernehmen muss. Daher liest man den Inhalt der Textdatei zun&auml;chst in ein geeignetes Datenfeld ein. Anschlie&szlig;end &uuml;bergibt man das Feld an eine Funktion zum Extrahieren der einzelnen Elemente einer Zeile. Anschlie&szlig;end kann man die Informationen in die einzelnen Felder einer Tabelle schreiben.<\/p>\n<p><!--30percent--><\/p>\n<p>Mit der folgenden Prozedur k&ouml;nnen Sie die einzelnen Zeilen einer Textdatei in das Datenfeld Spalte einlesen:<\/p>\n<pre>Sub TextdateiLesen()\r\n    Dim Spalte(1 To 10) As String\r\n    Dim i As Integer\r\n    Open \"c:\\Alter.txt\" For Input As #1\r\n    i = 1\r\n    While Not EOF(1)\r\n        Line Input #1, Spalte(i)\r\n        i = i + 1\r\n    Wend\r\n    Close #1\r\n    For i = 1 To 10\r\n        Debug.Print Spalte(i)\r\n    Next i\r\nEnd Sub<\/pre>\n<p>Im vorliegenden Fall ist das Datenfeld allerdings statisch festgelegt und kann nur zehn Elemente enthalten.<\/p>\n<p>Dementsprechend erhalten Sie eine Fehlermeldung, sobald die Datei mehr als zehn Eintr&auml;ge enth&auml;lt. Bevor Sie aber nun f&uuml;r das Datenfeld eine entsprechend hohe Menge Speicherplatz reservieren und anschlie&szlig;end nur einen Bruchteil davon ben&ouml;tigen, deklarieren Sie das Datenfeld lieber als dynamisches Datenfeld. Der einzige Unterschied zur Deklaration eines statischen Datenfeldes ist, dass Sie weder die untere noch die obere Grenze des Datenfeldes angeben, sondern einfach eine leere Klammer angeben:<\/p>\n<pre>Dim Spalte() as String<\/pre>\n<h3>Die Schl&uuml;sselw&ouml;rter ReDim und Preserve<\/h3>\n<p>Damit haben Sie aber noch nicht die Gr&ouml;&szlig;e des Datenfeldes angegeben. Das holen Sie mit der ReDim-Anweisung nach. Die ReDim-Anweisung dient zur &auml;nderung der Gr&ouml;&szlig;e eines dynamischen Datenfeldes. Wenn Sie die ReDim-Anweisung anwenden, &auml;ndern Sie aber nicht nur die Gr&ouml;&szlig;e des Datenfeldes, sondern leeren auch die bereits gef&uuml;llten Felder:<\/p>\n<pre>ReDim Spalte(1 To 10)<\/pre>\n<p>Da es &auml;u&szlig;erst unpraktisch w&auml;re, nach jeder &auml;nderung der Feldanzahl alle Daten neu einlesen zu m&uuml;ssen, k&ouml;nnen Sie die ReDim-Anweisung um das Schl&uuml;sselwort Preserve erweitern. Der Einsatz des Schl&uuml;sselwortes verhindert das L&ouml;schen bereits eingegebener Daten:<\/p>\n<pre>ReDim Preserve Spalte(1 To 10)<\/pre>\n<p>Nat&uuml;rlich m&uuml;ssen Sie das Preserve-Schl&uuml;sselwort beim ersten Dimensionieren des Datenfeldes nicht verwenden, da die Daten ja ohnehin neu eingelesen werden.<\/p>\n<h3>Erweitern eines Datenfeldes w&auml;hrend der Laufzeit<\/h3>\n<p>Die folgende Prozedur bietet &#8211; bezogen auf den ben&ouml;tigten Speicherplatz &#8211; zwar keine optimale L&ouml;sung, ist aber dennoch zweckm&auml;&szlig;ig:<\/p>\n<pre>Sub TextdateiLesen()\r\n    Dim Spalte() As String\r\n    Dim i As Integer \r\n    ReDim Preserve Spalte(1 To 10)\r\n    Open \"c:\\Alter.txt\" For Input As #1\r\n    i = 1\r\n    While Not EOF(1)\r\n        Line Input #1, Spalte(i)\r\n        i = i + 1\r\n        If UBound(Spalte) = i Then\r\n            ReDim Preserve _\r\n                Spalte(1 To i * 2)\r\n        End If\r\n    Wend\r\n    ReDim Preserve Spalte(1 To i - 1)\r\n    Close #1\r\nEnd Sub<\/pre>\n<p>Die Prozedur deklariert zun&auml;chst das Datenfeld Spalte und legt sp&auml;ter seine Gr&ouml;&szlig;e auf 10 fest. Dann &ouml;ffnet sie die Textdatei und liest sie zeilenweise ein. Wenn die Anzahl der gelesenen Zeilen die Anzahl der reservierten Elemente des Datenfeldes erreicht hat, vergr&ouml;&szlig;ert die Prozedur die Anzahl der Feldelemente auf das Doppelte. Nach dem Einlesen verkleinert die Prozedur das Feld auf die tats&auml;chlich ben&ouml;tigte Anzahl von Elementen.<\/p>\n<p>Dazu verwendet sie die Eigenschaft  UBound. Die Eigenschaft gibt die obere Grenze des als Parameter angegebenen Datenfeldes an. Die entsprechende Eigenschaft f&uuml;r die untere Grenze lautet LBound.<\/p>\n<h3>Datenfeld an eine Prozedur &uuml;bergeben<\/h3>\n<p>Wenn Sie die Daten des Datenfeldes an eine weitere Prozedur &uuml;bergeben m&ouml;chten, um die Daten weiter zu bearbeiten, sieht der Prozeduraufruf etwa folgenderma&szlig;en auf:<\/p>\n<pre>Daten&auml;ndern Spalte()<\/pre>\n<p>In der aufgerufenen Prozedur sollten Sie den &uuml;bergebenen Parameter vorsorglich als Variant deklarieren. Die folgende Beispielprozedur bearbeitet alle Eintr&auml;ge in das &uuml;bergebene Feld derart, dass statt des Namens und des Alters anschlie&szlig;end nur noch das Alter &uuml;berbleibt:<\/p>\n<pre>Sub Daten&auml;ndern(Spalte As Variant)\r\n    Dim i As Integer\r\n    Dim UntereGrenze As Long\r\n    Dim ObereGrenze As Long\r\n    Dim TrennzeichenPosition As Long\r\n    \r\n    UntereGrenze = LBound(Spalte)\r\n    ObereGrenze = UBound(Spalte)\r\n        \r\n    For i = UntereGrenze To ObereGrenze\r\n        TrennzeichenPosition = InStr(1, Spalte(i), \";\")\r\n        Spalte(i) = Mid(Spalte(i), TrennzeichenPosition + 1, Len(Spalte(i)) - TrennzeichenPosition)\r\n    Next i\r\n    \r\nEnd Sub<\/pre>\n<p>Dabei ermittelt sie zun&auml;chst den oberen und den unteren Index des Feldes. Anschlie&szlig;end durchl&auml;uft sie alle Elemente des Feldes. Die Prozedur untersucht , an welcher Position sich das Trennzeichen zwischen Name und Alter (;) befindet und trennt den Teil, der hinter dem Trennzeichen liegt, ab. Nach dem Durchlaufen der Prozedur befinden sich nur noch die Altersangaben in dem Datenfeld. Wenn Sie nun in der Prozedur, von der aus Sie die Prozedur Daten&auml;ndern aufgerufen haben, die Elemente des Datenfeldes ausgeben, erscheinen tats&auml;chlich nur noch die Altersangaben.<\/p>\n<h3>&uuml;bergabe eines Verweises statt einer Variablen<\/h3>\n<p>Das erscheint zun&auml;chst etwas ungew&ouml;hnlich &#8211; werden doch gar keine Werte an die aufrufende Prozedur zur&uuml;ckgegeben. Der Grund daf&uuml;r ist, dass nicht das Feld selbst, sondern lediglich ein Verweise darauf an die Prozedur &uuml;bergeben wird. Die zugrundeliegenden Daten bleiben an Ort und Stelle &#8211; die aufgerufene Prozedur kann aber auf Grund des Verweises &auml;nderungen an ihnen vornehmen.<\/p>\n<p>Anders ist es, wenn Sie den Variablennamen im Kopf der aufgerufenen Prozedur mit dem Schl&uuml;sselwort ByVal versehen:<\/p>\n<pre>Sub Daten&auml;ndern(ByVal Spalte As Variant)<\/pre>\n<p>In dem Fall bearbeitet die Prozedur eine Kopie des Datensatzes &#8211; die eigentlichen Daten aber bleiben unber&uuml;hrt.<\/p>\n<h3>Zuweisen von Datenfeldern<\/h3>\n<p>Wenn Sie einem Datenfeld ein anderes Datenfeld zuweisen m&ouml;chten, k&ouml;nnen Sie das folgenderma&szlig;en tun:<\/p>\n<pre>Datenfeld1 = Datenfeld2<\/pre>\n<p>Dabei m&uuml;ssen allerdings beide Datenfelder dynamisch und gleichen Typs sein. Die Zuweisung funktioniert auch bei gr&ouml;&szlig;eren Datenmengen verbl&uuml;ffend schnell. Der Grund liegt darin, dass kein neues Datenfeld gleichen Inhalts erstellt, sondern lediglich ein Verweis vom neuen Datenfeld auf den Inhalt des bestehenden Datenfeldes angelegt wird.<\/p>\n<p>Die oben vorgestellte Variante zum tempor&auml;ren Speichern von Daten ist sowohl in Access 97 als auch in Access 2000 m&ouml;glich. Neu in Access 2000 ist die folgende Methode: Definieren Sie einfach eine ungebundene Datensatzgruppe (Recordset). Dabei handelt es sich prinzipiell um eine Mischung aus einem Datenfeld und einer Datensatzgruppe. Die ungebundene Datensatzgruppe kann &#8211; im Gegensatz zu den gebundenen Artgenossen &#8211; auf das Vorhandensein einer Tabelle und sogar einer Datenbank verzichten. Neben der tempor&auml;ren Haltung von Daten in einer solchen Datensatzgruppe k&ouml;nnen Sie die Daten auch einem speziellen Format auf der Festplatte speichern. Daneben verf&uuml;gen ungebundene Datensatzgruppen &uuml;ber alle Eigenschaften und Methoden herk&ouml;mmlicher Datensatzgruppen.<\/p>\n<h2>Anlegen einer ungebundenen Datensatzgruppe<\/h2>\n<p>Bevor Sie eine ungebundene Datensatzgruppe anlegen k&ouml;nnen, m&uuml;ssen Sie eine entsprechende Variable deklarieren. Die Variable enth&auml;lt den Namen rst (abgek&uuml;rzt f&uuml;r Recordset, deutsch: Datensatzgruppe):<\/p>\n<pre>Dim rst As Recordset<\/pre>\n<p>Anschlie&szlig;end weisen Sie der Objektvariablen eine neue Datensatzgruppe hinzu:<\/p>\n<pre>Set rst = New Recordset<\/pre>\n<h2>Hinzuf&uuml;gen von Feldern<\/h2>\n<p>Nachdem Sie die ungebundene Datensatzgruppe erstellt haben, verwenden Sie die Methode Append der Auflistung Fields, um der Datensatzgruppe neue Felder hinzuzuf&uuml;gen:<\/p>\n<pre>rst.Fields.Append \"PersonNr\", adInteger\r\nrst.Fields.Append \"Personendaten\", adBSTR<\/pre>\n<h3>&ouml;ffnen einer ungebundenen Datensatzgruppe<\/h3>\n<p>Schlie&szlig;lich verwenden Sie die Open-Methode der Datensatzgruppe, um sie zu &ouml;ffnen:<\/p>\n<pre>rst.Open<\/pre>\n<h2>Kopieren einer Textdatei in eine ungebundene Datensatzgruppe<\/h2>\n<p>Die folgende Prozedur &auml;hnelt der Prozedur TextdateiLesen, die Sie weiter oben kennengelernt haben. Der Unterschied ist, dass Sie die Daten nicht in einem Datenfeld, sondern in einer ungebundenen Datensatzgruppe speichern. Das birgt einige Vorteile in sich: Sie m&uuml;ssen nicht st&auml;ndig die Dimensionen des Feldes &auml;ndern, da das von der Datensatzgruppe automatisch erledigt wird. Au&szlig;erdem k&ouml;nnen Sie die Daten mit den Methoden einer Datensatzgruppe bearbeiten. Um ihre Funktion sichtbar zu machen, gibt die Prozedur die eingelesenen Daten im Testfenster aus.<\/p>\n<pre>Sub DatensatzgruppeErstellen()\r\n    Dim rst As Recordset\r\n    Dim i As Integer\r\n    Dim Spalte As String\r\n    Set rst = New Recordset\r\n    rst.Fields.Append \"PersonNr\", adInteger\r\n    rst.Fields.Append \"Personendaten\", adBSTR\r\n    rst.Open\r\n    Open \"c:\\Alter.txt\" For Input As #1\r\n    i = 1\r\n    While Not EOF(1)\r\n        Line Input #1, Spalte\r\n        rst.AddNew\r\n        rst![PersonNr] = i\r\n        rst![Personendaten] = Spalte\r\n        rst.Update\r\n        i = i + 1\r\n    Wend\r\n    Close #1\r\n    rst.MoveFirst\r\n    While Not rst.EOF\r\n        Debug.Print rst![Personendaten]\r\n        rst.MoveNext\r\n    Wend\r\nEnd Sub<\/pre>\n<p>Eine bessere M&ouml;glichkeit, die eingelesenen Daten zu visualisieren, bietet das DataGrid-Steuerelement. Da es nicht allen Access-Anwendern, sondern nur den Besitzern der Office Developer Edition oder eines Visual Basic-Paketes zur Verf&uuml;gung steht, soll die M&ouml;glichkeit nur kurz vorgestellt werden:<\/p>\n<p>F&uuml;gen Sie &uuml;ber den Men&uuml;befehl Einf&uuml;gen( ActiveX-Steuerelemente das Steuerelement Microsoft DataGrid Control 6.0 in die Entwurfsansicht eines neuen Formulars ein.<\/p>\n<p>&auml;ndern Sie den Namen des Steuerelements auf ocxDataGrid ab.<\/p>\n<p>&auml;ndern Sie &#8211; aus optischen Gr&uuml;nden &#8211; die Eigenschaften Bildlaufleisten, Datensatzmarkierer, Navigationsschaltfl&auml;chen und Trennlinien auf den Wert Nein ein.<\/p>\n<p>Kopieren Sie den K&ouml;rper der Prozedur DatensatzgruppeErstellen in die Ereignisprozedur Beim Laden des Formulars ein. Gehen Sie dabei folgenderma&szlig;en vor:<\/p>\n<li>Aktivieren Sie das Eigenschaftsfenster des Formulars und wechseln Sie in das Register Ereignis.<\/li>\n<li>Klicken Sie in das Feld neben der Eigenschaft Beim Laden.<\/li>\n<li>Klicken Sie auf die nun erscheinende Schaltfl&auml;che mit den drei Punkten (&#8230;) und w&auml;hlen Sie im Dialog Generator ausw&auml;hlen auf den Eintrag Code-Generator.<\/li>\n<li>Kopieren Sie den Prozedurk&ouml;rper zwischen die beiden bereits vorhanden Anweisungen.<\/li>\n<p>Anschlie&szlig;end k&ouml;nnen Sie die Anweisungen zur Ausgabe der Datensatzgruppe im Testfenster l&ouml;schen. F&uuml;gen Sie stattdessen die folgende Anweisungein:<\/p>\n<pre>Set Me!ocxDataGrid.DataSource = rst<\/pre>\n<p>Die Anweisung sorgt daf&uuml;r, dass die Datensatzgruppe als Datenherkunft des DataGrid-Steuerelements eingestellt wird. Wenn Sie das Formular gespeichert haben und in die Formularansicht wechseln, k&ouml;nnte das Formular beispielsweise wie in Bild 3 aussehen.<\/p>\n<p><IMG height=\"163\" src=\"..\/fileadmin\/_temp_\/{085D39B7-9691-410F-81CE-FF776EB0CAFB}\/pic003.png\" width=\"263\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Eine ungebundene Datensatzgruppe im DataGrid-Steuerelement<\/span><\/b><\/p>\n<h2>Daten aus einer ungebundenen Datensatzgruppe weiterverwenden<\/h2>\n<p>Sie haben die Daten ja nur in die ungebundene Datensatzgruppe kopiert, weil Sie sie weiterverwerten und anschlie&szlig;end l&ouml;schen m&ouml;chten.<\/p>\n<p>Die Daten sollen nach Name und Alter getrennt und in eine entsprechende Tabelle geschrieben werden. Dazu verwenden Sie eine weitere Prozedur, der Sie die ungebundene Datensatzgruppe als Parameter &uuml;bergeben.<\/p>\n<p>Zun&auml;chst einmal erstellen Sie eine Tabelle zum Speichern der bearbeiteten Daten. Nennen Sie die Tabelle tblPersonendaten und legen Sie drei Felder an: PersonNr, PersonName, PersonAlter (siehe Bild 4).<\/p>\n<p><IMG height=\"173\" src=\"..\/fileadmin\/_temp_\/{085D39B7-9691-410F-81CE-FF776EB0CAFB}\/pic004.png\" width=\"263\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Tabelle zum Speichern der &uuml;berarbeiteten Daten<\/span><\/b><\/p>\n<p>Die Prozedur zum Extrahieren der gew&uuml;nschten Daten &ouml;ffnet zun&auml;chst die Zieltabelle. Anschlie&szlig;end durchl&auml;uft es alle Datens&auml;tze der &uuml;bergebenen ungebundenen Datensatzgruppe. Dabei verwendet sie einige Zeichenkettenfunktionen, um den Namen und das Alter aus den Zeichenketten zu extrahieren. Die ermittelten Daten -schreibt die Prozedur dann in die entsprechenden Felder der Tabelle tblPersonen.<\/p>\n<pre>Sub DatenKopieren(rstAlt As Recordset)\r\n    Dim conn As Connection\r\n    Dim rstNeu As New Recordset\r\n    Dim TrennzeichenPosition As Integer\r\n    Dim AlterString As String\r\n    Set conn = CurrentProject.Connection\r\n    rstNeu.Open \"tblPersonen\", conn, adOpenDynamic, adLockOptimistic, adCmdTable\r\n    rstAlt.MoveFirst\r\n    While Not rstAlt.EOF\r\n        rstNeu.AddNew\r\n        TrennzeichenPosition = InStr(1, rstAlt![Personendaten], \";\")\r\n        AlterString = rstAlt![Personendaten]\r\n        rstNeu![PersonName] = Mid(AlterString, 1, TrennzeichenPosition - 1)\r\n        rstNeu![PersonAlter] = Mid(AlterString, TrennzeichenPosition + 1, Len(AlterString) - TrennzeichenPosition)\r\n        rstNeu.Update\r\n        rstAlt.MoveNext\r\n    Wend\r\nEnd Sub<\/pre>\n<p>Sie m&uuml;ssen nun nur noch den Prozeduraufruf in der Prozedur DatensatzgruppeErstellen unterbringen. Dazu f&uuml;gen Sie die folgende Zeile direkt unter den Befehl Close #1 ein:<\/p>\n<pre>DatenKopieren rst<\/pre>\n<p>Sie k&ouml;nnen nun erneut die Prozedur DatensatzgruppeErstellen im Testfenster aufrufen. Anschlie&szlig;end &ouml;ffnen Sie die Tabelle tblPersonen, die sich wie in Bild 5 pr&auml;sentieren sollte.<\/p>\n<p><IMG height=\"229\" src=\"..\/fileadmin\/_temp_\/{085D39B7-9691-410F-81CE-FF776EB0CAFB}\/pic005.png\" width=\"263\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Die Tabelle tblPersonen mit den aufbereiteten Daten<\/span><\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einige Anwendungen erfordern die tempor&auml;re Verwaltung von Daten &#8211; d. h., die Daten werden im Programmverlauf ermittelt, f&uuml;r einen bestimmten Zweck verwendet und anschlie&szlig;end wieder gel&ouml;scht. Selbstverst&auml;ndlich k&ouml;nnte man f&uuml;r solche F&auml;lle Tabellen anlegen, die Daten w&auml;hrend der Bearbeitung darin speichern und die Tabellen anschlie&szlig;end wieder l&ouml;schen. Das ist aber erstens aufwendig und zweitens w&auml;chst die Gr&ouml;&szlig;e der Datenbank schnell ins Unermessliche, wenn der Anwender sie nicht regelm&auml;&szlig;ig komprimiert. Daher verwenden Sie entweder Datenfelder &#8211; so genannte Arrays &#8211; oder die seit Access 2000 verf&uuml;gbaren ungebundenen Datensatzgruppen.<\/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":[66022001,662001,44000025],"tags":[],"class_list":["post-55000012","post","type-post","status-publish","format-standard","hentry","category-66022001","category-662001","category-VBA_und_Programmiertechniken"],"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>Verwaltung von Daten ohne Tabelle - 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\/Verwaltung_von_Daten_ohne_Tabelle\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Verwaltung von Daten ohne Tabelle\" \/>\n<meta property=\"og:description\" content=\"Einige Anwendungen erfordern die tempor&auml;re Verwaltung von Daten - d. h., die Daten werden im Programmverlauf ermittelt, f&uuml;r einen bestimmten Zweck verwendet und anschlie&szlig;end wieder gel&ouml;scht. Selbstverst&auml;ndlich k&ouml;nnte man f&uuml;r solche F&auml;lle Tabellen anlegen, die Daten w&auml;hrend der Bearbeitung darin speichern und die Tabellen anschlie&szlig;end wieder l&ouml;schen. Das ist aber erstens aufwendig und zweitens w&auml;chst die Gr&ouml;&szlig;e der Datenbank schnell ins Unermessliche, wenn der Anwender sie nicht regelm&auml;&szlig;ig komprimiert. Daher verwenden Sie entweder Datenfelder - so genannte Arrays - oder die seit Access 2000 verf&uuml;gbaren ungebundenen Datensatzgruppen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-11T12:07:03+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Verwaltung von Daten ohne Tabelle\",\"datePublished\":\"2020-05-11T12:07:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/\"},\"wordCount\":2583,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/55b242ae63dc43f68f5947f819f54b16\",\"articleSection\":[\"2\\\/2001\",\"2001\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/\",\"name\":\"Verwaltung von Daten ohne Tabelle - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/55b242ae63dc43f68f5947f819f54b16\",\"datePublished\":\"2020-05-11T12:07:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/55b242ae63dc43f68f5947f819f54b16\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/55b242ae63dc43f68f5947f819f54b16\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Verwaltung_von_Daten_ohne_Tabelle\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Verwaltung von Daten ohne Tabelle\"}]},{\"@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":"Verwaltung von Daten ohne Tabelle - 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\/Verwaltung_von_Daten_ohne_Tabelle\/","og_locale":"de_DE","og_type":"article","og_title":"Verwaltung von Daten ohne Tabelle","og_description":"Einige Anwendungen erfordern die tempor&auml;re Verwaltung von Daten - d. h., die Daten werden im Programmverlauf ermittelt, f&uuml;r einen bestimmten Zweck verwendet und anschlie&szlig;end wieder gel&ouml;scht. Selbstverst&auml;ndlich k&ouml;nnte man f&uuml;r solche F&auml;lle Tabellen anlegen, die Daten w&auml;hrend der Bearbeitung darin speichern und die Tabellen anschlie&szlig;end wieder l&ouml;schen. Das ist aber erstens aufwendig und zweitens w&auml;chst die Gr&ouml;&szlig;e der Datenbank schnell ins Unermessliche, wenn der Anwender sie nicht regelm&auml;&szlig;ig komprimiert. Daher verwenden Sie entweder Datenfelder - so genannte Arrays - oder die seit Access 2000 verf&uuml;gbaren ungebundenen Datensatzgruppen.","og_url":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-11T12:07:03+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Verwaltung von Daten ohne Tabelle","datePublished":"2020-05-11T12:07:03+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/"},"wordCount":2583,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16","articleSection":["2\/2001","2001","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/","url":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/","name":"Verwaltung von Daten ohne Tabelle - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16","datePublished":"2020-05-11T12:07:03+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/55b242ae63dc43f68f5947f819f54b16"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Verwaltung_von_Daten_ohne_Tabelle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Verwaltung von Daten ohne Tabelle"}]},{"@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\/55000012","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=55000012"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000012\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}