{"id":55000211,"date":"2004-04-01T00:00:00","date_gmt":"2020-05-06T15:17:38","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=211"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Lookupdaten_in_der_Praxis","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/","title":{"rendered":"Lookupdaten in der Praxis"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Lookupdaten sind solche Daten, die zur n&auml;heren Beschreibung von in Tabellen gespeicherten Objekten dienen. Gute Beispiele sind die Anrede oder das Geschlecht von Personen. Im vorliegenden Beitrag erfahren Sie, warum Lookupdaten verwendet werden, in welchen Formen das m&ouml;glich ist und wie sie am einfachsten verwaltet werden k&ouml;nnen.<\/b><\/p>\n<p>Viele Daten haben Eigenschaften, f&uuml;r die es immer wieder die gleichen Werte gibt. Betrachten Sie das Beispiel aus der Einleitung: Eine Tabelle mit den Daten von Personen enth&auml;lt in der Regel Informationen wie Vorname, Nachname, Anrede, Geschlecht, Adressdaten und so weiter.<\/p>\n<h3>Hinweis<\/h3>\n<p>Im Folgenden ist von Objekttabellen und Eigenschaftstabellen die Rede. Objekttabellen enthalten je Datensatz ein Objekt wie beispielsweise eine Person, eine Adresse, ein Produkt oder eine Rechnung. Eigenschaftstabellen enthalten lediglich Werte, die zur n&auml;heren Beschreibung der jeweiligen Objekte dienen. <\/p>\n<p>W&auml;hrend Vorname, Nachname und Adressdaten sich meist von Person zu Person unterscheiden, kann das Geschlecht beispielsweise nur zwei Werte annehmen und auch die Werte f&uuml;r die Anrede sind auf Herr, Frau und einige mit diversen Titeln verzierte Varianten beschr&auml;nkt.<\/p>\n<p>Sie k&ouml;nnen diese Informationen nat&uuml;rlich mit den anderen Informationen in einer einzigen Tabelle, der Objekttabelle, speichern. Das kann aber erstens zu Inkonsistenzen f&uuml;hren und zweitens ist das Ausklammern von oft wiederkehrenden Daten Platz sparend.<\/p>\n<p>Inkonsistenzen treten vor allem dadurch auf, dass gleichbedeutende Eintr&auml;ge in unterschiedlicher Schreibweise vorkommen, was beispielsweise durch Schreibfehler oder durch die Verwendung von Abk&uuml;rzungen passieren kann. Das f&uuml;hrt zu Fehlern, wenn Abfragen auf diese Daten ausgef&uuml;hrt werden:<\/p>\n<p>Wenn zum Beispiel die Schreibweisen Herr und Hr. als Anrede verwendet werden und eine Abfrage alle Personen mit der Anrede Herr ermitteln soll, fallen die abgek&uuml;rzten Herren sprichw&ouml;rtlich unter den Tisch und das Abfrageergebnis wird &#8211; bezogen auf die eigentliche Intention &#8211; verf&auml;lscht.<\/p>\n<h2>1:n-Lookupdaten<\/h2>\n<p>Wenn Sie diese Daten in eine weitere Tabelle, die Eigenschaftstabelle, ausklammern und nur die Eintr&auml;ge dieser Tabelle als m&ouml;gliche Werte f&uuml;r die Eigenschaft Anrede verwenden, k&ouml;nnen keine solchen Inkonsistenzen auftreten (siehe Bild 1).<\/p>\n<p><IMG height=\"231\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic001.png\" width=\"308\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Beispiel f&uuml;r Lookupdaten in einer 1:n-Beziehung<\/span><\/b><\/p>\n<h2>Beziehung f&uuml;r 1:n-Lookupdaten festlegen<\/h2>\n<p>Um die Beziehung zwischen Objekttabellen und Eigenschaftstabellen wie in Bild 1 festzulegen, gehen Sie folgenderma&szlig;en vor:<\/p>\n<li>&ouml;ffnen Sie die Objekttabelle in der Entwurfsansicht.<\/li>\n<li>Markieren Sie das Feld, das mit der Eigenschaftstabelle verkn&uuml;pft werden soll.<\/li>\n<li>W&auml;hlen Sie f&uuml;r die Eigenschaft Steuerelement anzeigen den Wert Kombinationsfeld aus.<\/li>\n<li>W&auml;hlen Sie unter Datensatzherkunft die gew&uuml;nschte Eigenschaftstabelle aus.<\/li>\n<li>Stellen Sie die Eigenschaften Spaltenanzahl und Spaltenbreiten auf die Werte 2 und 0 ein.<\/li>\n<li>Stellen Sie die Eigenschaft Standardwert im Register Allgemein auf einen der in den zu verkn&uuml;pfenden Tabellen enthaltenen Werte ein. (<\/li>\n<p><IMG height=\"415\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic002.png\" width=\"362\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Festlegen der Verkn&uuml;pfung zu einer Eigenschaftstabelle<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Die Verwendung von Standardwerten bei verkn&uuml;pften Tabellen, deren Beziehung referentielle Integrit&auml;t voraussetzt, spart dem Benutzer in vielen F&auml;llen die Zeit zum Ausw&auml;hlen der entsprechenden Werte und dem Entwickler die sonst anzulegende Fehlerbehandlung, falls der Benutzer gar keinen Wert ausw&auml;hlt. <\/p>\n<p>Wenn die Eigenschaften mit denen aus Bild 2 &uuml;bereinstimmen, m&uuml;ssen Sie nur noch die Verkn&uuml;pfung festlegen. Das erfolgt im Beziehungsfenster. Dieses &ouml;ffnen Sie &uuml;ber den Men&uuml;eintrag Extras\/Beziehungen. Zeigen Sie dort alle Tabellen an und ziehen Sie das Prim&auml;rindexfeld von der Eigenschaftstabelle auf das Verkn&uuml;pfungsfeld in der Objekttabelle. Legen Sie f&uuml;r die Beziehung referentielle Integrit&auml;t fest.<\/p>\n<h2>m:n-Lookupdaten<\/h2>\n<p>Neben den Lookupdaten, die per 1:n-Beziehung verkn&uuml;pft sind, gibt es auch solche, die eine m:n-Verkn&uuml;pfung zwischen der Objekttabelle und der Eigenschaftstabelle erfordern.<\/p>\n<p>Wenn Sie die Personen in unterschiedliche Kategorien einteilen m&ouml;chten, k&ouml;nnen Sie das nat&uuml;rlich auch per 1:n-Verkn&uuml;pfung tun. Dann kann aber jede Person nur einer Kategorie zugeordnet werden. Was aber passiert, wenn eine Person mehreren Kategorien zugeordnet werden soll Verwenden Sie in dem Fall einfach eine m:n-Beziehung wie in Bild 3.<\/p>\n<p><IMG height=\"226\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic003.png\" width=\"463\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Lookupdaten per m:n-Beziehung<\/span><\/b><\/p>\n<p>Wenn Sie eine solche Verkn&uuml;pfung verwenden, k&ouml;nnen Sie jeder Person mehrere Kategorien zuweisen. Damit jede Kategorie jeder Person nur einmal zugewiesen werden kann, erstellen Sie f&uuml;r die Verkn&uuml;pfungstabelle tblPersonenKategorien einen aus den beiden Feldern der Tabelle bestehenden Prim&auml;rschl&uuml;ssel.<\/p>\n<h2>Beziehung f&uuml;r m:n-Lookupdaten festlegen<\/h2>\n<p>Das Anlegen einer Verkn&uuml;pfung f&uuml;r eine m:n-Beziehung erfolgt im Prinzip genau wie f&uuml;r eine 1:n-Beziehung &#8211; nur zweimal. Dabei wird jedes der beiden Prim&auml;rschl&uuml;sselfelder der Verkn&uuml;pfungstabelle mit dem jeweiligen Prim&auml;rschl&uuml;sselfeld der Objekt- und der Eigenschaftstabelle verkn&uuml;pft.<\/p>\n<p>Aktivieren Sie au&szlig;erdem f&uuml;r beide Beziehungen die Option L&ouml;schweitergabe. Das bewirkt, dass beim L&ouml;schen sowohl einer Person als auch einer Kategorie alle entsprechenden Eintr&auml;ge der Tabelle tblPersonenKategorien ebenfalls gel&ouml;scht werden.<\/p>\n<p>Die Anzeige von Lookupdaten kann im Fall einer 1:n-Beziehung leicht mit Hilfe eines Kombinationsfeldes erfolgen. Bei m:n-Beziehungen wird es komplizierter: Da nicht feststeht, wie viele Datens&auml;tze der Eigenschaftstabelle einem Datensatz der Objekttabelle zugeordnet sind, kann schlecht ausreichend Platz einger&auml;umt werden.<\/p>\n<p>Normalerweise w&uuml;rden Sie hier ein Unterformular in der Datenblatt- oder Endlosansicht verwenden, um solche Datens&auml;tze anzuzeigen. Da dies bei mehreren solcher Eigenschaften die &uuml;bersichtlichkeit des Hauptformulars verschlechtern k&ouml;nnte, lernen Sie in den folgenden Abschnitten eine alternative Methode kennen.<\/p>\n<h2>Beispielformular<\/h2>\n<p>Das nachfolgend verwendete Beispielformular hat die Tabelle tblPersonen als Datenherkunft. Ziehen Sie alle Felder aus der Feldliste in den Entwurf des Formulars. Wenn Sie die Verkn&uuml;pfungen wie in Abschnitt 1.2 angelegt haben, werden die Felder AnredeID und GeschlechtID direkt als Kombinationsfeld angezeigt (siehe Bild 4).<\/p>\n<p><IMG height=\"314\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic004.png\" width=\"437\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Das Beispielformular mit zwei 1:n-Lookupfeldern<\/span><\/b><\/p>\n<h2>1:n-Lookupdaten anzeigen und bearbeiten<\/h2>\n<p>Die Anzeige von 1:n-Lookupdaten erfolgt eigentlich immer wie in Bild 4. Alternativen sind kaum denkbar, zumal gegen&uuml;ber einem herk&ouml;mmlichen Textfeld lediglich die kleine Schaltfl&auml;che zum Ausklappen des Kombinationsfeldes hinzukommt und es damit f&uuml;r den eigentlichen Inhalt nur ein bisschen weniger Platz zur Verf&uuml;gung stellt.<\/p>\n<h3>Hinweis<\/h3>\n<p>Selbstverst&auml;ndlich k&ouml;nnen Sie auch ein Listenfeld zur Auswahl von per 1:n-Beziehung verkn&uuml;pften Daten verwenden. Da sich eine Lookup-Beziehung aber dadurch auszeichnet, dass die verkn&uuml;pfte Tabelle neben dem Prim&auml;rindexfeld nur den eigentlichen Eigenschaftswert als Feld hat, reicht ein Kombinationsfeld hier immer aus. <\/p>\n<p>Kombinationsfelder zur Anzeige von Lookupdaten bieten den Vorteil, dass nicht nur bestehende Datens&auml;tze ausgew&auml;hlt, sondern mit wenigen Handgriffen auch neue Lookupdaten eingegeben werden k&ouml;nnen.<\/p>\n<h3>Eingabe neuer Lookupdaten perKombinationsfeld<\/h3>\n<p>Dazu stellen Sie lediglich die Ereigniseigenschaft Bei Nicht In Liste des Kombinationsfeldes auf den Wert [Ereignisprozedur] ein und bearbeiten selbige durch einen Mausklick auf die daneben erscheinende Schaltfl&auml;che mit den drei Punkten (&#8230;).<\/p>\n<p>Die Ereignisprozedur sollte nach der Bearbeitung wie in Quellcode 1 aussehen. Die Prozedur erh&auml;lt mit dem Parameter NewData den nicht in der Datensatzherkunft vorhandenen Wert &uuml;bergeben.<\/p>\n<p>Dieser wird der Tabelle tblAnreden &uuml;ber die Methode AddNew eines mit dieser Tabelle gef&uuml;llten Recordsets hinzugef&uuml;gt. Die entsprechende Prozedur f&uuml;r das andere Lookupfeld, Geschlecht, k&ouml;nnen Sie analog anlegen.<\/p>\n<pre>Private Sub AnredeID_NotInList(NewData As String, _    Response As Integer)\r\n    Response = acDataErrAdded\r\n    Dim cnn As ADODB.Connection\r\n    Dim rst As New ADODB.Recordset\r\n    Set cnn = CurrentProject.Connection\r\n    rst.Open \"tblAnreden\", cnn, adOpenDynamic, _        adLockOptimistic\r\n    rst.AddNew\r\n    rst!Anrede = NewData\r\n    rst.Update\r\n    rst.Close\r\n    cnn.Close\r\n    Set rst = Nothing\r\n    Set cnn = Nothing\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<p><IMG height=\"240\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Beispielformular mit m:n-Lookupdatenfeld<\/span><\/b><\/p>\n<h2>m:n-Lookupdaten anzeigen<\/h2>\n<p>Die Anzeige von m:n-Lookupdaten kann auf mehrere Arten erfolgen. F&uuml;r welche Methode man sich entscheidet, h&auml;ngt vom Anwendungsfall und davon, wie die Anzeige in das bestehende Formular integriert werden kann, ab.<\/p>\n<p>Bekannte und in Access im Unternehmen mehrfach vorgestellte Methoden sind die per Unterformular und jene mit zwei Listenfeldern, zwischen denen die verkn&uuml;pften Datens&auml;tze und die nicht verkn&uuml;pften Datens&auml;tze hin- und hergeschoben werden k&ouml;nnen.<\/p>\n<p><!--30percent--><\/p>\n<p>In diesem Beitrag soll eine alternative M&ouml;glichkeit vorgestellt werden, die auch in der im Beitrag Karteikasten mit Access in Ausgabe 1\/2004 vorgestellten Verwaltung von juristischen Leits&auml;tzen verwendet wird.<\/p>\n<p>Bei dieser Methode werden die verkn&uuml;pften Daten Platz sparend nebeneinander in einem Textfeld angezeigt. F&uuml;r die Auswahl der verkn&uuml;pften Daten ist ein separates Formular vorgesehen, das &uuml;ber eine kleine Schaltfl&auml;che rechts von dem Textfeld ge&ouml;ffnet werden kann. Bild 5 zeigt, wie das bereits beschriebene Beispielformular mit diesen Steuerelementen aussieht. Dabei sollen in dem Textfeld die mit der jeweiligen Person verkn&uuml;pften Kategorien angezeigt werden.<\/p>\n<p>Das Feld zur Anzeige der eigentlichen Daten ist ungebunden. Es soll lediglich der Anzeige der Daten dienen. Die Bearbeitung der Daten erfolgt &uuml;ber ein zus&auml;tzliches Formular, dass &uuml;ber die rechts von dem Feld befindliche Schaltfl&auml;che ge&ouml;ffnet werden kann.<\/p>\n<h2>Formular zur Bearbeitung vonm:n-Lookupdaten<\/h2>\n<p>Bevor die Lookupdaten des per m:n-Beziehung verkn&uuml;pften Eigenschaftsfeldes angezeigt werden k&ouml;nnen, m&uuml;ssen sie zun&auml;chst einmal eingegeben werden. Das dazu ben&ouml;tigte Formular besteht aus einem Unterformular zur Anzeige der verkn&uuml;pften Kategorien sowie aus zwei Schaltfl&auml;chen zum Entfernen einer Kategorie durch den aktuellen Benutzer sowie zum Schlie&szlig;en des Formulars. Legen Sie zun&auml;chst das Unterformular namens sfmLookupKategorien an. Als Datenherkunft des Formulars dient die Verkn&uuml;pfungstabelle tblPersonenKategorien. Ziehen Sie das Feld KategorieID aus der resultierenden Feldliste in den Abfrageentwurf, entfernen Sie das Beschriftungsfeld und positionieren Sie es links oben (siehe Bild 6).<\/p>\n<p><IMG height=\"260\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic006.png\" width=\"432\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Entwurfsansicht des Unterformulars frmLookupKategorien<\/span><\/b><\/p>\n<p><IMG height=\"400\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic007.png\" width=\"452\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Entwurfsansicht des Lookupformulars<\/span><\/b><\/p>\n<p>Stellen Sie die Eigenschaft Standardansicht auf Endlosformular ein. Damit das Kombinationsfeld nicht die in dem Feld KategorieID enthaltene Zahl, sondern die damit verbundene Kategorie anzeigt, m&uuml;ssen Sie das Feld in ein Kombinationsfeld umwandeln und einige Eigenschaften anpassen:<\/p>\n<li>Markieren Sie das Textfeld und &ouml;ffnen Sie mit der rechten Maustaste das Kontextmen&uuml;. W&auml;hlen Sie dort den Eintrag &auml;ndern zu\/Kombinationsfeld aus.<\/li>\n<li>Stellen Sie die Eigenschaft Datensatzherkunft des Kombinationsfeldes auf den Wert tblKategorien ein.<\/li>\n<li>Stellen Sie die beiden Eigenschaften Spaltenanzahl und Spaltenbreite auf die Werte 2 beziehungsweise 0 ein. Der Wert 0 f&uuml;r die Spaltenbreite bewirkt, dass die erste Spalte der Datensatzherkunft, KategorieID, nicht angezeigt wird. (<\/li>\n<p>Da wie bei den 1:n-Lookupdaten auch hier neue Daten eingegeben werden k&ouml;nnen, legen Sie die dort verwendete Prozedur, die durch die Ereigniseigenschaft Bei Nicht in Liste ausgel&ouml;st wird, auch f&uuml;r dieses Kombinationsfeld an. Nat&uuml;rlich m&uuml;ssen Sie den Tabellen- und den Feldnamen auf tblKategorien beziehungsweise Kategorie anpassen.<\/p>\n<p>Damit sind die Arbeiten an dem Unterformular abgeschlossen. Legen Sie nun ein neues Formular an. Weisen Sie ihm die Tabelle tblPersonen als Datenherkunft zu. Ziehen Sie das Unterformular sfmLookupKategorien vom Datenbankfenster in den Formularentwurf des Formulars frmLookupKategorien. Unter normalen Umst&auml;nden erkennt das Unterformular automatisch, dass es jeweils die zur im Hauptformular angezeigten Person geh&ouml;renden Kategorien anzeigen soll und dr&uuml;ckt dies durch entsprechende Eintr&auml;ge in den beiden Feldern Verkn&uuml;pfen von und Verkn&uuml;pfen nach aus (siehe Bild 7).<\/p>\n<pre>Private Sub cmdLoeschen_Click()\r\n    Dim cnn As Connection\r\n    Set cnn = CurrentProject.Connection\r\n    If Not IsNull(Me.sfmLookupKategorien) Then\r\n        cnn.Execute \"DELETE FROM tblPersonenKategorien WHERE PersonID = \" _            & Me.PersonID & \" AND KategorieID = \" _            & Me.sfmLookupKategorien.Form.KategorieID\r\n        Me.sfmLookupKategorien.Form.Requery\r\n    Else\r\n        MsgBox \"Kein Datensatz ausgew&auml;hlt.\"\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Private Sub cmdOK_Click()\r\n    DoCmd.Close acForm, Me.Name\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<pre>Private Sub cmdLookupKategorien_Click()\r\n    DoCmd.RunCommand accmdSaveRecord\r\n    DoCmd.OpenForm \"frmLookupKategorien\", WindowMode:=acDialog, _        WhereCondition:=\"PersonID = \" & Me.PersonID\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<p><IMG height=\"257\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic008.png\" width=\"290\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Formular zur Zuordnung von Kategorien zu Personen<\/span><\/b><\/p>\n<p>F&uuml;gen Sie dem Hauptformular nun noch einen entsprechenden Hinweistext hinzu und legen Sie zwei Schaltfl&auml;chen zum L&ouml;schen von Datens&auml;tzen und Schlie&szlig;en des Formulars an. Die beiden Schaltfl&auml;chen erhalten die Bezeichnungen cmdOK und cmdLoeschen und die Prozeduren aus Quellcode 2 und Quellcode 3 f&uuml;r die jeweiligen Ereigniseigenschaften Beim Klicken. Nach einigen kosmetischen Eingriffen k&ouml;nnte das Formular beispielsweise wie in Bild 8 aussehen.<\/p>\n<p>Sie k&ouml;nnen in dem Formular frmLookupKategorien nun bestehende Kategorien ausw&auml;hlen, neue Kategorien eingeben und direkt in die Auswahl &uuml;bernehmen und ausgew&auml;hlte Kategorien wieder entfernen.<\/p>\n<h3>Aufruf des Lookupformulars vomHauptformular<\/h3>\n<p>Das Formular frmLookupKategorien soll zur Auswahl von Kategorien f&uuml;r einen bestimmten Eintrag der Tabelle tblPersonen dienen. Es enth&auml;lt allerdings keinerlei Informationen &uuml;ber die jeweilige Person, sodass der Benutzer im Dunkeln tappt, wessen Daten er gerade bearbeitet. <\/p>\n<p>Das ist aber nur der Fall, wenn das Formular einzeln aufgerufen wird. Geplant ist aber der Aufruf dieses Formulars vom Hauptformular frmPersonen aus.<\/p>\n<pre>Private Sub MetadatenAktualisieren()\r\n    Dim cnn As ADODB.Connection\r\n    Dim rstKategorien As New ADODB.Recordset\r\n    Dim strKategorien As String\r\n    If Not IsNull(Me.PersonID) Then\r\n        Set cnn = CurrentProject.Connection\r\n        With rstKategorien\r\n            .Source = \"SELECT Kategorie FROM tblKategorien INNER JOIN \" _                & \"tblPersonenKategorien ON tblKategorien.KategorieID = \" _                & \"tblPersonenKategorien.KategorieID WHERE \" _                & \"tblPersonenKategorien.PersonID = \" & Me.PersonID _                & \" ORDER BY Kategorie\"\r\n            .ActiveConnection = cnn\r\n            .CursorType = adOpenForwardOnly\r\n            .LockType = adLockOptimistic\r\n            .Open\r\n            Do While Not .EOF\r\n            strKategorien = strKategorien & !Kategorie & \"; \"\r\n            .MoveNext\r\n        Loop\r\n        End With\r\n        If Len(strKategorien) &gt; 0 Then\r\n            strKategorien = Mid(strKategorien, 1, Len(strKategorien) - 2)\r\n            Me.txtKategorien = strKategorien\r\n        Else\r\n            Me.txtKategorien = \"\"\r\n        End If\r\n    Else\r\n        Me.txtKategorien = \"\"\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<p>Dort wird das Formular frmLookupKontakte per Mausklick auf die Schaltfl&auml;che cmdLookupKontakte ge&ouml;ffnet. Mit dem Parameter WhereCondition wird der Wert PersonID f&uuml;r die aktuell im Formular frmPersonen angezeigte Person &uuml;bergeben.<\/p>\n<p>Daf&uuml;r sorgt die Prozedur aus Quellcode 4, die Sie f&uuml;r die Ereigniseigenschaft Beim Klicken der Schaltfl&auml;che cmdLookupKategorien hinterlegen. Der aktuelle Datensatz wird vorsichtshalber gespeichert, da bei einem neuen Datensatz sonst zwar schon ein Eintrag f&uuml;r das Prim&auml;rschl&uuml;sselfeld angezeigt w&uuml;rde, der Datensatz aber noch nicht in der Tabelle gespeichert w&auml;re und es damit beim Hinzuf&uuml;gen verkn&uuml;pfter Datens&auml;tze zu Fehlern k&auml;me. <\/p>\n<p>In der Folge w&uuml;rde im Formular frmLookupKategorien ein Fehler auftreten, wenn ein neuer Datensatz in der Tabelle tblPersonenKategorien angelegt wird, ohne dass die betreffende Person in der Tabelle tblPersonen gespeichert ist.<\/p>\n<h3>Anzeigen der Lookupdaten im Hauptformular<\/h3>\n<p>Im derzeitigen Stand k&ouml;nnen Sie zwar die Kategorien der einzelnen Personen verwalten, aber diese werden noch nicht im Hauptformular angezeigt. Damit sich das &auml;ndert, legen Sie die Prozedur aus Quellcode 5 an. Die Prozedur erzeugt eine Datensatzgruppe namens rstKategorien, die aus den beiden verkn&uuml;pften Tabellen tblPersonenKategorien und tblKategorien besteht und nach dem Feld PersonID der aktuell im Formular angezeigten Person gefiltert ist.<\/p>\n<p><IMG height=\"381\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic009.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Anzeige von per m:n-Beziehung verkn&uuml;pften Lookupdaten<\/span><\/b><\/p>\n<p>Innerhalb einer Do While-Schleife werden alle Datens&auml;tze der Datensatzgruppe durchlaufen und die jeweiligen Eintr&auml;ge des Feldes Kategorie durch Semikola getrennt aneinandergef&uuml;gt. Nach dem Durchlaufen aller Datens&auml;tze wird das letzte, &uuml;berfl&uuml;ssige Semikolon abgetrennt &#8211; vorausgesetzt die Zeichenkette strKategorien ist keine leere Zeichenkette. Das Ergebnis sieht wie in Bild 9 aus. Sinnvollerweise sollten Sie das Textfeld zur Anzeige der Kategorien f&uuml;r Benutzereingaben sperren, da dort direkt vorgenommene &auml;nderungen nicht gespeichert w&uuml;rden.<\/p>\n<p>F&uuml;r 1:n- wie auch f&uuml;r m:n-Lookupdaten gilt, dass sich mit der Zeit vermutlich einige Datens&auml;tze ansammeln und die Auswahl in den jeweiligen Kombinationsfeldern un&uuml;bersichtlich wird. Hinzu kommt, dass auch hier durchaus mehrere Schreibweisen f&uuml;r den gleichen Begriff verwendet werden k&ouml;nnten. Ganz unangenehm sind Karteileichen &#8211; f&uuml;r die Verkn&uuml;pfung vorgehaltene Eigenschaften, die aktuell mit keinem Datensatz verkn&uuml;pft sind und m&ouml;glicherweise auch nie mehr ben&ouml;tigt werden.<\/p>\n<p>Wie schnell ist bei einer 1:n-Lookupbeziehung mal eben ein Eintrag falsch geschrieben, und treibt fortan sein Unwesen in den entsprechenden Kombinationsfeldern. Um die zur Verf&uuml;gung stehenden Eintr&auml;ge zu verwalten, verwenden Sie ein spezielles Formular mit verschiedenen Funktionen.<\/p>\n<h2>Funktionen des Formulars zurVerwaltung von m:n-Lookupdaten<\/h2>\n<p>Die Verwaltung von m:n-Lookupdaten soll drei Funktionen bieten:<\/p>\n<li>Anlegen neuer Kategorien<\/li>\n<li>L&ouml;schen unbenutzter Kategorien<\/li>\n<li>&uuml;berf&uuml;hren doppelter Kategorien ineinander<\/li>\n<p>Das fertige Formular zur Erf&uuml;llung dieser Aufgabe sieht wie in Bild 10 aus.<\/p>\n<h2>Erstellen desFormulars zurVerwaltung vonm:n-Lookupdaten<\/h2>\n<p>Zum Erstellen des ben&ouml;tigten Formulars gehen Sie folgenderma&szlig;en vor: Legen Sie ein neues Formular an. Stellen Sie die Eigenschaften Bildlaufleisten, Datensatzmarkierer, Navigationsschaltfl&auml;chen und Trennlinien auf den Wert Nein.<\/p>\n<p>Speichern Sie das Formular dann unter dem Namen frmKategorienVerwalten.<\/p>\n<pre>Private Sub ogrAnzuzeigendeDatensaetze_AfterUpdate()\r\n    Select Case Me.ogrAnzuzeigendeDatensaetze\r\n        Case 1\r\n            Me!lstKategorien.RowSource = \"tblKategorien\"\r\n            Me.cmdLoeschen.Enabled = False\r\n        Case 2\r\n            Me!lstKategorien.RowSource = \"SELECT DISTINCT \" _                & \"tblPersonenKategorien.KategorieID, tblKategorien.Kategorie \" _                & \"FROM tblPersonenKategorien INNER JOIN tblKategorien ON \" _                & \"tblPersonenKategorien.KategorieID = tblKategorien.KategorieID\"\r\n            Me.cmdLoeschen.Enabled = False\r\n        Case 3\r\n            Me!lstKategorien.RowSource = \"SELECT * FROM tblKategorien WHERE \" _                & \"KategorieID NOT IN (SELECT tblPersonenKategorien.KategorieID \" _                & \"FROM tblPersonenKategorien INNER JOIN tblKategorien ON \" _                & \"tblPersonenKategorien.KategorieID = tblKategorien.KategorieID)\"            Me.cmdLoeschen.Enabled = True\r\n    End Select\r\n    Me.lstKategorien = Me.lstKategorien.ItemData(0)\r\n    Me!cboKategorien.Requery\r\n    If Me.cboKategorien = Me.lstKategorien Then\r\n        Me.cboKategorien = Me.cboKategorien.ItemData(0)\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p><IMG height=\"0\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic010.png\" width=\"0\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10:  Formular zur Verwaltung von Lookupdaten<\/span><\/b><\/p>\n<p>Nun k&ouml;nnen Sie mit dem Anlegen der ben&ouml;tigten Steuerelemente beginnen.<\/p>\n<h2>Anzeige der m:n-Lookupdaten<\/h2>\n<p>Beginnen Sie mit dem Listenfeld zur Anzeige aller ben&ouml;tigten Eintr&auml;ge. Das Listenfeld erh&auml;lt als Datensatzherkunft die Tabelle tblKategorien und soll aus dieser Tabelle lediglich das Feld Kategorie anzeigen. Damit das erste Feld der Datensatzherkunft, das Feld KategorieID, nicht angezeigt wird, stellen Sie die beiden Eigenschaften Spaltenanzahl und Spaltenbreite auf die Werte 2 und 0 ein. Die Eigenschaft Name erh&auml;lt den Wert lstKategorien.<\/p>\n<p>Die Datensatzherkunft des Listenfeldes soll neben der Menge aller Datens&auml;tze der Tabelle tblKategorien auch nur diejenigen anzeigen, die bereits mit einem Datensatz aus der Tabelle tblPersonen verkn&uuml;pft sind, und solche, die mit gar keinem Datensatz verkn&uuml;pft sind.<\/p>\n<h2>Filtern der Lookupdatens&auml;tze<\/h2>\n<p>Dazu legen Sie zun&auml;chst eine Optionsgruppe mit drei Optionen an, &uuml;ber die der Benutzer die gew&uuml;nschte Filterung ausw&auml;hlen kann. Die Optionen erhalten Beschriftungen wie in Bild 11 und von oben nach unten die Optionswerte 1 bis 3.<\/p>\n<p>F&uuml;r die Ereigniseigenschaft Nach Aktualisierung der Optionsgruppe legen Sie die Prozedur aus Quellcode 6 an.<\/p>\n<p>Die Prozedur aktualisiert die Datensatzherkunft des Listenfeldes je nach der ausgew&auml;hlten Option. Au&szlig;erdem aktiviert es die Schaltfl&auml;che cmdLoeschen nur, wenn die nicht verkn&uuml;pften Eintr&auml;ge der Tabelle tblKategorien angezeigt werden.<\/p>\n<p><IMG height=\"0\" src=\"..\/fileadmin\/_temp_\/{FA010730-7BCB-4D40-B355-D24DC6641323}\/pic011.png\" width=\"0\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11:  Das Formular frmKategorienVerwalten in der Entwurfsansicht<\/span><\/b><\/p>\n<h2>&uuml;berf&uuml;hren von m:n-Lookupdaten<\/h2>\n<p>Schlie&szlig;lich f&uuml;gen Sie dem Formular einen Bereich hinzu, der ein Kombinationsfeld sowie eine Schaltfl&auml;che mit den Namen cboKategorien beziehungsweise cmdUeberfuehren enth&auml;lt.<\/p>\n<p>Diese Funktion soll dazu dienen, Kategorien gleicher Bedeutung, aber mit unterschiedlichen Bezeichnungen zu vereinheitlichen. Wenn es beispielsweise zwei Kategorien namens Partner und Gesch&auml;ftspartner gibt, soll die Kategorie Partner gel&ouml;scht werden und alle Zuordnungen in der Tabelle tblPersonenKategorien, die auf die Kategorie Partner verweisen, auf den Eintrag Gesch&auml;ftspartner umgelenkt werden.<\/p>\n<p>Der Eintrag Partner soll anschlie&szlig;end direkt aus der Tabelle tblKategorien entfernt werden.<\/p>\n<p>Damit dies funktioniert, m&uuml;ssen Sie die Steuerelemente folgenderma&szlig;en anpassen und mit Prozeduren versehen:<\/p>\n<p>Das Kombinationsfeld soll immer alle Beitr&auml;ge anzeigen au&szlig;er dem, der gerade im Listenfeld aktiviert ist. Dazu geben Sie als Datensatzherkunft die SQL-Anweisung aus Quellcode 7 an.<\/p>\n<p>Damit die Datensatzherkunft bei &auml;nderungen des Inhalts des Listenfeldes immer direkt angepasst wird, legen Sie f&uuml;r die Ereigniseigenschaft Nach Aktualisierung des Listenfeldes die Prozedur aus Quellcode 8 an.<\/p>\n<p>Im unteren Teil der Prozedur aus Quellcode 6, die bei Auswahl einer neuen Untermenge der vorhandenen Kategorien ausgel&ouml;st wird, befinden sich einige Zeilen, die das Kombinationsfeld aktualisieren und &uuml;berpr&uuml;fen, ob durch die &auml;nderung des Inhalts des Listenfeldes beide Steuerelemente, also sowohl Listen- als auch Kombinationsfeld, den gleichen Datensatz anzeigen. In dem Fall wird das Kombinationsfeld automatisch wieder auf den Wert &lt;ausw&auml;hlen&gt; eingestellt.<\/p>\n<h2>Das &uuml;berf&uuml;hren von Kategorien in andere Kategorien<\/h2>\n<p>Bleibt noch die Schaltfl&auml;che, mit der das &uuml;berf&uuml;hren der ausgew&auml;hlten Kategorie in die gew&uuml;nschte Zielkategorie durchgef&uuml;hrt wird. Die beim Klicken auf die Schaltfl&auml;che ausgel&ouml;ste Prozedur finden Sie in Quellcode 9.<\/p>\n<pre>SELECT 0 AS KategorieID, ''&lt;ausw&auml;hlen&gt;'' AS Kategorie FROMtblKategorien UNION SELECT tblKategorien.KategorieID, tblKategorien.Kategorie FROM tblKategorien WHERE (((tblKategorien.KategorieID)&lt;&gt;[Forms]![frmKategorienVerwalten]![lstKategorien]));<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<pre>Private Sub lstKategorien_AfterUpdate()\r\n    Me!cboKategorien.Requery\r\n    If Me.lstKategorien = Me.cboKategorien Then\r\n        Me.cboKategorien = Me.cboKategorien.ItemData(0)\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<pre>Private Sub cmdUeberfuehren_Click()\r\n    Dim cnn As ADODB.Connection\r\n    Set cnn = CurrentProject.Connection\r\n    If Me.cboKategorien = 0 Or Me.lstKategorien = 0 Then\r\n        MsgBox \"Bitte w&auml;hlen Sie die zu &uuml;berf&uuml;hrende \" _            & \"und die Zielkategorie aus.\"\r\n        Exit Sub\r\n    Else\r\n        On Error Resume Next\r\n        cnn.Execute \"UPDATE tblPersonenKategorien \" _            & \"SET KategorieID = \" & Me!cboKategorien _            & \" WHERE KategorieID = \" & Me!lstKategorien\r\n        If Err.Number &gt; 0 Then\r\n            cnn.Execute \"DELETE FROM \" _                & \"tblPersonenKategorien WHERE \" _                 \"KategorieID = \" & Me.lstKategorien\r\n        End If\r\n        cnn.Execute \"DELETE FROM tblKategorien \" _            & \"WHERE KategorieID = \" & Me!lstKategorien\r\n    End If\r\n    Me!lstKategorien.Requery\r\n    Me!lstKategorien = Me!lstKategorien.ItemData(0)\r\n    Me!cboKategorien.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 9<\/b><\/p>\n<pre>Private Sub cmdOK_Click()\r\n    If IstFormularGeoeffnet(\"frmLookupdaten\") Then\r\n        Forms!frmLookupdaten.Requery\r\n    End If\r\n    DoCmd.Close acForm, Me.Name\r\nEnd Sub<\/pre>\n<p><b>Quellcode 10<\/b><\/p>\n<p>Die Prozedur &uuml;berpr&uuml;ft zun&auml;chst, ob beide Steuerelemente einen Wert ungleich 0 enthalten, ob also je eine Kategorie ausgew&auml;hlt ist.<\/p>\n<p>Falls ja, werden zwei Aktualisierungsabfragen durchgef&uuml;hrt.<\/p>\n<p>Die erste &auml;ndert alle Datens&auml;tze der Tabelle tblPersonenKategorien mit der zu &uuml;berf&uuml;hrenden Kategorie auf die Zielkategorie ab.<\/p>\n<p>Dabei kann es vorkommen, dass eine Person bereits der Zielkategorie zugeordnet ist. In dem Fall wird nur die Zuordnung der betroffenen Person zu der zu &uuml;berf&uuml;hrenden Kategorie ge&auml;ndert.<\/p>\n<p>Die zweite Aktualisierungsabfrage l&ouml;scht die zu &uuml;berf&uuml;hrende Kategorie, da diese nun nicht mehr ben&ouml;tigt wird. Anschlie&szlig;end werden noch die beiden Listen aktualisiert.<\/p>\n<h2>NotwendigeAktualisierung des Hauptformulars<\/h2>\n<p>Da sich durch &uuml;berf&uuml;hrungen unter Umst&auml;nden der in dem Hauptformular anzuzeigende Inhalt &auml;ndert, muss &uuml;berpr&uuml;ft werden, ob das Hauptformular ge&ouml;ffnet ist und der Inhalt des Textfeldes txtKategorien gegebenenfalls angepasst werden muss.<\/p>\n<p>Dazu verwenden Sie die Prozedur aus Quellcode 10, die durch das Ereignis Beim Klicken der Schaltfl&auml;che aufgerufen wird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lookupdaten sind solche Daten, die zur n&auml;heren Beschreibung von in Tabellen gespeicherten Objekten dienen. Gute Beispiele sind die Anrede oder das Geschlecht von Personen. Im vorliegenden Beitrag erfahren Sie, warum Lookupdaten verwendet werden, in welchen Formen das m&ouml;glich ist und wie sie am einfachsten verwaltet werden k&ouml;nnen.<\/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":[66022004,662004,44000028,44000023,44000021],"tags":[],"class_list":["post-55000211","post","type-post","status-publish","format-standard","hentry","category-66022004","category-662004","category-Ergonomie_und_Benutzeroberflaeche","category-Mit_Formularen_arbeiten","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>Lookupdaten in der Praxis - 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\/Lookupdaten_in_der_Praxis\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lookupdaten in der Praxis\" \/>\n<meta property=\"og:description\" content=\"Lookupdaten sind solche Daten, die zur n&auml;heren Beschreibung von in Tabellen gespeicherten Objekten dienen. Gute Beispiele sind die Anrede oder das Geschlecht von Personen. Im vorliegenden Beitrag erfahren Sie, warum Lookupdaten verwendet werden, in welchen Formen das m&ouml;glich ist und wie sie am einfachsten verwaltet werden k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:38+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81\" \/>\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=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Lookupdaten in der Praxis\",\"datePublished\":\"2020-05-06T15:17:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/\"},\"wordCount\":3314,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/dc8ab59c6bae42138e86de48d24eed81\",\"articleSection\":[\"2\\\/2004\",\"2004\",\"Ergonomie und Benutzeroberfl\u00e4che\",\"Mit Formularen arbeiten\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/\",\"name\":\"Lookupdaten in der Praxis - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/dc8ab59c6bae42138e86de48d24eed81\",\"datePublished\":\"2020-05-06T15:17:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/dc8ab59c6bae42138e86de48d24eed81\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/dc8ab59c6bae42138e86de48d24eed81\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Lookupdaten_in_der_Praxis\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lookupdaten in der Praxis\"}]},{\"@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":"Lookupdaten in der Praxis - 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\/Lookupdaten_in_der_Praxis\/","og_locale":"de_DE","og_type":"article","og_title":"Lookupdaten in der Praxis","og_description":"Lookupdaten sind solche Daten, die zur n&auml;heren Beschreibung von in Tabellen gespeicherten Objekten dienen. Gute Beispiele sind die Anrede oder das Geschlecht von Personen. Im vorliegenden Beitrag erfahren Sie, warum Lookupdaten verwendet werden, in welchen Formen das m&ouml;glich ist und wie sie am einfachsten verwaltet werden k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:38+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Lookupdaten in der Praxis","datePublished":"2020-05-06T15:17:38+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/"},"wordCount":3314,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81","articleSection":["2\/2004","2004","Ergonomie und Benutzeroberfl\u00e4che","Mit Formularen arbeiten","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/","url":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/","name":"Lookupdaten in der Praxis - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81","datePublished":"2020-05-06T15:17:38+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/dc8ab59c6bae42138e86de48d24eed81"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Lookupdaten_in_der_Praxis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Lookupdaten in der Praxis"}]},{"@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\/55000211","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=55000211"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000211\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}