{"id":55001440,"date":"2023-08-01T00:00:00","date_gmt":"2023-07-31T14:23:10","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1440"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ungebundene_Listen_und_Kombis_mit_Daten_fuellen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Ungebundene_Listen_und_Kombis_mit_Daten_fuellen\/","title":{"rendered":"Ungebundene Listen und Kombis mit Daten f&uuml;llen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/876cdf67ff5f490abaf6f9146b10e2ba\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im Beitrag &#8222;Daten in ungebundenen Formularen bearbeiten&#8220; haben wir gezeigt, wie man die Daten einer Tabelle in einem ungebundenen Formular darstellt und dieses zum Bearbeiten und Anlegen von Datens&auml;tzen verwendet. Wenn wir dies konsequent umsetzen wollen, ben&ouml;tigen wir auch eine M&ouml;glichkeit, um Daten in Listenform anzuzeigen. Die Datenblatt- oder Endlosansicht fallen aus, also m&uuml;ssen wir uns um Alternativen k&uuml;mmern. F&uuml;r die mehrspaltige Listenansicht bietet Access das Listenfeld. Und f&uuml;r die Auswahl von Daten aus Lookup-Tabellen steht das Kombinationsfeld zur Verf&uuml;gung. Beide sind jedoch, wie auch Formulare, f&uuml;r die Bindung an Tabellen oder Abfragen optimiert. Ungebundene Daten m&uuml;ssen wir dort erst einmal einpflegen. Auf welche Arten das gelingt, zeigt dieser Beitrag. <\/b><\/p>\n<h2>Listen- oder Kombinationsfeld<\/h2>\n<p>Die folgenden Informationen beziehen sich jeweils auf Listen- und Kombinationsfelder, wenn nicht anders angegeben.<\/p>\n<h2>Techniken zum F&uuml;llen von Kombinations- und Listenfeldern ohne Datenbindung<\/h2>\n<p>Wenn wir Kombinations- oder Listenfelder an Tabellen oder Abfragen binden, brauchen wir nur noch festzulegen, aus welchen Feldern der Datensatzherkunft die anzuzeigenden Daten stammen und welches Feld als gebundene Spalte genutzt werden soll. Der Rest funktioniert fast automatisch.<\/p>\n<p>Wenn wir jedoch nicht auf die Datenbindung setzen k&ouml;nnen, brauchen wir alternative Techniken. Davon gibt es gleich drei, von denen zwei offensichtlich sind und eine nicht. Und von den beiden offensichtlichen k&ouml;nnen wir auch nur eine f&uuml;r unsere Zwecke nutzen. Bei den offensichtlichen M&ouml;glichkeiten reden wir von denen, die neben dem Eintrag <b>Tabelle\/Abfrage <\/b>f&uuml;r die Eigenschaft <b>Herkunftstyp<\/b> zur Verf&uuml;gung stehen (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_001.png\" alt=\"Einstellungen f&uuml;r die Eigenschaft Herkunftstyp\" width=\"649,559\" height=\"362,0653\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Einstellungen f&uuml;r die Eigenschaft Herkunftstyp<\/span><\/b><\/p>\n<p>Dabei handelt es sich um die Folgenden:<\/p>\n<ul>\n<li><b>Wertliste<\/b>: Ist dieser Eintrag aktiviert, k&ouml;nnen wir f&uuml;r die Eigenschaft <b>Datensatzherkunft <\/b>eine durch Semikola separierte Liste von Eintr&auml;gen angeben. Standardm&auml;&szlig;ig landet jeder Eintrag in einer eigenen Zeile. Wenn wir die Eigenschaft <b>Spaltenanzahl <\/b>auf einen anderen Wert als <b>1 <\/b>einstellen, werden entsprechend viele Eintr&auml;ge in einer Zeile dargestellt &#8211; mehr dazu weiter unten in einem Beispiel.<\/li>\n<li><b>Feldliste<\/b>: Wenn wir den Wert <b>Feldliste <\/b>ausw&auml;hlen, m&uuml;ssen wir f&uuml;r die Eigenschaft <b>Datensatzherkunft <\/b>den Namen einer Tabelle oder Abfrage hinterlegen. Das Listenfeld zeigt dann die Feldnamen der angegebenen Tabelle oder Abfrage an. Diese Variante ist f&uuml;r uns in diesem Fall uninteressant.<\/li>\n<\/ul>\n<h2>Weitere Variante: Callback-Funktion<\/h2>\n<p>Und es gibt noch eine M&ouml;glichkeit, die wir sp&auml;ter betrachten werden: Dabei handelt es sich um die sogenannte Callback-Funktion. Dies ist eine Funktion, mit der wir definieren, welche Daten im Kombinations- oder Listenfeld enthalten sein sollen.<\/p>\n<p>Der wesentliche Unterschied ist, dass wir mit dieser Methode mehr Eintr&auml;ge zu einem Kombinations- oder Listenfeld hinzuf&uuml;gen k&ouml;nnen als mit einer Wertliste. Diese Technik schauen wir uns in einem weiteren Beitrag namens <b> Ungebundene List- und ComboBox per Callback<\/b> (<b>www.access-im-unternehmen.de\/1443<\/b>).<\/p>\n<h2>Kombinationsfeld per Wertliste f&uuml;llen<\/h2>\n<p>Im ersten Beispiel schauen wir uns an, wie wir ein Kombinationsfeld &uuml;ber eine Wertliste mit den Daten einer Tabelle f&uuml;llen. Wir wollen dabei extra eine Tabelle mit wenigen Datens&auml;tzen nutzen wie die Tabelle <b>tblAnreden<\/b> (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_002.png\" alt=\"Beispieltabelle zum F&uuml;llen eines Kombinationsfeldes\" width=\"424,5589\" height=\"165,7801\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Beispieltabelle zum F&uuml;llen eines Kombinationsfeldes<\/span><\/b><\/p>\n<p>Wenn wir nur so wenige Datens&auml;tze haben und es sich auch noch um solche Datens&auml;tze handelt, die sich eigentlich nie &auml;ndern, k&ouml;nnte man versucht sein, diese einfach statisch f&uuml;r die Eigenschaft <b>Datensatzherkunft <\/b>einzustellen. Wenn man gleichzeitig die Eigenschaft <b>Herkunftstyp<\/b> auf <b>Wertliste <\/b>einstellt und die beiden Eigenschaften <b>Spaltenanzahl <\/b>auf <b>2 <\/b>und <b>Spaltenbreiten <\/b>auf <b>0cm<\/b>, werden die Daten genau angezeigt wie in einem an die Tabelle <b>tblAnreden <\/b>gebundenen Kombinationsfeld. Die Eigenschaft <b>Datensatzherkunft <\/b>f&uuml;llen wir wie folgt (siehe Bild 3):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_003.png\" alt=\"Einstellungen f&uuml;r ein statisch gef&uuml;lltes Kombinationsfeld\" width=\"599,559\" height=\"299,7794\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Einstellungen f&uuml;r ein statisch gef&uuml;lltes Kombinationsfeld<\/span><\/b><\/p>\n<pre>\"1\";\"Herr\";\"2\";\"Frau\"<\/pre>\n<p>Durch die Einstellung von <b>Spaltenanzahl <\/b>auf <b>2 <\/b>werden jeweils zwei Elemente in einer Zeile angezeigt. Durch die Angabe des Wertes <b>0cm <\/b>f&uuml;r die Eigenschaft <b>Spaltenbreiten <\/b>wird die erste Spalte dabei mit der Breite <b>0cm <\/b>angezeigt und die zweite nimmt den Rest der Breite ein. Das Ergebnis sehen wir in Bild 4 &#8211; es sieht aus wie ein &uuml;bliches gebundenes Kombinationsfeld.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_004.png\" alt=\"Ungebundenes Kombinationsfeld mit Daten\" width=\"424,5589\" height=\"146,8938\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Ungebundenes Kombinationsfeld mit Daten<\/span><\/b><\/p>\n<h2>Kombinationsfeld aus Recordset f&uuml;llen<\/h2>\n<p>Wir wollen das Kombinationsfeld jedoch nicht statisch f&uuml;llen, sondern auch f&uuml;r den Fall vorbereitet sein, dass die zugrunde liegende Tabelle nicht immer die gleichen Datens&auml;tze enth&auml;lt.<\/p>\n<p>Also f&uuml;gen wir dem Formular ein weiteres Kombinationsfeld hinzu, dem wir diesmal den Namen <b>cboAnredeRecordset <\/b>geben.<\/p>\n<p>Dabei behalten wir die Einstellung <b>Wertliste <\/b>f&uuml;r die Eigenschaft <b>Herkunftsart <\/b>bei, und auch die beiden Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>belassen wir bei den Werten <b>2 <\/b>und <b>0cm<\/b>. Die Eigenschaft <b>Datensatzherkunft <\/b>lassen wir jedoch zun&auml;chst leer. Um diese zu f&uuml;llen, legen wir eine VBA-Prozedur an, die wie in Listing 1aussieht.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboAnredeRecordsetFuellen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strWertliste<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblAnreden\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         strWertliste = strWertliste & rst!AnredeID & \";''\" & rst!Anrede & \"'';\"\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     Me!cboAnredenRecordset.RowSource = strWertliste\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: F&uuml;llen der Wertliste beim Laden des Formulars<\/span><\/b><\/p>\n<p>Sie wird wie folgt durch das Ereignis <b>Bei Laden <\/b>des Formulars ausgel&ouml;st:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     cboAnredeRecordsetFuellen\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese Prozedur erstellt ein Recordset auf Basis der Tabelle <b>tblAnreden<\/b> und durchl&auml;uft in einer <b>Do While<\/b>-Schleife alle Datens&auml;tze dieser Tabelle. Dabei f&uuml;gt sie bei jedem Durchlauf der Schleife die Daten eines Datensatzes zu einer Variablen namens <b>strWertliste <\/b>hinzu. Nach dem Hinzuf&uuml;gen der Daten f&uuml;r den ersten Datensatz sieht der Inhalt von <b>strWertliste <\/b>beispielsweise wie folgt aus:<\/p>\n<pre>1;''Herr'';<\/pre>\n<p>Nach dem Durchlaufen aller beiden Datens&auml;tze erhalten wir fast den gleichen Inhalt wie beim vorherigen Beispiel &#8211; mit Ausnahme des abschlie&szlig;enden Semikolons:<\/p>\n<pre>1;''Herr'';2;''Frau'';<\/pre>\n<p>Dieses wirkt sich jedoch nicht auf die Darstellung aus, weshalb wir es nicht noch nachtr&auml;glich entfernen.<\/p>\n<p>Auch mit dieser Vorgehensweise sehen wir nach dem &Ouml;ffnen des Formulars die beiden Eintr&auml;ge <b>Herr <\/b>und <b>Frau <\/b>im Kombinationsfeld <b>cboAnredenRecordset<\/b>.<\/p>\n<h2>Alternative Variante f&uuml;r das Hinzuf&uuml;gen per Recordset<\/h2>\n<p>Eine weitere M&ouml;glichkeit erlaubt das direkte Hinzuf&uuml;gen von Elementen zum Kombinationsfeld. Dabei verwenden wir die <b>AddItem<\/b>-Methode des Kombinationsfeldes. In einer weiteren Prozedur, die wir ebenfalls von der Ereignisprozedur <b>Form_Load <\/b>aus aufrufen, durchlaufen wir dabei ebenfalls eine <b>Do&#8230;While<\/b>-Schleife &uuml;ber alle Datens&auml;tze der Tabelle <b>tblAnreden<\/b> (siehe Listing 2). Diesmal stellen wir allerdings keine Liste in der Variablen <b>strWertliste<\/b> zusammen, sondern weisen jedes Element direkt mit der <b>AddItem<\/b>-Methode hinzu.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboAnredeRecordsetAddItemFuellen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strWertliste<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblAnreden\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         Me!cboAnredenRecordsetAddItem.AddItem rst!AnredeID & \";''\" & rst!Anrede & \"''\"\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>[<\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 2: F&uuml;llen der Wertliste beim Laden des Formulars per AddItem<\/span><\/b><\/p>\n<p>Wenn wir wie zuvor eine zweispaltige Darstellung erhalten wollen, bei der die erste Spalte mit der Breite <b>0cm <\/b>ausgeblendet wird, m&uuml;ssen wir die Inhalte der beiden Felder <b>AnredeID <\/b>und <b>Anrede <\/b>jeweils mit einem einzigen Aufruf der <b>AddItem<\/b>-Methode hinzuf&uuml;gen, wobei wir beide durch ein Semikolon voneinander trennen und die Zeichenkette in Hochkommata einfassen.<\/p>\n<p>Auch diese Methode liefert das gleiche Ergebnis wie die beiden zuvor beschriebenen. Wenn wir uns den Wert der Eigenschaft <b>Datensatzherkunft <\/b>per VBA im Direktbereich ausgeben lassen, erhalten wir &uuml;brigens das folgende Ergebnis:<\/p>\n<pre>  Screen.ActiveControl.RowSource\r\n1;''Herr'';2;''Frau''<\/pre>\n<p>Die <b>AddItem<\/b>-Methode macht also nichts anderes als die Wertliste zu einer langen Zeichenkette zusammenzusetzen. Sie erm&ouml;glicht lediglich noch, &uuml;ber den zweiten Parameter den Index f&uuml;r die Position anzugeben, an welcher der neue Datensatz angelegt werden soll.<\/p>\n<h2>Hinweis zur Angabe der Spaltenzahl<\/h2>\n<p>Es gibt einen wichtigen Unterschied bei der Zuweisung der anzuzeigenden Daten f&uuml;r Listen, die entweder direkt durch die Zuweisung einer durch Semikola separierten Wertliste oder durch die Verwendung der <b>AddItem<\/b>-Methode gef&uuml;llt werden. Das l&auml;sst sich an einem Beispiel am besten verdeutlichen:<\/p>\n<pre>lst.RowSource = \"1;''Wert 1'';2;''Wert 2\"<\/pre>\n<p>Wenn wir hier die Eigenschaft <b>Spaltenanzahl <\/b>auf den Wert <b>1 <\/b>einstellen, interpretiert Access jedes durch ein Semikolon getrenntes Element als Inhalt f&uuml;r eine Spalte. Das sieht dann so aus:<\/p>\n<pre>1\r\nWert 1\r\n2 \r\nWert 2<\/pre>\n<p>W&uuml;rden wir <b>Spaltenanzahl <\/b>auf <b>2 <\/b>einstellen, landen jeweils zwei Werte in den beiden Spalten in einer Zeile.<\/p>\n<p>Bei Verwendung von <b>AddItem <\/b>ist das etwas anders. Angenommen, wir stellen <b>Spaltenanzahl <\/b>auf <b>1 <\/b>ein und weisen diesen Ausdruck per <b>AddItem <\/b>zu:<\/p>\n<pre>lst.AddItem 1;''Wert 1''<\/pre>\n<p>Dann verwendet Access tats&auml;chlich nur den Wert vor dem ersten Semikolon, der zweite wird verworfen. Das Ergebnis lautet also:<\/p>\n<pre>1\r\n2<\/pre>\n<p>Wir m&uuml;ssen also hier direkt die Spaltenanzahl korrekt einstellen.<\/p>\n<p>Ansonsten werden die &uuml;berz&auml;hligen Spalten beim Einlesen verworfen und k&ouml;nnen auch nicht durch anschlie&szlig;endes &Auml;ndern der Eigenschaft <b>Spaltenanzahl<\/b> zur&uuml;ckgeholt werden.<\/p>\n<h2>Grenzen von Wertlisten<\/h2>\n<p>Nun wollen wir herausfinden, wo die Grenzen von Wertlisten liegen. Dazu haben wir zun&auml;chst die Tabelle <b>tblKunden <\/b>mit einigen tausend Datens&auml;tzen gef&uuml;llt (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_005.png\" alt=\"Beispieltabelle mit vielen Datens&auml;tzen\" width=\"649,559\" height=\"230,6224\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Beispieltabelle mit vielen Datens&auml;tzen<\/span><\/b><\/p>\n<p>Mit diesen wollen wir ein weiteres Kombinationsfeld namens <b>cboKundenAddItem <\/b>f&uuml;llen, das ansonsten die gleichen Einstellungen wie die vorherigen Beispiele enth&auml;lt. Den Code haben wir insofern ge&auml;ndert, als das wir ein paar mehr Informationen in der zweiten Spalte ausgeben wollen &#8211; Anrede, Vorname und Nachname, jeweils durch ein Leerzeichen voneinander getrennt.<\/p>\n<p>Diese Aufgaben hat die Prozedur aus Listing 3 &uuml;bernommen, deren Aufruf wir ebenfalls in der Ereignisprozedur <b>Form_Load <\/b>untergebracht haben. Das Ergebnis war interessant: Es wurden schlicht nicht alle Eintr&auml;ge zum Kombinationsfeld hinzugef&uuml;gt, sondern nur 1.2. Was ist mit den &uuml;brigen Eintr&auml;gen geschehen &#8211; und warum gab es keine Fehlermeldung? Um dies herauszufinden, haben wir der Prozedur in der Schleife eine <b>Debug.Print<\/b>-Anweisung hinzugef&uuml;gt, mit der wie den Index des aktuellen Datensatzes des Recordsets, die L&auml;nge der in der Eigenschaft Datensatzherkunft (<b>RowSource<\/b>) gespeicherten Zeichenkette sowie die Anzahl der Eintr&auml;ge des Listenfeldes (<b>ListCount<\/b>).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboKundenAddItemFuellen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strWertliste<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngCount<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblKunden\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         Me!cboKundenAddItem.AddItem rst!KundeID & \";''\" & rst!Anrede & \" \" & rst!Vorname & \" \" & rst!Nachname & \"''\"\r\n         <span style=\"color:blue;\">Debug.Print<\/span> lngCount, <span style=\"color:blue;\">Len<\/span>(Me!cboKundenAddItem.RowSource), Me!cboKundenAddItem.ListCount\r\n         lngCount = lngCount + 1\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: F&uuml;llen der Wertliste mit vielen Eintr&auml;gen<\/span><\/b><\/p>\n<p>Das Ergebnis: Ab einem bestimmten Eintrag hat die Prozedur schlicht keine neuen Eintr&auml;ge mehr hinzugef&uuml;gt. Um zu pr&uuml;fen, ob dieses Ergebnis von einer maximal zul&auml;ssigen L&auml;nge der Zeichenkette abh&auml;ngt, haben wir den Nachnamen aus der <b>AddItem<\/b>-Methode entfernt:<\/p>\n<pre>Me!cboKundenAddItem.AddItem rst!KundeID & \";''\" _\r\n     & rst!Anrede & \" \" & rst!Vorname & \"''\" <\/pre>\n<p>Damit konnten nun einige hundert Eintr&auml;ge mehr angelegt werden. Die Frage ist nur, warum es keine Fehlermeldung gibt, wenn keine weiteren Eintr&auml;ge hinzugef&uuml;gt werden k&ouml;nnen. Tatsache ist: F&uuml;r sehr viele Daten ist diese Methode jedenfalls nicht geeignet.<\/p>\n<h2>Fehler beim Hinzuf&uuml;gen einer &uuml;berlangen Wertliste<\/h2>\n<p>Um die m&ouml;gliche L&auml;nge der Eigenschaft <b>Datensatzherkunft<\/b> genauer zu untersuchen, haben wir noch ein weiteres Kombinationsfeld namens <b>cboKundenWertliste <\/b>hinzugef&uuml;gt. Dieses f&uuml;llen wir mit einer Prozedur namens <b>cboKundenWertlisteFuellen<\/b> (siehe Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cboKundenWertlisteFuellen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strWertliste<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblKunden\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         strWertliste = strWertliste & rst!KundeID & \";''\" & rst!Vorname & \"'';''\" & rst!Nachname & \"'';\"\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     Me!cboKundenWertliste.RowSource = strWertliste\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: F&uuml;llen mit sehr vielen Kundendaten<\/span><\/b><\/p>\n<p>Hier haben wir die Kundendaten, die wir im vorherigen Beispiel mit der <b>AddItem<\/b>-Methode St&uuml;ck f&uuml;r St&uuml;ck zum Kombinationsfeld hinzugef&uuml;gt haben, zuerst in eine Variable namens <b>strWertliste <\/b>geschrieben und diese dann der Eigenschaft <b>Datensatzherkunft <\/b>zugewiesen.<\/p>\n<p>Bei einer L&auml;nge von 73.870 Zeichen f&uuml;hrt dies in der folgenden Zeile zum Fehler:<\/p>\n<pre>Me!cboKundenWertliste.RowSource = strWertliste<\/pre>\n<p>Den Fehler zeigt Bild 6. Durch Experimentieren haben wir schlie&szlig;lich herausgefunden, dass diese Kombinationsfeld genau 32.750 Zeichen aufnimmt. Genau genommen haben wir uns diese Arbeit durch einige zus&auml;tzliche Zeilen abnehmen lassen, die wir im Anschluss an das Zusammenstellen von <b>strWertliste <\/b>eingebaut haben.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_006.png\" alt=\"Laufzeitfehler beim Hinzuf&uuml;gen einer zu langen Wertliste\" width=\"424,5589\" height=\"240,3684\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Laufzeitfehler beim Hinzuf&uuml;gen einer zu langen Wertliste<\/span><\/b><\/p>\n<p>Hier haben wir in einer <b>For&#8230;Next<\/b>-Schleife so lange die zuzuweisende Zeichenkette um jeweils ein Zeichen verk&uuml;rzt, bis dies keinen Fehler mehr ausl&ouml;ste.<\/p>\n<p>Anschlie&szlig;end haben wir uns die Anzahl der Zeichen im Direktbereich ausgeben lassen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>lngLaenge<span style=\"color:blue;\"> As Long<\/span>\r\nFor lngLaenge = <span style=\"color:blue;\">Len<\/span>(strWertliste) To 1 Step -1\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     strWertliste = <span style=\"color:blue;\">Left<\/span>(strWertliste, lngLaenge)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> Me.cboKundenWertliste.RowSource\r\n     Me!cboKundenWertliste.RowSource = strWertliste\r\n     <span style=\"color:blue;\">If <\/span>Err.Number = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Exit For<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">Next<\/span> lngLaenge\r\n<span style=\"color:blue;\">Debug.Print<\/span> \"Maximale Zeichenzahl: \" & lngLaenge<\/pre>\n<p>Wir sehen also: Der Verwendung von Wertlisten als ungebundene Datenquelle von Kombinations- und Listenfeldern sind Grenzen gesetzt.<\/p>\n<h2>Abbruch, wenn die Datensatzherkunft voll ist?<\/h2>\n<p>Da Access bei Verwendung von <b>AddItem <\/b>zum F&uuml;llen eines Kombinations- oder Listenfeldes keinen Fehler ausl&ouml;st, wenn keine weiteren Daten aufgenommen werden k&ouml;nnen, haben wir Bedarf f&uuml;r eine Optimierung: Die Schleife &uuml;ber die Datens&auml;tze des Recordsets l&auml;uft n&auml;mlich dennoch weiter und das kostet Zeit. Wir k&ouml;nnen nun nach jedem Durchlauf pr&uuml;fen, ob der aktuelle Datensatz &uuml;berhaupt in die Datensatzherkunft aufgenommen wurde.<\/p>\n<p>Dazu m&uuml;ssten wir pr&uuml;fen, ob sich die Anzahl der Elemente des Kombinations- oder Listenfeldes seit dem letzten Aufruf von <b>AddItem <\/b>ver&auml;ndert hat, was wiederum in jedem Durchlauf geschehen m&uuml;sste. Das bedeutet eine zus&auml;tzliche Operation innerhalb einer Schleife, die gegebenenfalls sehr oft durchlaufen wird. Die Frage ist, ob es mehr Zeit kostet, wenn die Schleife einige Male umsonst durchlaufen wird, oder wenn wir nach jedem <b>AddItem<\/b>-Aufruf eine entsprechende Pr&uuml;fung durchf&uuml;hren.<\/p>\n<p>Dies h&auml;ngt letztlich von der Menge der Datens&auml;tze im Recordset ab. Wir f&uuml;gen beispielsweise der Prozedur <b>cboKundenAddItemFuellen <\/b>die folgende Variable hinzu:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>lngMengeVorher<span style=\"color:blue;\"> As Long<\/span><\/pre>\n<p>In der Schleife vergleichen wir die Anzahl der Listenelemente mit dem in <b>lngMengeVorher <\/b>gespeicherten Wert. Ist die Anzahl gleich, wurde kein neuer Eintrag mehr angelegt und wir k&ouml;nnen die Schleife verlassen. Danach speichern wir die neue aktuelle Anzahl der Listeneintr&auml;ge in der Variablen <b>lngMengeVorher<\/b>:<\/p>\n<pre><span style=\"color:blue;\">If <\/span>Me!lstKundenUngebunden.ListCount = lngMengeVorher<span style=\"color:blue;\"> Then<\/span>\r\n     <span style=\"color:blue;\">Exit Do<\/span>\r\n<span style=\"color:blue;\">End If<\/span>\r\nlngMengeVorher = Me!lstKundenUngebunden.ListCount<\/pre>\n<p>Dadurch wird die Schleife nach dem ersten vergeblichen Versuch, ein weiteres Element hinzuzuf&uuml;gen, verlassen.<\/p>\n<h2>Listenfeld statt Datenblatt<\/h2>\n<p>Dennoch ein kurzer Blick auf die Verwendung eines Listenfeldes als Ersatz f&uuml;r die Datenblatt- oder Endlosformularansicht. Hier richtet sich unser Fokus zun&auml;chst darauf, mehrere Felder einer Tabelle in den Spalten eines Listenfeldes darzustellen. <\/p>\n<p>Dazu legen wir ein neues Formular namens <b>frmListenfeldUngebunden <\/b>an und f&uuml;gen diesem ein neues Listenfeld-Steuerelement namens <b>lstKundenUngebunden <\/b>hinzu. F&uuml;r dieses stellen wir wieder die Eigenschaft <b>Herkunftsart<\/b> auf <b>Wertliste <\/b>ein.<\/p>\n<p>Au&szlig;erdem legen wir die Eigenschaften <b>Horizontaler Anker <\/b>und <b>Vertikaler Anker <\/b>auf den Wert <b>Beide <\/b>fest. Als Prozedur zum F&uuml;llen verwenden wir die Ereignisprozedur, die durch das Ereignis <b>Bei Laden <\/b>des Formulars ausgel&ouml;st wird (siehe Listing 5). Diese enth&auml;lt eine &auml;hnliche Anweisung wie die zum F&uuml;llen des Kombinationsfeldes weiter oben und verwendet wieder die <b>AddItem<\/b>-Methode zum Hinzuf&uuml;gen der Daten zum Listenfeld. In der <b>Do While<\/b>-Schleife zum Durchlaufen der Eintr&auml;ge haben wir direkt eine Bedingung untergebracht, die pr&uuml;ft, ob im aktuellen Durchlauf ein neues Element hinzugef&uuml;gt wurde. Wenn das nicht der Fall ist, verl&auml;sst die Prozedur die Schleife mit der <b>Exit Do<\/b>-Anweisung.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>lngMengeVorher<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblKunden\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         Me!lstKundenUngebunden.AddItem rst!KundeID & \";''\" & rst!Anrede & \"'';''\" & rst!Vorname & \"'';''\" & rst!Nachname _\r\n             & \"'';''\" & rst!Strasse & \"'';''\" & rst!PLZ & \"'';''\" & rst!Ort & \"'';''\" & rst!Land & \"''\"\r\n         <span style=\"color:blue;\">If <\/span>Me!lstKundenUngebunden.ListCount = lngMengeVorher<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">Exit Do<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         lngMengeVorher = Me!lstKundenUngebunden.ListCount\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: F&uuml;llen des Listenfeldes mit der AddItem-Methode<\/span><\/b><\/p>\n<p>Da Ergebnis sieht nach dem Einstellen der <b>Spaltenanzahl <\/b>auf den Wert <b>8 <\/b>wie in Bild 7 aus. Um die Spaltenbreiten zu optimieren, nutzen wir hier die Layoutansicht f&uuml;r Formulare. Damit k&ouml;nnen wir einige Eigenschaften anpassen und sehen direkt nach der Eingabe die Auswirkung im Formular.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1440_007.png\" alt=\"Mehrspaltiges Listenfeld mit Kundendaten\" width=\"649,559\" height=\"350,9111\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Mehrspaltiges Listenfeld mit Kundendaten<\/span><\/b><\/p>\n<h2>Anzeige von zu bearbeitenden Datens&auml;tzen<\/h2>\n<p>Im Beitrag <b>Daten in ungebundenen Formularen bearbeiten <\/b>(<b>www.access-im-unternehmen.de\/1442<\/b>) haben wir bereits ein Formular vorgestellt, mit dem wir die Daten aus einer Tabelle in einem ungebundenen Formular bearbeiten, neu anlegen und wieder in der Tabelle speichern k&ouml;nnen.<\/p>\n<p>In dem oben vorgestellten Listenfeld k&ouml;nnen wir die Daten nicht wie in der Datenblatt- oder Endlosformularansicht bearbeiten. Deshalb m&uuml;ssen wir eine Alternative schaffen. Diese lautet: Wir rufen nach einem Doppelklick auf einen der Eintr&auml;ge des Listenfeldes das Detailformular zu diesem Datensatz auf. Wie das im Detail gelingt, zeigen wir im Beitrag <b>Ungebundene Daten in &Uuml;bersicht und Detailansicht <\/b>(<b>www.access-im-unternehmen.de\/1444<\/b>).<\/p>\n<h2>Suchen und Sortieren von ungebundenen Listen<\/h2>\n<p>Die oben vorgestellten Beispiele haben die Grenzen von Kombinations- und Listenfeldern f&uuml;r die ungebundene Anzeige von Daten aufgezeigt: Die Menge der angezeigten Daten ist begrenzt, und zwar auf rund 32.750 Zeichen.<\/p>\n<p>Um dies zu umgehen, gibt es verschiedene M&ouml;glichkeiten. Man k&ouml;nnte immer nur eine begrenzte Menge an Datens&auml;tzen anzeigen und zwei Schaltfl&auml;chen zum Vor- und Zur&uuml;ckbl&auml;ttern hinzuf&uuml;gen. Dann w&uuml;rden immer die n&auml;chsten beziehungsweise vorherigen Datens&auml;tze geladen.<\/p>\n<p>Oder man f&uuml;gt dem Formular mit dem Listenfeld Textfelder hinzu, mit denen der Benutzer nach den Inhalten der einzelnen Spalten suchen beziehungsweise filtern kann.<\/p>\n<p>Auch hier w&uuml;rde man zu Beginn nur eine bestimmte Anzahl Datens&auml;tze anzeigen, die der aktuellen Sortierung nach einem bestimmten Feld entsprechen. Nach dem Eingeben eines Suchkriteriums wird das Listenfeld auf Basis dieses Kriteriums neu gef&uuml;llt.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Wie wir sehen, ist es grunds&auml;tzlich m&ouml;glich, Kombinations- und Listenfelder nicht nur durch direkte Bindung an Tabellen oder Abfragen mit Daten zu f&uuml;llen, sondern auch durch das direkte Zuweisen einer Wertliste oder das Einf&uuml;gen einzelner Elemente mit der <b>AddItem<\/b>-Methode.<\/p>\n<p>Wir haben auch erkannt, dass es bei dieser Methode eine Grenze gibt, die in der Anzahl der Zeichen liegt, die im Listenfeld als Datensatzherkunft verwendet werden.<\/p>\n<p>Deshalb schauen wir uns in einem weiteren Beitrag namens <b>Listen- und Kombinationsfelder per Callback f&uuml;llen <\/b>(<b>www.access-im-unternehmen.de\/1443<\/b>) eine alternative M&ouml;glichkeit an und pr&uuml;fen, ob diese die Anzeige umfangreicherer Datenmengen erlaubt.<\/p>\n<p>In einigen weiteren Beitr&auml;gen werfen wir einen Blick darauf, wie wir aus den gelernten Techniken aus diesem Beitrag und aus dem Beitrag <b>Daten in ungebundenen Formularen bearbeiten <\/b>(<b>www.access-im-unternehmen.de\/1442<\/b>) eine Mini-Anwendung erstellen k&ouml;nnen, die komplett auf die Bindung von Formularen und Steuerelementen an Tabellen oder Abfragen verzichtet.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>UngebundeneListenundKombisMitDatenFuellen.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/03233CBA-0F4D-4F0E-AA60-8B48903DDFD7\/aiu_1440.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Beitrag &#8222;Daten in ungebundenen Formularen bearbeiten&#8220; haben wir gezeigt, wie man die Daten einer Tabelle in einem ungebundenen Formular darstellt und dieses zum Bearbeiten und Anlegen von Datens&auml;tzen verwendet. Wenn wir dies konsequent umsetzen wollen, ben&ouml;tigen wir auch eine M&ouml;glichkeit, um Daten in Listenform anzuzeigen. Die Datenblatt- oder Endlosansicht fallen aus, also m&uuml;ssen wir uns um Alternativen k&uuml;mmern. F&uuml;r die mehrspaltige Listenansicht bietet Access das Listenfeld. Und f&uuml;r die Auswahl von Daten aus Lookup-Tabellen steht das Kombinationsfeld zur Verf&uuml;gung. Beide sind jedoch, wie auch Formulare, f&uuml;r die Bindung an Tabellen oder Abfragen optimiert. Ungebundene Daten m&uuml;ssen wir dort erst einmal einpflegen. Auf welche Arten das gelingt, zeigt dieser Beitrag. <\/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":[662023,66032023,66042023,44000023,44000021],"tags":[],"class_list":["post-55001440","post","type-post","status-publish","format-standard","hentry","category-662023","category-66032023","category-66042023","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>Ungebundene Listen und Kombis mit Daten f&uuml;llen - 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\/Memofelder_mit_sehr_langen_Texten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ungebundene Listen und Kombis mit Daten f&uuml;llen\" \/>\n<meta property=\"og:description\" content=\"Im Beitrag &quot;Daten in ungebundenen Formularen bearbeiten&quot; haben wir gezeigt, wie man die Daten einer Tabelle in einem ungebundenen Formular darstellt und dieses zum Bearbeiten und Anlegen von Datens&auml;tzen verwendet. Wenn wir dies konsequent umsetzen wollen, ben&ouml;tigen wir auch eine M&ouml;glichkeit, um Daten in Listenform anzuzeigen. Die Datenblatt- oder Endlosansicht fallen aus, also m&uuml;ssen wir uns um Alternativen k&uuml;mmern. F&uuml;r die mehrspaltige Listenansicht bietet Access das Listenfeld. Und f&uuml;r die Auswahl von Daten aus Lookup-Tabellen steht das Kombinationsfeld zur Verf&uuml;gung. Beide sind jedoch, wie auch Formulare, f&uuml;r die Bindung an Tabellen oder Abfragen optimiert. Ungebundene Daten m&uuml;ssen wir dort erst einmal einpflegen. Auf welche Arten das gelingt, zeigt dieser Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-31T14:23:10+00:00\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Ungebundene Listen und Kombis mit Daten f&uuml;llen\",\"datePublished\":\"2023-07-31T14:23:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/\"},\"wordCount\":2890,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/876cdf67ff5f490abaf6f9146b10e2ba\",\"articleSection\":[\"2023\",\"3\\\/2023\",\"4\\\/2023\",\"Mit Formularen arbeiten\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/\",\"name\":\"Ungebundene Listen und Kombis mit Daten f&uuml;llen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/876cdf67ff5f490abaf6f9146b10e2ba\",\"datePublished\":\"2023-07-31T14:23:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/876cdf67ff5f490abaf6f9146b10e2ba\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/876cdf67ff5f490abaf6f9146b10e2ba\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Memofelder_mit_sehr_langen_Texten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Memofelder mit sehr langen Texten\"}]},{\"@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":"Ungebundene Listen und Kombis mit Daten f&uuml;llen - 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\/Memofelder_mit_sehr_langen_Texten\/","og_locale":"de_DE","og_type":"article","og_title":"Ungebundene Listen und Kombis mit Daten f&uuml;llen","og_description":"Im Beitrag \"Daten in ungebundenen Formularen bearbeiten\" haben wir gezeigt, wie man die Daten einer Tabelle in einem ungebundenen Formular darstellt und dieses zum Bearbeiten und Anlegen von Datens&auml;tzen verwendet. Wenn wir dies konsequent umsetzen wollen, ben&ouml;tigen wir auch eine M&ouml;glichkeit, um Daten in Listenform anzuzeigen. Die Datenblatt- oder Endlosansicht fallen aus, also m&uuml;ssen wir uns um Alternativen k&uuml;mmern. F&uuml;r die mehrspaltige Listenansicht bietet Access das Listenfeld. Und f&uuml;r die Auswahl von Daten aus Lookup-Tabellen steht das Kombinationsfeld zur Verf&uuml;gung. Beide sind jedoch, wie auch Formulare, f&uuml;r die Bindung an Tabellen oder Abfragen optimiert. Ungebundene Daten m&uuml;ssen wir dort erst einmal einpflegen. Auf welche Arten das gelingt, zeigt dieser Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-07-31T14:23:10+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Ungebundene Listen und Kombis mit Daten f&uuml;llen","datePublished":"2023-07-31T14:23:10+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/"},"wordCount":2890,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/876cdf67ff5f490abaf6f9146b10e2ba","articleSection":["2023","3\/2023","4\/2023","Mit Formularen arbeiten","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/","url":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/","name":"Ungebundene Listen und Kombis mit Daten f&uuml;llen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/876cdf67ff5f490abaf6f9146b10e2ba","datePublished":"2023-07-31T14:23:10+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/876cdf67ff5f490abaf6f9146b10e2ba","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/876cdf67ff5f490abaf6f9146b10e2ba"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Memofelder_mit_sehr_langen_Texten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Memofelder mit sehr langen Texten"}]},{"@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\/55001440","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=55001440"}],"version-history":[{"count":1,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001440\/revisions"}],"predecessor-version":[{"id":88074216,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001440\/revisions\/88074216"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}