{"id":55000732,"date":"2010-08-01T00:00:00","date_gmt":"2020-05-22T22:06:33","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=732"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"DAO_Tabellen_Felder_und_Co_bearbeiten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/","title":{"rendered":"DAO: Tabellen, Felder und Co. bearbeiten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Tabellen, Felder und Beziehungen erstellt man normalerweise mit den Werkzeugen der Benutzeroberfl&auml;che von Microsoft Access. Es kann jedoch nie schaden, per VBA-Code sowohl auf die Definition der Elemente des Datenmodells zuzugreifen und diese auch erstellen oder &auml;ndern zu k&ouml;nnen. In diesem Beitrag zeigen wir, wie Sie die datenbezogenen Objekte Ihrer Datenbank mit den Eigenschaften und Methoden der DAO-Bibliothek im Griff behalten.<\/b><\/p>\n<p>F&uuml;r den Zugriff auf die Tabellendefinitionen per DAO brauchen Sie nat&uuml;rlich zun&auml;chst einen Verweis auf die entsprechende Objektbibliothek. Dieser ist in den meisten Access-Versionen voreingestellt, zur Sicherheit sollten Sie jedoch den <b>Verweise<\/b>-Dialog (VBA-Editor, Men&uuml;eintrag <b>Extras|Verweise<\/b>) konsultieren, ob dieser einen Verweis namens <b>Microsoft DAO 3.6 Object Library <\/b>(Access 2003 und &auml;lter) oder <b>Microsoft Office x.0 Access Database Engine Object Library <\/b>(Access 2007 und j&uuml;nger) enth&auml;lt.<\/p>\n<p><b>Datenbank referenzieren<\/b><\/p>\n<p>Die aktuell ge&ouml;ffnete Datenbank referenzieren Sie am besten mit der <b>CurrentDB<\/b>-Funktion. Diese liefert immer den Blick auf den aktuellen Zustand aller Datenbankobjekte. Den Verweis speichern Sie in jedem Fall in einer Variablen des Typs <b>Database<\/b>. <\/p>\n<p>Nach Verwendung geben Sie den durch die Objektvariable belegten Platz wieder frei:<\/p>\n<pre>Dim db As DAO.database\r\nSet db = CurrentDb\r\n''mit db arbeiten\r\nSet db = Nothing<\/pre>\n<p>Um eine andere Datenbank zu referenzieren, verwenden Sie statt <b>CurrentDb <\/b>Folgendes:<\/p>\n<pre>Set db = DBEngine.OpenDatabase(&quot;c:\\db.mdb&quot;)<\/pre>\n<p>Anschlie&szlig;end greifen Sie &uuml;ber die Objektvariable <b>db <\/b>genau so auf die Elemente dieser Datenbank zu, wie Sie es bei Verwendung von <b>CurrentDB <\/b>erledigen w&uuml;rden.<\/p>\n<p><b>Datenbank erstellen<\/b><\/p>\n<p>Eine Datenbank erstellen Sie mit der <b>CreateDatabase<\/b>-Methode des <b>DBEngine<\/b>-Objekts. Im folgenden Beispiel wird eine neue Datenbank erzeugt, ein Verweis darauf in der <b>Database<\/b>-Variablen <b>db <\/b>gespeichert, der Name der frisch erzeugten Datenbank im Direktfenster ausgegeben und die Datenbank wieder gel&ouml;scht:<\/p>\n<pre>Dim db As DAO.database\r\nDim strDatabase As String\r\nstrDatabase = CurrentProject.Path &amp; &quot;\\Temp.mdb&quot;\r\nSet db = DBEngine.CreateDatabase(strDatabase, dbLangGeneral)\r\nDebug.Print db.Name\r\nSet db = Nothing\r\nKill strDatabase<\/pre>\n<p>In den folgenden Beispielen lassen wir Deklaration, Zuweisung und Leerung der Objektvariablen <b>db<\/b> aus Platzgr&uuml;nden weg.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Tabelle erstellen<\/p>\n<p>Tabellen werden unter DAO durch das <b>TableDef<\/b>-Objekt repr&auml;sentiert. F&uuml;r das Erstellen einer Tabelle verwenden Sie die <b>CreateTableDef<\/b>-Methode des <b>Database<\/b>-Objekts. Dies reicht aber nicht aus: Das Objekt h&auml;ngt im leeren Raum und muss noch an die <b>TableDefs<\/b>-Auflistung der Datenbank angeh&auml;ngt werden. Und selbst dies f&uuml;hrt noch zu einem Fehler, weil die Tabelle noch keine Felder enth&auml;lt. Ein leeres Tabellenger&uuml;st l&auml;sst sich also weder in der Benutzeroberfl&auml;che noch per DAO erzeugen: Es muss immer mindestens ein Feld enthalten. Die folgenden Zeilen erzeugen eine neue Tabelle, f&uuml;gen ein einfaches Textfeld hinzu und h&auml;ngen die Tabelle dann an die <b>TableDefs<\/b>-Auflistung an. Schlie&szlig;lich wird noch das Datenbankfenster aktualisiert, damit dieses die neue Tabelle gleich anzeigt:<\/p>\n<pre>Dim tdf As DAO.TableDef\r\nDim fld As DAO.Field\r\nSet tdf = db.CreateTableDef(&quot;tblNeu&quot;)\r\nSet fld = tdf.CreateField(&quot;ID&quot;, dbLong)\r\ntdf.Fields.Append fld\r\ndb.TableDefs.Append tdf\r\nApplication.RefreshDatabaseWindow<\/pre>\n<p><b>Versteckte Tabellen und Systemtabellen<\/b><\/p>\n<p>Wenn Sie die richtigen Optionen einstellen, zeigt Access auch Systemtabellen und versteckte Tabellen im Datenbankfenster beziehungsweise im Navigationsbereich an. Eine Systemtabelle zeichnet sich durch eine spezielle Eigenschaft aus, genau wie eine versteckte Tabelle. Der Unterschied ist: Eine versteckte Tabelle k&ouml;nnen Sie &uuml;ber die Benutzeroberfl&auml;che als solche kennzeichnen (rechte Maustaste auf den Tabellennamen, Eintrag <b>Tabelleneigenschaften<\/b>, Eigenschaft <b>Ausblenden<\/b>), eine Systemtabelle nur per VBA. Die &uuml;blichen Deklarationen vorausgesetzt, k&ouml;nnen Sie mit diesen Anweisungen eine Tabelle ausblenden:<\/p>\n<pre>Set db = CurrentDb\r\nSet tdf = db.TableDefs(&quot;tblKunden&quot;)\r\ntdf.Attributes = 1 ''dbHiddenObject<\/pre>\n<p>Wenn Sie eine Tabelle in eine Systemtabelle umwandeln m&ouml;chten, stellen Sie die <b>Attributes<\/b>-Eigenschaft auf den Wert <b>dbSystemObject <\/b>(<b>-2147483646<\/b>) ein. Wollen Sie der Eigenschaft <b>Attributes <\/b>mehrere Attribute zuweisen, verkn&uuml;pfen Sie die Zahlenwerte oder die Konstanten einfach mit dem <b>Or<\/b>-Schl&uuml;sselwort. Folgendes w&uuml;rde eine versteckte Systemtabelle liefern (nicht, dass dies sinnvoll w&auml;re &#8230;):<\/p>\n<pre>tdf.Attributes = dbHiddenObject Or dbSystemObject<\/pre>\n<p>Access zeigt versteckte Tabellen und Systemtabellen nur an, wenn die Optionen <b>Ausgeblendete Objekte anzeigen <\/b>und <b>Systemobjekte anzeigen <\/b>aktiviert sind.<\/p>\n<p><b>Tabellenfeld anlegen<\/b><\/p>\n<p>Das erste Tabellenfeld haben Sie bereits angelegt, nun folgen die Erl&auml;uterungen hierzu. Genau wie beim Anlegen einer Tabelle brauchen Sie zun&auml;chst eine Objektvariable, in der Sie den Verweis auf das neue Feld speichern k&ouml;nnen:<\/p>\n<pre>Dim fld As DAO.Field<\/pre>\n<p>Dann erstellt die <b>CreateField<\/b>-Methode des <b>TableDef<\/b>-Objekts der Tabelle, der das Feld hinzugef&uuml;gt werden soll, das eigentliche Feld:<\/p>\n<pre>Set fld = tdf.CreateField(&quot;ID&quot;, dbLong)<\/pre>\n<p>Als Parameter dienen der Feldname sowie eine Konstante f&uuml;r den Datentyp. Als Datentypen f&uuml;r die Verwendung von <b>DAO 3.6 <\/b>kommen die folgenden Werte infrage (j&uuml;ngere DAO-Versionen erlauben noch weitere Datentypen, auf die wir an dieser Stelle aber nicht eingehen):<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>dbBoolean<\/b>(<b>1<\/b>): Ja\/Nein-Feld<\/li>\n<li class=\"aufz-hlung\"><b>dbByte<\/b> (<b>2<\/b>): Zahl, Feldgr&ouml;&szlig;e <b>Byte<\/b><\/li>\n<li class=\"aufz-hlung\"><b>dbInteger <\/b>(<b>3<\/b>): Zahl, Feldgr&ouml;&szlig;e <b>Integer<\/b><\/li>\n<li class=\"aufz-hlung\"><b>dbLong <\/b>(<b>4<\/b>): Zahl, Feldgr&ouml;&szlig;e <b>Long<\/b><\/li>\n<li class=\"aufz-hlung\"><b>dbCurrency <\/b>(<b>5<\/b>): W&auml;hrung<\/li>\n<li class=\"aufz-hlung\"><b>dbSingle <\/b>(<b>6<\/b>): Zahl, Feldgr&ouml;&szlig;e <b>Single<\/b><\/li>\n<li class=\"aufz-hlung\"><b>dbDouble <\/b>(<b>7<\/b>): Zahl, Feldgr&ouml;&szlig;e <b>Double<\/b><\/li>\n<li class=\"aufz-hlung\"><b>dbDate <\/b>(<b>8<\/b>): Datum<\/li>\n<li class=\"aufz-hlung\"><b>dbBinary <\/b>(<b>9<\/b>): Bin&auml;r (wird in der Liste der Datentypen nicht angezeigt, kann aber dennoch erstellt werden)<\/li>\n<li class=\"aufz-hlung\"><b>dbText <\/b>(<b>10<\/b>): Text<\/li>\n<li class=\"aufz-hlung\"><b>dbLongBinary <\/b>(<b>11<\/b>): OLE-Objekt<\/li>\n<li class=\"aufz-hlung\"><b>dbMemo <\/b>(<b>12<\/b>): Memo<\/li>\n<li class=\"aufz-hlung\"><b>dbGUID <\/b>(<b>15<\/b>): Zahl, Feldgr&ouml;&szlig;e <b>Replikations-ID<\/b><\/li>\n<\/ul>\n<p>Die Prozedur aus Listing 1 erstellt eine Tabelle, die im Entwurf wie in Bild 1 aussieht.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Anlegen einer Tabelle mit allen unter DAO 3.6 m&ouml;glichen Felddatentypen<\/p>\n<pre>Public Sub AlleDAO36Feldtypen()\r\n    Dim db As DAO.Database\r\n    Dim tdf As DAO.TableDef\r\n    Dim fld As DAO.Field\r\n    Set db = CurrentDb\r\n    On Error Resume Next\r\n    db.TableDefs.Delete &quot;tblDatentypen&quot;\r\n    On Error GoTo 0\r\n    Set tdf = db.CreateTableDef(&quot;tblDatentypen&quot;)\r\n    Set fld = tdf.CreateField(&quot;dbBoolean&quot;, dbBoolean)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbByte&quot;, dbByte)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbInteger&quot;, dbInteger)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbLong&quot;, dbLong)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbCurrency&quot;, dbCurrency)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbSingle&quot;, dbSingle)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbDouble&quot;, dbDouble)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbDate&quot;, dbDate)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbBinary&quot;, dbBinary)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbText&quot;, dbText)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbLongBinary&quot;, dbLongBinary)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbMemo&quot;, dbMemo)\r\n    tdf.Fields.Append fld\r\n    Set fld = tdf.CreateField(&quot;dbGUID&quot;, dbGUID)\r\n    tdf.Fields.Append fld\r\n    db.TableDefs.Append tdf\r\nEnd Sub<\/pre>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Eine per DAO erstellte Tabelle in der Entwurfsansicht<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p><b>Autowert anlegen<\/b><\/p>\n<p>Wenn Sie ein Autowert-Feld definieren m&ouml;chten, stellen Sie die Eigenschaft <b>Attributes <\/b>des entsprechenden Felds auf den Wert <b>dbAutoIncrField <\/b>ein:<\/p>\n<pre>Set fld = tdf.CreateField(&quot;ID&quot;, dbLong)\r\nfld.Attributes = dbAutoIncrField\r\ntdf.Fields.Append fld<\/pre>\n<p><b>Weitere Eigenschaften einstellen<\/b><\/p>\n<p>Wenn Sie einen Blick auf die Eigenschaften von Feldern verschiedener Felddatentypen im Tabellenentwurf werfen, finden Sie noch einige weitere Eigenschaften, die Sie m&ouml;glicherweise per DAO einstellen m&ouml;chten. Dazu brauchen Sie prinzipiell nur eine Anweisung pro Eigenschaft &#8211; vorausgesetzt, Sie haben bereits einen Verweis auf die aktuelle Datenbank (<b>db<\/b>) und auf das Feld, das Sie anpassen m&ouml;chten (<b>fld<\/b>). Au&szlig;erdem m&uuml;ssen Sie nat&uuml;rlich den englischen Namen der Eigenschaft kennen. Insgesamt sieht beispielsweise das Einstellen der Eigenschaft <b>Standardwert <\/b>(<b>DefaultValue<\/b>) so aus:<\/p>\n<pre>Public Sub StandardwertEinstellen(strTabelle As String, strFeld As String, varStandardwert As Variant)\r\n    Dim db As DAO.Database\r\n    Dim tdf As DAO.TableDef\r\n    Dim fld As DAO.Field\r\n    Dim prp As DAO.Property\r\n    Set db = CurrentDb\r\n    Set tdf = db.TableDefs(strTabelle)\r\n    Set fld = tdf.Fields(strFeld)\r\n    fld.Properties(&quot;DefaultValue&quot;) = varStandardwert\r\nEnd Sub<\/pre>\n<p>Genau so k&ouml;nnen Sie auch f&uuml;r die &uuml;brigen Eigenschaften vorgehen. Wenn Sie herausfinden wollen, wie diese Eigenschaften hei&szlig;en, lassen Sie sich einfach alle Eigenschaften eines Feldes im Direktfenster ausgeben. Anhand des englischen Namens oder des Wertes sollte sich dies leicht bewerkstelligen lassen. Die folgenden Zeilen liefern alle Properties eines Feldes:<\/p>\n<pre>Set tdf = db.TableDefs(&quot;tblProjekte&quot;)\r\nSet fld = tdf.Fields(&quot;KundeID&quot;)\r\nFor Each prp In fld.Properties\r\n    Debug.Print prp.Name\r\nNext prp<\/pre>\n<p><b>Einfachen Index festlegen<\/b><\/p>\n<p>Als N&auml;chstes legen wir verschiedene Index-Typen an. Den Start macht ein einfacher Index. Um einen solchen anzulegen, deklarieren Sie zus&auml;tzlich zu den bisher vorhandenen Variablen <b>db<\/b>, <b>tdf <\/b>und <b>fld <\/b>noch ein Objekt namens <b>idx <\/b>mit dem Datentyp <b>DAO.Index<\/b>:<\/p>\n<pre>Dim idx As DAO.Index<\/pre>\n<p>Wir verweisen wieder auf das <b>TableDef<\/b>-Objekt f&uuml;r die Tabelle, die das Feld mit dem zu erstellenden Index enth&auml;lt:<\/p>\n<pre>Set tdf = db.TableDefs(&quot;tblMitEinfachemIndex&quot;)<\/pre>\n<p>Dann erstellen wir mit der Methode <b>CreateIndex <\/b>des <b>TableDef<\/b>-Objekts ein neues <b>Index<\/b>-Objekt:<\/p>\n<pre>Set idx = tdf.CreateIndex(&quot;idxEinfach&quot;)<\/pre>\n<p>Und nun kommt ein unerwarteter Schritt: Die <b>Fields<\/b>-Auflistung des <b>Index<\/b>-Objekts liefert nicht etwa eine <b>Append<\/b>-Methode, um eines der vorhandenen Felder der Tabelle anzuh&auml;ngen, sondern Sie erstellen die Felder, f&uuml;r die der Index erstellt werden soll, erneut mit der <b>CreateField<\/b>-Methode. Dabei geben Sie den Namen eines bereits vorhandenen Feldes an:<\/p>\n<pre>Set fld = idx.CreateField(&quot;ID&quot;)<\/pre>\n<p>Danach h&auml;ngen Sie dieses Feld an die <b>Fields<\/b>-Auflistung des <b>Index<\/b>-Objekts an:<\/p>\n<pre>idx.Fields.Append fld<\/pre>\n<p>Schlie&szlig;lich wird auch noch das <b>Index<\/b>-Objekt an die <b>Indexes<\/b>-Auflistung des <b>TableDef<\/b>-Objekts angeh&auml;ngt:<\/p>\n<pre>tdf.Indexes.Append idx<\/pre>\n<p>Bild 2 zeigt den neuen Index an.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Ein per Code hinzugef&uuml;gter einfacher Index ohne Prim&auml;rschl&uuml;sseleigenschaft<\/span><\/b><\/p>\n<p><b>Eindeutigen Index festlegen<\/b><\/p>\n<p>Wenn Sie den Index als eindeutigen Index erstellen m&ouml;chten, brauchen Sie lediglich zus&auml;tzlich die Eigenschaft <b>Unique <\/b>auf den Wert <b>True <\/b>einzustellen (siehe Bild 3):<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Eindeutiger Index im Indizes-Dialog des Tabellenentwurfs<\/span><\/b><\/p>\n<pre>idx.Unique = True<\/pre>\n<p><b>Prim&auml;rschl&uuml;ssel-Index erstellen<\/b><\/p>\n<p>Gleiches gilt f&uuml;r einen Index mit Prim&auml;rschl&uuml;sselattribut (siehe Bild 4). Hier kommt die Eigenschaft <b>Primary <\/b>zum Einsatz:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Prim&auml;rschl&uuml;ssel im Indizes-Dialog<\/span><\/b><\/p>\n<p><b>Nullwerte ignorieren<\/b><\/p>\n<p>Mit der Eigenschaft <b>IgnoreNulls <\/b>stellen Sie den Wert der Eigenschaft <b>Nullwerte ignorieren <\/b>des <b>Indizes<\/b>-Dialogs auf den gew&uuml;nschten Wert ein.<\/p>\n<p><b>Zusammengesetzte Indizes<\/b><\/p>\n<p>Zusammengesetzte Indizes erstellen Sie, indem Sie einfach zwei Felder statt eines f&uuml;r den Index erstellen und diesem hinzuf&uuml;gen (s. Bild 5):<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Zusammengesetzter Schl&uuml;ssel im Indizes-Dialog<\/span><\/b><\/p>\n<pre>Set fld = idx.CreateField(&quot;ID1&quot;)\r\nidx.Fields.Append fld\r\nSet fld = idx.CreateField(&quot;ID2&quot;)\r\nidx.Fields.Append fld<\/pre>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Pflichtfelder<\/p>\n<p>Und schlie&szlig;lich stellen Sie mit der Eigenschaft <b>Required <\/b>ein, ob der Benutzer Daten in ein Feld eingeben muss oder ob er es leerlassen darf.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Index l&ouml;schen<\/p>\n<p>Das L&ouml;schen eines Indexes erledigen Sie mit der <b>Delete<\/b>-Methode der <b>Indexes<\/b>-Auflistung eines <b>TableDef<\/b>-Objekts. Diese Anweisung l&ouml;scht beispielsweise den weiter oben angelegten Prim&auml;rschl&uuml;sselindex von <b>tblMitPrimaerschluessel<\/b>:<\/p>\n<pre>db.TableDefs(&quot;tblMitPrimaerschluessel&quot;).Indexes.Delete &quot;idxPrimaerschluessel&quot;<\/pre>\n<p>Einziges Problem an dieser Stelle ist es, schnell an den Namen des gesuchten Indexes heranzukommen. Dazu listen wir diese schnell im Direktfenster auf, und zwar mit der folgenden Prozedur, die den Namen der Tabelle als Parameter erwartet:<\/p>\n<pre>Public Sub IndizesAuflisten(strTable As String)\r\n    Dim db As DAO.Database\r\n    Dim tdf As DAO.TableDef\r\n    Dim idx As DAO.Index\r\n    Set db = CurrentDb\r\n    Set tdf = db.TableDefs(strTable)\r\n    For Each idx In tdf.Indexes\r\n        Debug.Print idx.Name\r\n    Next idx\r\n    Set tdf = Nothing\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Mit der <b>Debug.Print<\/b>-Anweisung k&ouml;nnen Sie nat&uuml;rlich auch die &uuml;brigen Eigenschaften der Indizes ausgeben lassen, zum Beispiel <b>Foreign<\/b>, <b>Primary<\/b>, <b>Required <\/b>oder &uuml;ber die <b>Fields<\/b>-Auflistung auch die vom Index erfassten Felder.<\/p>\n<p><b>Beziehungen anlegen<\/b><\/p>\n<p>Wer Prim&auml;rschl&uuml;sselfelder anlegt, m&ouml;chte diese in den meisten F&auml;llen auch per Fremdschl&uuml;sselfeld referenzieren. Ein Fremdschl&uuml;sselfeld wird insbesondere dann zu einem solchen, wenn eine Beziehung zwischen diesem Feld und dem Prim&auml;rschl&uuml;sselfeld einer anderen Tabelle besteht. Die nachfolgend beschriebenen Codezeilen, die Sie komplett in der Prozedur <b>ZweiTabellenMitBeziehungAnlegen <\/b>im Modul <b>mdlTabellendefinition <\/b>finden, legen zwei Tabellen namens <b>tblKunden <\/b>und <b>tblProjekte <\/b>an, wobei <b>tblProjekte <\/b>&uuml;ber das Fremdschl&uuml;sselfeld <b>KundeID <\/b>mit dem gleichnamigen Prim&auml;rschl&uuml;sselfeld der Tabelle <b>tblKunden <\/b>verkn&uuml;pft ist. Im Vergleich zu den vorherigen Beispielen brauchen wir eine neue Variable zum Anlegen und Bearbeiten der Beziehungseigenschaften:<\/p>\n<pre>Dim rel As DAO.Relation<\/pre>\n<p>Da Sie m&ouml;glicherweise mit dieser Prozedur experimentieren, l&ouml;schen wir die beiden Tabellen jeweils vor dem erneuten Anlegen; das Ausschalten der Fehlerbehandlung unterbindet Fehler, die beim L&ouml;schen nicht vorhandener Tabellen auftreten (allerdings auch solche Fehler, die ausgel&ouml;st werden, wenn die Tabelle aus anderen Gr&uuml;nden nicht gel&ouml;scht werden kann &#8211; beispielsweise, wenn sie allein oder im Beziehungsfenster ge&ouml;ffnet ist):<\/p>\n<pre>On Error Resume Next\r\ndb.TableDefs.Delete &quot;tblKunden&quot;\r\ndb.TableDefs.Delete &quot;tblProjekte&quot;\r\nOn Error GoTo 0<\/pre>\n<p>Die folgenden Anweisungen erstellen zun&auml;chst die Tabelle <b>tblKunden <\/b>mit den beiden Feldern <b>KundeID <\/b>und <b>Kunde<\/b>:<\/p>\n<pre>Set tdf = db.CreateTableDef(&quot;tblKunden&quot;)\r\nSet fld = tdf.CreateField(&quot;KundeID&quot;, dbLong)\r\nfld.Attributes = dbAutoIncrField\r\ntdf.Fields.Append fld\r\nSet fld = tdf.CreateField(&quot;Kunde&quot;, dbText)\r\ntdf.Fields.Append fld\r\ndb.TableDefs.Append tdf<\/pre>\n<p>Dann erstellen wir einen Prim&auml;rschl&uuml;ssel-Index f&uuml;r das Feld <b>KundeID<\/b>:<\/p>\n<pre>Set idx = tdf.CreateIndex(&quot;idxPKKunden&quot;)\r\nidx.Primary = True\r\nSet fld = idx.CreateField(&quot;KundeID&quot;)\r\nidx.Fields.Append fld\r\ntdf.Indexes.Append idx<\/pre>\n<p>Danach folgt die Tabelle <b>tblProjekte <\/b>mit den Feldern <b>ProjektID<\/b>, <b>Projekt <\/b>und dem zuk&uuml;nftigen Fremdschl&uuml;sselfeld <b>KundeID<\/b>:<\/p>\n<pre>Set tdf = db.CreateTableDef(&quot;tblProjekte&quot;)\r\nSet fld = tdf.CreateField(&quot;ProjektID&quot;, dbLong)\r\nfld.Attributes = dbAutoIncrField\r\ntdf.Fields.Append fld\r\nSet fld = tdf.CreateField(&quot;Projekt&quot;, dbText)\r\ntdf.Fields.Append fld\r\nSet fld = tdf.CreateField(&quot;KundeID&quot;, dbLong)\r\ntdf.Fields.Append fld\r\ndb.TableDefs.Append tdf<\/pre>\n<p>Die folgenden Zeilen erstellen den Prim&auml;rschl&uuml;ssel f&uuml;r das Feld <b>ProjektID<\/b>: <\/p>\n<pre>Set idx = tdf.CreateIndex(&quot;idxPKProjekte&quot;)\r\nidx.Primary = True\r\nSet fld = idx.CreateField(&quot;ProjektID&quot;)\r\nidx.Fields.Append fld\r\ntdf.Indexes.Append idx<\/pre>\n<p>Die Beziehung wird zun&auml;chst ohne Angabe weiterer Parameter angelegt und mit einem Namen versehen:<\/p>\n<pre>Set rel = db.CreateRelation()\r\nrel.Name = &quot;relProjekteKunden&quot;<\/pre>\n<p>Die Tabelle mit dem Fremdschl&uuml;sselfeld tragen Sie in die Eigenschaft <b>ForeignTable <\/b>ein, die andere in <b>Table<\/b>:<\/p>\n<pre>rel.ForeignTable = &quot;tblProjekte&quot;\r\nrel.Table = &quot;tblKunden&quot;<\/pre>\n<p>Schlie&szlig;lich folgen die Attribute der Beziehung. Wenn Sie keinen Wert angeben, hat <b>Attributes<\/b> den Wert <b>0<\/b>, was eine einfache Beziehung mit referentieller Integrit&auml;t herstellt. Die f&uuml;r uns interessanten Parameter lauten:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>dbRelationUnique <\/b>(<b>1<\/b>): 1:1-Beziehung<\/li>\n<li class=\"aufz-hlung\"><b>dbRelationDontEnforce <\/b>(<b>2<\/b>): Ohne referentielle Integrit&auml;t<\/li>\n<li class=\"aufz-hlung\"><b>dbRelationUpdateCascade <\/b>(<b>256<\/b>): Aktualisierungsweitergabe<\/li>\n<li class=\"aufz-hlung\"><b>dbRelationDeleteCascade <\/b>(<b>4096<\/b>): L&ouml;schweitergabe<\/li>\n<li class=\"aufz-hlung\"><b>dbRelationLeft <\/b>(<b>16777216<\/b>): Left Outer Join<\/li>\n<li class=\"aufz-hlung\"><b>dbRelationRight <\/b>(<b>33554432<\/b>): Right Outer Join<\/li>\n<\/ul>\n<p>Wir m&ouml;chten nun eine Beziehung mit referentieller Integrit&auml;t, Aktualisierungs- und L&ouml;schweitergabe anlegen:<\/p>\n<pre>rel.Attributes = 256 Or 4096<\/pre>\n<p>Schlie&szlig;lich legen wir noch fest, welche Felder an der Beziehung beteiligt sind. Der Name dieser Felder lautet in beiden Tabellen gleich:<\/p>\n<pre>Set fld = rel.CreateField(&quot;KundeID&quot;, dbLong)\r\nfld.ForeignName = &quot;KundeID&quot;\r\nfld.Name = &quot;KundeID&quot;<\/pre>\n<p>Nach dem Anh&auml;ngen des <b>Field<\/b>-Objekts an das <b>Relation<\/b>-Objekt und dem Anh&auml;ngen des <b>Relation<\/b>-Objekts an die <b>Relations<\/b>-Auflistung des <b>Database<\/b>-Objekts sind wir schon fertig:<\/p>\n<pre>rel.Fields.Append fld\r\ndb.Relations.Append rel<\/pre>\n<p>Schlie&szlig;lich aktualisieren wir noch das Datenbankfenster, damit die neuen Tabellen gleich dort erscheinen:<\/p>\n<pre>Application.RefreshDatabaseWindow<\/pre>\n<p>Das Ergebnis sieht schlie&szlig;lich wie in Bild 6 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Eine per DAO erstellte Beziehung<\/span><\/b><\/p>\n<p><b>Nachschlagefeld einrichten<\/b><\/p>\n<p>Auch Nachschlagefelder k&ouml;nnen Sie mit DAO einrichten. Dazu legen Sie im Prinzip genau die Eigenschaften fest, die auch im Bereich <b>Nachschlagen <\/b>des jeweiligen Felds im Tabellenentwurf eingestellt werden. Allerdings finden Sie diese Eigenschaften nicht einfach per IntelliSense, sondern als Elemente der <b>Properties<\/b>-Auflistung des jeweiligen Feldes. Die Codezeilen, mit denen Sie die Properties eines Feldes auflisten, haben wir bereits weiter oben vorgestellt.<\/p>\n<p>Wenn Sie die gelieferten Properties mit den Eigenschaften der Registerseite <b>Nachschlagen <\/b>des Feldes <b>KundeID <\/b>der Tabelle <b>tblProjekte <\/b>vergleichen, f&auml;llt auf, dass bereits die aktuell sichtbare Eigenschaft <b>Steuerelement anzeigen <\/b>fehlt (s. Bild 7).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic007.png\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Nachschlagefeld-Eigenschaften eines Feldes<\/span><\/b><\/p>\n<p>Der Grund ist, dass es sich hierbei um benutzerdefinierte Eigenschaften handelt, die normalerweise erst nach dem Anlegen &uuml;ber die Benutzeroberfl&auml;che erzeugt werden. Wir k&ouml;nnen diese Eigenschaften auch per VBA erstellen &#8211; allerdings m&uuml;ssen wir zuvor deren Namen herausfinden, indem wir diese einmalig &uuml;ber die Benutzeroberfl&auml;che erstellen und sie dann per VBA mit den oben vorgestellten Codezeilen auslesen. Legen Sie also schnell ein Nachschlagefeld mit dem Nachschlagefeldassistenten an (s. Bild 8) und f&uuml;hren Sie die obigen Zeilen (zu finden in der Prozedur <b>Nachschlagefeldeigenschaften<\/b>) erneut aus. Es tauchen nun einige neue Properties auf, von denen uns die folgenden interessieren:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/TabellendefinitionDAO_5-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Ein per VBA eingerichtetes Nachschlagefeld<\/span><\/b><\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>DisplayControl<\/b>: <b>Steuerelement anzeigen<\/b><\/li>\n<li class=\"aufz-hlung\"><b>RowSource<\/b>: <b>Datensatzherkunft<\/b><\/li>\n<li class=\"aufz-hlung\"><b>RowSourceType<\/b>: <b>Herkunftstyp<\/b><\/li>\n<li class=\"aufz-hlung\"><b>BoundColumn<\/b>: <b>Gebundene Spalte<\/b><\/li>\n<li class=\"aufz-hlung\"><b>ColumnCount<\/b>: <b>Spaltenanzahl<\/b><\/li>\n<li class=\"aufz-hlung\"><b>ColumnWidths<\/b>: <b>Spaltenbreiten<\/b><\/li>\n<\/ul>\n<p>Diese brauchen wir nur per VBA zu erstellen und mit den entsprechenden Werten zu f&uuml;llen. Die passende Prozedur finden Sie in <a href=\"#anker-25-anchor\">Listing 2<\/a>.<\/p>\n<p class=\"listingueberschrift\">Listing 2: Einrichten eines Nachschlagefeldes f&uuml;r ein Fremdschl&uuml;sselfeld<\/p>\n<pre>Public Sub NachschlagefeldEinrichten()\r\n    Dim db As DAO.Database\r\n    Dim tdf As DAO.TableDef\r\n    Dim fld As DAO.Field\r\n    Dim prp As DAO.Property\r\n    Set db = CurrentDb\r\n    Set tdf = db.TableDefs(&quot;tblProjekte&quot;)\r\n    Set fld = tdf.Fields(&quot;KundeID&quot;)\r\n    Set prp = db.CreateProperty(&quot;DisplayControl&quot;, 3, 111)\r\n    fld.Properties.Append prp\r\n    Set prp = db.CreateProperty(&quot;RowSourceType&quot;, 10, &quot;Table\/Query&quot;)\r\n    fld.Properties.Append prp\r\n    Set prp = db.CreateProperty(&quot;RowSource&quot;, 12, &quot;SELECT KundeID, Kunde FROM tblKunden&quot;)\r\n    fld.Properties.Append prp\r\n    Set prp = db.CreateProperty(&quot;BoundColumn&quot;, 3, 1)\r\n    fld.Properties.Append prp\r\n    Set prp = db.CreateProperty(&quot;ColumnCount&quot;, 3, 2)\r\n    fld.Properties.Append prp\r\n    Set prp = db.CreateProperty(&quot;ColumnWidths&quot;, 10, &quot;0&quot;)\r\n    fld.Properties.Append prp\r\n    Set fld = Nothing\r\n    Set tdf = Nothing\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Mit den hier vorgestellten Techniken k&ouml;nnen Sie alle wichtigen Aktionen durchf&uuml;hren, um Datenbanken, Tabellen, Felder, Indizes, Beziehungen und Eigenschaften f&uuml;r diese Objekte anzulegen.<\/p>\n<p>Damit k&ouml;nnen Sie beispielsweise auf die Schnelle eine tempor&auml;re Tabelle oder auch Datenbank erstellen oder Sie verwenden die Techniken in einem Assistenten: So k&ouml;nnten Sie beispielsweise einen Assistenten erstellen, der auf Knopfdruck eine Anreden-Tabelle zu einer Datenbank hinzuf&uuml;gt (gegebenenfalls erweitert um das Anlegen der g&auml;ngigen Datens&auml;tze). Teilen Sie uns Ihre eigenen Ideen unter <b>info@access-im-unternehmen.de<\/b> mit!<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DAO.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{A895A39F-8CAE-4B49-ABEB-20BC8D02EA0E}\/aiu_732.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tabellen, Felder und Beziehungen erstellt man normalerweise mit den Werkzeugen der Benutzeroberfl&auml;che von Microsoft Access. Es kann jedoch nie schaden, per VBA-Code sowohl auf die Definition der Elemente des Datenmodells zuzugreifen und diese auch erstellen oder &auml;ndern zu k&ouml;nnen.In diesem Beitrag zeigen wir, wie Sie die datenbezogenen Objekte Ihrer Datenbank mit den Eigenschaften und Methoden der DAO-Bibliothek im Griff behalten.<\/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":[662010,66042010,44000025],"tags":[],"class_list":["post-55000732","post","type-post","status-publish","format-standard","hentry","category-662010","category-66042010","category-VBA_und_Programmiertechniken"],"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>DAO: Tabellen, Felder und Co. bearbeiten - 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\/DAO_Tabellen_Felder_und_Co_bearbeiten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DAO: Tabellen, Felder und Co. bearbeiten\" \/>\n<meta property=\"og:description\" content=\"Tabellen, Felder und Beziehungen erstellt man normalerweise mit den Werkzeugen der Benutzeroberfl&auml;che von Microsoft Access. Es kann jedoch nie schaden, per VBA-Code sowohl auf die Definition der Elemente des Datenmodells zuzugreifen und diese auch erstellen oder &auml;ndern zu k&ouml;nnen.In diesem Beitrag zeigen wir, wie Sie die datenbezogenen Objekte Ihrer Datenbank mit den Eigenschaften und Methoden der DAO-Bibliothek im Griff behalten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:06:33+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14\" \/>\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=\"16\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"DAO: Tabellen, Felder und Co. bearbeiten\",\"datePublished\":\"2020-05-22T22:06:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/\"},\"wordCount\":2251,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/03a5601ba1c94564a8b70c7ab8cc0b14\",\"articleSection\":[\"2010\",\"4\\\/2010\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/\",\"name\":\"DAO: Tabellen, Felder und Co. bearbeiten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/03a5601ba1c94564a8b70c7ab8cc0b14\",\"datePublished\":\"2020-05-22T22:06:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/03a5601ba1c94564a8b70c7ab8cc0b14\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/03a5601ba1c94564a8b70c7ab8cc0b14\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/DAO_Tabellen_Felder_und_Co_bearbeiten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DAO: Tabellen, Felder und Co. bearbeiten\"}]},{\"@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":"DAO: Tabellen, Felder und Co. bearbeiten - 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\/DAO_Tabellen_Felder_und_Co_bearbeiten\/","og_locale":"de_DE","og_type":"article","og_title":"DAO: Tabellen, Felder und Co. bearbeiten","og_description":"Tabellen, Felder und Beziehungen erstellt man normalerweise mit den Werkzeugen der Benutzeroberfl&auml;che von Microsoft Access. Es kann jedoch nie schaden, per VBA-Code sowohl auf die Definition der Elemente des Datenmodells zuzugreifen und diese auch erstellen oder &auml;ndern zu k&ouml;nnen.In diesem Beitrag zeigen wir, wie Sie die datenbezogenen Objekte Ihrer Datenbank mit den Eigenschaften und Methoden der DAO-Bibliothek im Griff behalten.","og_url":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:06:33+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"16\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"DAO: Tabellen, Felder und Co. bearbeiten","datePublished":"2020-05-22T22:06:33+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/"},"wordCount":2251,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14","articleSection":["2010","4\/2010","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/","url":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/","name":"DAO: Tabellen, Felder und Co. bearbeiten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14","datePublished":"2020-05-22T22:06:33+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/03a5601ba1c94564a8b70c7ab8cc0b14"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/DAO_Tabellen_Felder_und_Co_bearbeiten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"DAO: Tabellen, Felder und Co. bearbeiten"}]},{"@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\/55000732","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=55000732"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000732\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}