{"id":55001443,"date":"2023-08-01T00:00:00","date_gmt":"2023-07-31T14:23:19","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1443"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ungebundene_List_und_ComboBox_per_Callback","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/","title":{"rendered":"Ungebundene List- und ComboBox per Callback"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/d2ff12b1e5834ae3b4da5007215a5873\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im Beitrag &#8222;Ungebundene Listen und Kombis mit Daten f&uuml;llen&#8220; (www.access-im-unternehmen.de\/1440) haben wir uns angesehen, wir man Kombinations- und Listenfelder &uuml;ber das Zuweisen einer Wertliste oder mit der AddItem-Methode f&uuml;llen kann. Es gibt noch eine interessante Alternative, von der wir hoffen, dass wir damit sogar noch einige Eintr&auml;g mehr zu den Listen-Steuerelementen hinzuf&uuml;gen k&ouml;nnen als mit den oben genannten Methoden. Bei dieser Alternative handelt es sich um eine Technik, die eher stiefm&uuml;tterlich behandelt wird: Die Callbackfunktion. Wie man diese nutzt und ob man tats&auml;chlich mehr Daten als mit einer Wertliste in ungebundenen Listen-Steuerelementen anzeigen, untersuchen wir in diesem Beitrag.<\/b><\/p>\n<h2>Einfaches Beispiel f&uuml;r das F&uuml;llen per Callbackfunktion<\/h2>\n<p>Bevor wir uns daran begeben, die Daten umfangreicher Tabellen in ein Listenfeld zu f&uuml;llen, schauen wir und die grundlegende Vorgehensweise beim Verwenden von Callback-Funktionen zum F&uuml;llen von Kombinations- und Listenfeldern an. Bei Verwendung einer Callbackfunktion nutzen wir keine der drei bekannten M&ouml;glichkeiten f&uuml;r die Eigenschaft <b>Herkunftsart<\/b>, sondern wir geben dort den Namen einer Funktion an.<\/p>\n<p>Diese legen wir au&szlig;erdem im Klassenmodul des Formulars an, in dem sich auch das Kombinations- oder Listenfeld befindet. Die Callbackfunktion muss einen speziellen Aufbau haben. Zumindest die Parameter m&uuml;ssen nach einem festen Schema angegeben werden und auch innerhalb der Funktion sind einige Regel zu beachten, damit diese wie gew&uuml;nscht arbeitet. F&uuml;r ein einfaches Beispiel f&uuml;gen wir einem Formular ein Listenfeld hinzu, f&uuml;r dessen Eigenschaft <b>Herkunftstyp <\/b>wie den Namen der Callbackfunktion angeben, in diesem Fall <b>Beispielcallback<\/b> (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1443_001.png\" alt=\"Listenfeld mit Callback-Funktion\" width=\"649,559\" height=\"288,178\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Listenfeld mit Callback-Funktion<\/span><\/b><\/p>\n<h2>Aufbau und Parameter der Callbackfunktion<\/h2>\n<p>Die Callbackfunktion erwartet bestimmte Parameter, die beim Aufruf automatisch von dem Steuerelement, dem sie zugeordnet ist, &uuml;bergeben werden. Der Kopf der Prozedur sieht so aus:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>Beispielcallback(ctl<span style=\"color:blue;\"> As <\/span>Control, lngID<span style=\"color:blue;\"> As Long<\/span>, _\r\n          lngRow<span style=\"color:blue;\"> As Long<\/span>, lngColumn<span style=\"color:blue;\"> As Long<\/span>, _\r\n          intCode<span style=\"color:blue;\"> As Integer<\/span>)<span style=\"color:blue;\"> As Variant<\/span><\/pre>\n<p>Die hier verwendeten Parameter liefern die folgenden Werte:<\/p>\n<ul>\n<li><b>ctl<\/b>: Verweis auf das Steuerelement, f&uuml;r welches die Callbackfunktion aufgerufen wurde. Dies ist sinnvoll, falls es mehr als ein Steuerelement gibt, das die gleiche Callbackfunktion aufruft &#8211; was aber eher selten der Fall sein d&uuml;rfte.<\/li>\n<li><b>lngID<\/b>: Liefert eine eindeutige ID f&uuml;r das aufrufende Steuerelement.<\/li>\n<li><b>lngRow<\/b>: Gibt an, f&uuml;r welche Zeile ein Wert abgefragt wird.<\/li>\n<li><b>lngColumn<\/b>: Gibt an, f&uuml;r welche Spalte ein Wert abgefragt wird.<\/li>\n<li><b>intCode<\/b>: Gibt die aktuelle Funktion des Aufrufs an.<\/li>\n<\/ul>\n<p>Mit dem R&uuml;ckgabewert mit dem Datentyp <b>Variant <\/b>&uuml;bergeben wir die jeweils angeforderten Informationen an das Steuerelement.<\/p>\n<h2>Aufbau der Callbackfunktion<\/h2>\n<p>Die Callbackfunktion muss, damit sie korrekt funktioniert und das Steuerelement wie gew&uuml;nscht gef&uuml;llt wird, die mit dem Parameter <b>intCode <\/b>angefragten Informationen zusammenstellen und zur&uuml;ckliefern. intCode kann verschiedene Werte annehmen, f&uuml;r die jeweils Konstanten definiert sind. Diese lauten:<\/p>\n<ul>\n<li><b>acLBInitialize<\/b> (<b>0<\/b>): Dieser Wert f&uuml;r <b>intCode <\/b>wird beim ersten Aufruf der Callback-Funktion &uuml;bergeben. Hier wird gepr&uuml;ft, ob das Kombinations- oder Listenfeld &uuml;berhaupt mit dieser Funktion gef&uuml;llt werden soll. Falls ja, muss der Wert <b>True <\/b>als R&uuml;ckgabewert der Funktion festgelegt werden.<\/li>\n<li><b>acLBOpen<\/b> (<b>1<\/b>): Beim Aufruf der Funktion mit dem Wert <b>acLBOpen <\/b>f&uuml;r den Parameter <b>intCode <\/b>erwartet Access eine Zahl als R&uuml;ckgabewert, die das Steuerelement, von dem aus die Callback-Funktion aufgerufen wurde, eindeutig identifiziert. Hintergrund ist, dass man theoretisch mehrere Steuerelemente mit der gleichen Callbackfunktion ausstatten kann. Wenn sichergestellt ist, dass nur ein Steuerelement diese Funktion als Wert f&uuml;r die Eigenschaft <b>Herkunftsart <\/b>verwendet, k&ouml;nnen Sie hier einfach den Wert <b>1 <\/b>als Funktionswert angeben. Anderenfalls geben Sie das Ergebnis der Funktion <b>Timer <\/b>zur&uuml;ck, welche die Zeit in Millisekunden berechnet &#8211; dies geht nur schief, wenn die Funktion zweimal in der gleichen Millisekunde aufgerufen wird, was unwahrscheinlich ist.<\/li>\n<li><b>acLBGetRowCount<\/b> (<b>3<\/b>): Dieser Aufruf der Funktion soll die Anzahl der zu f&uuml;llenden Zeilen ermitteln. Dies ist der geeignete Ort, um die anzuzeigenden Daten zusammenzustellen.<\/li>\n<li><b>acLBGetColumnCount<\/b> (<b>4<\/b>): Dieser Funktionsaufruf erwartet die &Uuml;bergabe der Anzahl der zu f&uuml;llenden Spalten.<\/li>\n<li><b>acLBGetColumnWidth<\/b> (<b>5<\/b>): Dieser Funktionsaufruf erwartet die &Uuml;bergabe der Breiten der zu f&uuml;llenden Spalten.<\/li>\n<li><b>acLBGetValue<\/b> (<b>6<\/b>): Die Callback-Funktion wird f&uuml;r jedes anzuzeigende Elemente einmal mit dem Wert <b>acLBGetValue <\/b>f&uuml;r den Parameter <b>intCode <\/b>aufgerufen. Die Anzahl der Elemente ergibt sich aus dem Produkt aus Zeilen- und Spaltenzahl. Welche Zeile und Spalte gerade abgefragt wird, k&ouml;nnen Sie den weiteren Parametern <b>lngRow <\/b>und <b>lngColumn <\/b>entnehmen.<\/li>\n<li><b>acLBGetFormat<\/b> (<b>7<\/b>): Auch der Aufruf mit diesem Parameterwert erfolgt f&uuml;r jedes anzuzeigende Element einmal. Hier k&ouml;nnen Sie die Formatierung der Listeneintr&auml;ge vornehmen (standardm&auml;&szlig;ig <b>-1<\/b>).<\/li>\n<li><b>acLBClose<\/b> (<b>8<\/b>), <b>acLBEnd<\/b> (<b>9<\/b>): Diese beiden Parameter werden in weiteren Aufrufen der Callback-Funktion nach dem F&uuml;llen des Steuerelements &uuml;bergeben. Damit k&ouml;nnen Sie beispielsweise den Zeitpunkt erfassen, zu dem das Steuerelement komplett gef&uuml;llt ist.<\/li>\n<\/ul>\n<h2>Beispiel f&uuml;r eine Callbackfunktion<\/h2>\n<p>Nachfolgend haben wir das denkbar einfachste Beispiel f&uuml;r eine Callbackfunktion zusammengestellt:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>Beispielcallback(ctl<span style=\"color:blue;\"> As <\/span>Control, _\r\n         lngID<span style=\"color:blue;\"> As Long<\/span>, lngRow<span style=\"color:blue;\"> As Long<\/span>, _\r\n         lngColumn<span style=\"color:blue;\"> As Long<\/span>, intCode<span style=\"color:blue;\"> As Integer<\/span>) _\r\n        <span style=\"color:blue;\"> As Variant<\/span>\r\n     Select Case intCode\r\n         <span style=\"color:blue;\">Case <\/span>acLBInitialize\r\n             Beispielcallback = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">Case <\/span>acLBOpen\r\n             Beispielcallback = 1\r\n         <span style=\"color:blue;\">Case <\/span>acLBGetRowCount\r\n             Beispielcallback = 1\r\n         <span style=\"color:blue;\">Case <\/span>acLBGetColumnCount\r\n             Beispielcallback = 1\r\n         <span style=\"color:blue;\">Case <\/span>acLBGetColumnWidth\r\n             Beispielcallback = -1\r\n         <span style=\"color:blue;\">Case <\/span>acLBGetValue\r\n             Beispielcallback = \"Test\"\r\n         <span style=\"color:blue;\">Case <\/span>acLBGetFormat\r\n             Beispielcallback = Null\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             <span style=\"color:blue;\">Debug.Print<\/span> intCode\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>[<\/p>\n<p>Dabei werden in diesem Fall alle Codes f&uuml;r den Parameter <b>intCode <\/b>wie oben angegeben nacheinander durchlaufen. Wichtig dabei ist: Der Aufruf von <b>acLBGetColumnCount <\/b>erfolgt einmal. Je nachdem, wieviele Spalten dort zur&uuml;ckgegeben werden, erfolgt die entsprechende Anzahl von Aufrufen mit dem Parameter <b>acLBGetColumnWidth<\/b>. Dabei wird mit dem Parameter <b>lngColumn <\/b>der 0-basierte Index der Spalte &uuml;bergeben, f&uuml;r welche die Breite abgefragt werden soll. Hier liefern wir immer den Wert <b>-1 <\/b>zur&uuml;ck, wenn wir keine explizite Spaltenbreite definieren wollen. Danach wird die Anzahl der Zeilen abgefragt (<b>acLBGetRowCount<\/b>).<\/p>\n<p>Schlie&szlig;lich erfolgen abwechselnde Aufrufe mit den Werten <b>acLBGetValue <\/b>und <b>acLBGetFormat <\/b>f&uuml;r den Parameter <b>intCode <\/b>mit einer Anzahl Wiederholungen, die dem Produkt aus Spalten und Zeilen entspricht.<\/p>\n<p>In dem Beispiel oben wollen wir nur eine Zeile und eine Spalte f&uuml;llen, also insgesamt nur einen Wert im Listenfeld anlegen. Das f&uuml;hrt zu dem Ergebnis aus Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1443_002.png\" alt=\"Listenfeld mit einem Beispielwert\" width=\"424,5589\" height=\"276,4055\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Listenfeld mit einem Beispielwert<\/span><\/b><\/p>\n<h2>Daten aus einer Tabelle per Callbackfunktion laden<\/h2>\n<p>Damit wenden wir uns nun einem echten Anwendungsfall zu &#8211; dem F&uuml;llen eines Listenfeldes mit acht Spalten und vielen hundert Zeilen. Dabei wollen wir ein Listenfeld namens <b>lstKunden <\/b>mit den Daten der Tabelle <b>tblKunden <\/b>f&uuml;llen, die mehr als 3.000 Datens&auml;tze aufweist. Dies war f&uuml;r das F&uuml;llen eines Listenfeldes per Wertliste oder mit der <b>AddItem<\/b>-Methode deutlich zu viel. Wir werden sehen, ob wir mit der Callbackfunktion mehr Daten in das Listenfeld einlesen k&ouml;nnen. Das Listenfeld bereiten wir wie in Bild 3 vor, indem wir die Eigenschaften <b>Spaltenanzahl <\/b>und die <b>Spaltenbreiten <\/b>einstellen. Au&szlig;erdem legen wir f&uuml;r das Listenfeld die Eigenschaften <b>Horizontaler Anker <\/b>und <b>Vertikaler Anker <\/b>auf <b>Beide <\/b>fest. Als Herkunftstyp legen wir die Callbackfunktion <b>Kundenliste <\/b>fest. Im Kopf des Klassenmoduls des Formulars deklarieren wir die folgenden beiden Variablen:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1443_003.png\" alt=\"Vorbereiten des Listenfeldes f&uuml;r viele Kundendaten\" width=\"424,5589\" height=\"347,6517\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Vorbereiten des Listenfeldes f&uuml;r viele Kundendaten<\/span><\/b><\/p>\n<pre><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<\/pre>\n<p>Die Callbackfunktion gestalten wir wie folgt. Der Kopf unterscheidet sich im Namen vom vorherigen Beispiel:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>Kundenliste(ctl<span style=\"color:blue;\"> As <\/span>Control, _\r\n         lngID<span style=\"color:blue;\"> As Long<\/span>, lngRow<span style=\"color:blue;\"> As Long<\/span>, _\r\n         lngColumn<span style=\"color:blue;\"> As Long<\/span>, intCode<span style=\"color:blue;\"> As Integer<\/span>) _\r\n        <span style=\"color:blue;\"> As Variant<\/span><\/pre>\n<p>Beim Initialisieren erfolgen jedoch einige neue Schritte. Wir lesen hier das Recordset basierend auf den Daten der Tabelle <b>tblKunden <\/b>in die Variable <b>rst <\/b>ein. Danach bewegen wir den Datensatzzeiger einmal auf den letzten und dann wieder auf den ersten Datensatz, damit wir sp&auml;ter mit der <b>RecordCount<\/b>-Funktion die Anzahl der Datens&auml;tze ermitteln k&ouml;nnen. Dann legen wir die Anzahl der ben&ouml;tigten Spalten f&uuml;r das Listenfeld fest, die wir mit <b>rst.Fields.Count <\/b>aus der Anzahl der Felder der Datensatzherkunft beziehen. Als ersten R&uuml;ckgabewert liefern wir <b>True <\/b>zur&uuml;ck:<\/p>\n<pre>     Select Case intCode\r\n         <span style=\"color:blue;\">Case <\/span>acLBInitialize\r\n             <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n             <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset( _\r\n                 \"SELECT * FROM tblKunden\", dbOpenSnapshot)\r\n             rst.MoveLast\r\n             rst.MoveFirst\r\n             Me!lstKunden.ColumnCount = rst.Fields.Count\r\n             Kundenliste = <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Der Schritt <b>acLBOpen <\/b>erwartet wie zuvor den Wert <b>1<\/b>:<\/p>\n<pre>         <span style=\"color:blue;\">Case <\/span>acLBOpen\r\n             Kundenliste = 1<\/pre>\n<p>F&uuml;r die Ermittlung der anzuzeigenden Zeilen im Schritt <b>acLBGetRowCount <\/b>lesen wir dann aus dem in <b>rst <\/b>gespeicherten Recordset die Anzahl der Datens&auml;tze und geben diese zur&uuml;ck:<\/p>\n<pre>         <span style=\"color:blue;\">Case <\/span>acLBGetRowCount\r\n             Kundenliste = rst.RecordCount<\/pre>\n<p>Die Anzahl der zu ber&uuml;cksichtigenden Spalten ermitteln wir mit der Anzahl der Spalten des Recordsets:<\/p>\n<pre>         <span style=\"color:blue;\">Case <\/span>acLBGetColumnCount\r\n             Kundenliste = rst.Fields.Count<\/pre>\n<p>Dann erfolgt die Festlegung der Spaltenbreiten. Wenn wir hier keine Werte angeben, werden die Spaltenbreiten &uuml;bernommen, die wir mit der Eigenschaft <b>Spaltenbreiten <\/b>definiert haben. Da wir aber auch schon die Anzahl der Spalten per Code angegeben haben, wollen wir auch gleich zeigen, wie wir die Spaltenbreiten auf diese Weise angeben. Wir bekommen mit dem Parameter <b>lngColumn <\/b>mit jedem Aufruf die aktuelle Zeile. Wenn gleichzeitig intCode den Wert <b>acLBGetColumnWidth <\/b>enth&auml;lt, wird die Funktion einmal zur Ermittlung der Breite einer jeden Spalte aufgerufen.<\/p>\n<p>Das nutzen wir wie folgt, indem wir den Wert von <b>lngColumn <\/b>abfragen und den entsprechenden Wert zur&uuml;ckgeben. Die erste Spalte soll beispielsweise die Breite <b>0<\/b> erhalten, damit die Werte der gebundenen Spalte nicht angezeigt werden:<\/p>\n<pre>         <span style=\"color:blue;\">Case <\/span>acLBGetColumnWidth\r\n             Select Case lngColumn\r\n                 <span style=\"color:blue;\">Case <\/span>0\r\n                     Kundenliste = 0<\/pre>\n<p>F&uuml;r die folgenden Spalten geben wir dann die jeweilige Breite zur&uuml;ck. Diese ermitteln wir aus der Angabe der Zentimeter (zum Beispiel <b>1,2<\/b>) multipliziert mit dem Faktor <b>567<\/b>:<\/p>\n<pre>                 <span style=\"color:blue;\">Case <\/span>1\r\n                     Kundenliste = 1.2 * 567\r\n                 <span style=\"color:blue;\">Case <\/span>2\r\n                     Kundenliste = 3 * 567\r\n                 <span style=\"color:blue;\">Case <\/span>3\r\n                     Kundenliste = 3 * 567\r\n                 <span style=\"color:blue;\">Case <\/span>4\r\n                     Kundenliste = 4.5 * 567\r\n                 <span style=\"color:blue;\">Case <\/span>5\r\n                     Kundenliste = 1.5 * 567\r\n                 <span style=\"color:blue;\">Case <\/span>6\r\n                     Kundenliste = 2.5 * 567\r\n                 <span style=\"color:blue;\">Case <\/span>7\r\n                     Kundenliste = 3 * 567\r\n             <span style=\"color:blue;\">End Select<\/span><\/pre>\n<p>Schlie&szlig;lich lesen wir den Wert der jeweiligen Spalte und Zeile aus dem Recordset in das Listenfeld ein. Dabei liefert <b>lngRow <\/b>die Zeile und <b>lngColumn <\/b>die einzulesende Spalte. Wir bewegen den Datensatzzeiger mit der <b>AbsolutePosition<\/b>-Eigenschaft auf den mit <b>lngRow <\/b>angegebenen Datensatz. Den Wert f&uuml;r die gesuchte Spalte entnehmen wir dem Recordsets &uuml;ber die <b>Fields<\/b>-Auflistung mit dem Wert aus <b>lngColumn<\/b> als Parameter und ermitteln den Wert schlie&szlig;lich mit <b>rst.Fields(lngColumn)<\/b>:<\/p>\n<pre>         <span style=\"color:blue;\">Case <\/span>acLBGetValue\r\n             rst.AbsolutePosition = lngRow\r\n             Kundenliste = rst.Fields(lngColumn)<\/pre>\n<p>Schlie&szlig;lich legen wir mit den folgenden Abschnitten die fehlenden Einstellungen fest, wobei wir <b>acLBClose <\/b>und <b>acLBEnd <\/b>nicht nutzen &#8211; diese werden beim Schlie&szlig;en des Formulars ausgel&ouml;st:<\/p>\n<pre>         <span style=\"color:blue;\">Case <\/span>acLBGetFormat\r\n             Kundenliste = Null\r\n         <span style=\"color:blue;\">Case <\/span>acLBClose\r\n         <span style=\"color:blue;\">Case <\/span>acLBEnd\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<h2>Test und maximale Datenmenge<\/h2>\n<p>Nach dem Anzeigen des Formulars in der Formularansicht erhalten wir das Ergebnis aus Bild 4. Wir konnten das Listenfeld damit problemlos mit &uuml;ber 3.000 Kundendatens&auml;tzen f&uuml;llen. Also haben wir diese mehrfach erweitert und schlie&szlig;lich festgestellt, dass wir mit dem Listenfeld unter Verwendung der Callback-Funktion bis zu 65.536 Datens&auml;tze anzeigen k&ouml;nnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1443_004.png\" alt=\"Listenfeld mit allen Datens&auml;tzen\" width=\"649,559\" height=\"311,8228\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Listenfeld mit allen Datens&auml;tzen<\/span><\/b><\/p>\n<h2>Performance<\/h2>\n<p>Wie aber kann es sein, dass diese Datens&auml;tze so schnell eingelesen werden, dass man beim &Ouml;ffnen des Formulars mit dem Listenfeld quasi keine Verz&ouml;gerung feststellt? Hinweis: Zur besseren Reproduzierbarkeit haben wir die Spaltenbreite f&uuml;r die erste Spalte hier auf eien Zentimeter eingestellt:<\/p>\n<pre><span style=\"color:blue;\">Case <\/span>0\r\n     Kundenliste = 1 * 567<\/pre>\n<p>Warum die Performance so gut ist, erfahren wir, wenn wir einen Haltepunkt in den <b>Case<\/b>-Zweig mit dem Wert <b>acLBGetValue <\/b>einf&uuml;gen oder dort eine <b>If&#8230;Then<\/b>-Bedingung mit einer <b>Debug.Print<\/b>-Anweisung wie der folgenden anlegen:<\/p>\n<pre><span style=\"color:blue;\">If <\/span>lngColumn = 1<span style=\"color:blue;\"> Then<\/span>\r\n     <span style=\"color:blue;\">Debug.Print<\/span> rst.Fields(lngColumn)\r\n<span style=\"color:blue;\">End If<\/span><\/pre>\n<p>Nun rufen wir das Formular auf und stellen den Direktbereich neben das Listenfeld. Wir leicht zu erkennen, scheint die Callbackfunktion nur f&uuml;r die aktuell sichtbaren Eintr&auml;ge aufgerufen worden zu sein &#8211; wobei der 16. Datensatz nur teilweise zu sehen ist (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_1443_005.png\" alt=\"Ausgabe der per Callbackfunktion gelesenen Datens&auml;tze\" width=\"424,5589\" height=\"316,3701\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Ausgabe der per Callbackfunktion gelesenen Datens&auml;tze<\/span><\/b><\/p>\n<p>Klicken wir nun auf die <b>Nach unten<\/b>-Taste in der rechten Bildlaufleiste, werden die Eintr&auml;ge <b>16 <\/b>und <b>17 <\/b>erneut ausgegeben und so weiter. Klicken wir einen der Eintr&auml;ge an, wird die Callbackfunktion ebenfalls mehrere Male aufgerufen.<\/p>\n<p>Klicken wir auf den Eintrag mit dem Wert <b>6 <\/b>im Feld <b>KundeID<\/b>, wird die Callbackfunktion nacheinander f&uuml;r die Datens&auml;tze <b>7<\/b>, <b>6<\/b>, <b>5<\/b>, <b>6 <\/b>und wieder <b>7 <\/b>aufgerufen.<\/p>\n<p>Selbst wenn wir die Breite des Formulars &auml;ndern und sich die Listenfeldbreite ebenfalls &auml;ndert, weil wir die Eigenschaft <b>Horizontaler Anker <\/b>auf <b>Beide <\/b>eingestellt haben, wird die Callbackfunktion f&uuml;r die angezeigten Datens&auml;tze erneut aufgerufen.<\/p>\n<p>Bet&auml;tigen wir die Tastenkombination <b>Strg + Ende<\/b>, wird die Callbackfunktion nur f&uuml;r die letzten, dann angezeigten Datens&auml;tze aufgerufen.<\/p>\n<p>Die gute Performance resultiert also daraus, dass nur die jeweils ben&ouml;tigten Datens&auml;tze ermittelt werden, keinesfalls aber alle Eintr&auml;ge der Datensatzherkunft.<\/p>\n<h2>Praktische Nutzung eines Listenfeldes mit Callbackfunktion<\/h2>\n<p>Die &uuml;blichen Funktionen bei einem mit einer Callbackfunktion gef&uuml;llten Listenfeld k&ouml;nnen wir wie gewohnt nutzen &#8211; Markieren von Elementen, Doppelklick auf Elemente, Einstellen von markierten Elementen per Code und so weiter. Wir haben allerdings auch versucht, dieses Listenfeld in einem Beispiel wie im Beitrag <b>Ungebundene Daten in &Uuml;bersicht und Detailansicht <\/b>(<b>www.access-im-unternehmen.de\/1444<\/b>) beschrieben zu nutzen. <\/p>\n<p>Das gelingt, solange wir die Daten im Listenfeld nicht aktualisieren wollen. Beim Versuch, die <b>Requery<\/b>-Methode aufzurufen, wurde ein scheinbar leeres Listenfeld angezeigt. Erst beim Anklicken einzeler Zeilen wurden Datens&auml;tze wieder eingeblendet. Sie k&ouml;nnen sich das Verhalten gern im Formular frmKundenuebersicht ansehen. Dort klicken Sie doppelt auf einen der Eintr&auml;ge, &auml;ndern diesen im Detailformular und schlie&szlig;en dieses dann per OK &#8211; danach sollte das beschriebenen Verhalten auftreten. Schreiben Sie mir gern unter <b>andre@minhorst.com<\/b>, wenn Sie hier andere Beobachtungen machen.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>UngebundeneListenundKombisPerCallback.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/9FB3C824-8D78-4677-A0FE-B6FB32097267\/aiu_1443.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Beitrag Ungebundene Listen und Kombis mit Daten f&uuml;llen (www.access-im-unternehmen.de\/1440) haben wir uns angesehen, wir man Kombinations- und Listenfelder &uuml;ber das Zuweisen einer Wertliste oder mit der AddItem-Methode f&uuml;llen kann. Es gibt noch eine interessante Alternative, von der wir hoffen, dass wir damit sogar noch einige Eintr&auml;g mehr zu den Listen-Steuerelementen hinzuf&uuml;gen k&ouml;nnen als mit den oben genannten Methoden. Bei dieser Alternative handelt es sich um eine Technik, die eher stiefm&uuml;tterlich behandelt wird: Die Callback-Funktion. Wie man diese nutzt und ob man tats&auml;chlich mehr Daten als mit einer Wertliste in ungebundenen Listen-Steuerelementen anzeigen, untersuchen wir in diesem 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,66042023,44000023],"tags":[],"class_list":["post-55001443","post","type-post","status-publish","format-standard","hentry","category-662023","category-66042023","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ungebundene List- und ComboBox per Callback - 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\/Ungebundene_List_und_ComboBox_per_Callback\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ungebundene List- und ComboBox per Callback\" \/>\n<meta property=\"og:description\" content=\"Im Beitrag Ungebundene Listen und Kombis mit Daten f&uuml;llen (www.access-im-unternehmen.de\/1440) haben wir uns angesehen, wir man Kombinations- und Listenfelder &uuml;ber das Zuweisen einer Wertliste oder mit der AddItem-Methode f&uuml;llen kann. Es gibt noch eine interessante Alternative, von der wir hoffen, dass wir damit sogar noch einige Eintr&auml;g mehr zu den Listen-Steuerelementen hinzuf&uuml;gen k&ouml;nnen als mit den oben genannten Methoden. Bei dieser Alternative handelt es sich um eine Technik, die eher stiefm&uuml;tterlich behandelt wird: Die Callback-Funktion. Wie man diese nutzt und ob man tats&auml;chlich mehr Daten als mit einer Wertliste in ungebundenen Listen-Steuerelementen anzeigen, untersuchen wir in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-31T14:23:19+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=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Ungebundene List- und ComboBox per Callback\",\"datePublished\":\"2023-07-31T14:23:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/\"},\"wordCount\":2102,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/d2ff12b1e5834ae3b4da5007215a5873\",\"articleSection\":[\"2023\",\"4\\\/2023\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/\",\"name\":\"Ungebundene List- und ComboBox per Callback - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/d2ff12b1e5834ae3b4da5007215a5873\",\"datePublished\":\"2023-07-31T14:23:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/d2ff12b1e5834ae3b4da5007215a5873\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/d2ff12b1e5834ae3b4da5007215a5873\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ungebundene_List_und_ComboBox_per_Callback\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ungebundene List- und ComboBox per Callback\"}]},{\"@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 List- und ComboBox per Callback - 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\/Ungebundene_List_und_ComboBox_per_Callback\/","og_locale":"de_DE","og_type":"article","og_title":"Ungebundene List- und ComboBox per Callback","og_description":"Im Beitrag Ungebundene Listen und Kombis mit Daten f&uuml;llen (www.access-im-unternehmen.de\/1440) haben wir uns angesehen, wir man Kombinations- und Listenfelder &uuml;ber das Zuweisen einer Wertliste oder mit der AddItem-Methode f&uuml;llen kann. Es gibt noch eine interessante Alternative, von der wir hoffen, dass wir damit sogar noch einige Eintr&auml;g mehr zu den Listen-Steuerelementen hinzuf&uuml;gen k&ouml;nnen als mit den oben genannten Methoden. Bei dieser Alternative handelt es sich um eine Technik, die eher stiefm&uuml;tterlich behandelt wird: Die Callback-Funktion. Wie man diese nutzt und ob man tats&auml;chlich mehr Daten als mit einer Wertliste in ungebundenen Listen-Steuerelementen anzeigen, untersuchen wir in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-07-31T14:23:19+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Ungebundene List- und ComboBox per Callback","datePublished":"2023-07-31T14:23:19+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/"},"wordCount":2102,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/d2ff12b1e5834ae3b4da5007215a5873","articleSection":["2023","4\/2023","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/","url":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/","name":"Ungebundene List- und ComboBox per Callback - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/d2ff12b1e5834ae3b4da5007215a5873","datePublished":"2023-07-31T14:23:19+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/d2ff12b1e5834ae3b4da5007215a5873","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/d2ff12b1e5834ae3b4da5007215a5873"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Ungebundene_List_und_ComboBox_per_Callback\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Ungebundene List- und ComboBox per Callback"}]},{"@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\/55001443","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=55001443"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001443\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}