{"id":55000743,"date":"2010-10-01T00:00:00","date_gmt":"2020-05-22T22:07:44","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=743"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Flexibles_Unterformular","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/","title":{"rendered":"Flexibles Unterformular"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die Datenherkunft eines Unterformulars &auml;ndert sich in der Regel zur Laufzeit nicht &#8211; es wird h&ouml;chstens mal ein Filter oder eine Sortierung angewendet. Gelegentlich soll das gleiche Unterformularsteuerelement zwar mal das Unterformular wechseln, aber auch dies ist kein Problem. Interessant wird es, wenn Sie ein einziges Unterformular zur Laufzeit mit verschiedenen Datenherk&uuml;nften ausstatten m&ouml;chten. Sie k&ouml;nnen zwar Tabellen oder Abfragen statt eines richtigen Formulars als Unterformular angeben, aber diese bieten nat&uuml;rlich keine M&ouml;glichkeit, auf Ereignisse zu reagieren. Wir zeigen, wie Sie ein einziges Unterformular flexibel mit beliebigen Daten f&uuml;llen.<\/b><\/p>\n<p>Beitr&auml;ge wie dieser wurden meist durch einen konkreten Anwendungsfall angeregt. In diesem Fall geht es um den Duplikatmanager aus dem Beitrag <b>Duplikatsuche in Adressen <\/b>(<b>www.access-im-unternehmen.de\/744<\/b>). Dort soll ein Unterformular die Daten einer Abfrage anzeigen, die mehrfach vorkommende Kombinationen bestimmter Feldwerte enth&auml;lt. Diese Anzeige soll die doppelt oder &ouml;fter vorkommenden Kombinationen allerdings nur in einfacher Ausf&uuml;hrung liefern. Der Benutzer w&auml;hlt dann einen der Eintr&auml;ge aus, woraufhin ein weiteres Unterformular nur die Dubletten dieses ausgew&auml;hlten Eintrags anzeigt &#8211; so kann der Benutzer in Ruhe entscheiden, ob einer oder mehrere der Datens&auml;tze gel&ouml;scht werden sollen.<\/p>\n<p>Die Anforderung in diesem Fall lautet: Das erste Unterformular soll die Daten einer speziellen Abfrage anzeigen. Dies allein ist kein Problem: Sie k&ouml;nnen einem Unterformular-Steuerelement zur Laufzeit per VBA nicht nur ein Formular, sondern auch eine Tabelle oder eine Abfrage als Herkunftsobjekt zuweisen. Das geht zum Beispiel so:<\/p>\n<pre>Me!sfmSubform.ControlSource = &quot;Table.tblAdressen&quot;<\/pre>\n<p>F&uuml;r eine Abfrage stellen Sie entsprechend das Schl&uuml;sselwort <b>Query <\/b>voran. F&uuml;r die meisten F&auml;lle ist dies ausreichend. Beim Duplikatmanager soll ein Klick auf einen der Eintr&auml;ge dieses Unterformular bestimmte Daten in einem weiteren Unterformulars anzeigen. Der Benutzer soll nicht erst den Datensatz ausw&auml;hlen und auf eine Schaltfl&auml;che klicken m&uuml;ssen. Diese L&ouml;sung w&auml;re auch akzeptabel, aber in Anbetracht einer gegebenenfalls gro&szlig;en Menge von Duplikaten z&auml;hlt jeder Mausklick.<\/p>\n<p>Also wollen wir dem Unterformular ein Ereignis hinzuf&uuml;gen, das auf das Anklicken eines Eintrags reagiert. F&uuml;r das Beispiel des vorliegenden Beitrags reicht es, wenn einfach ein Meldungsfenster erscheint und die ID des gew&auml;hlten Datensatzes ausgibt &#8211; um alles weitere k&uuml;mmern wir uns im oben genannten Beitrag. Genau genommen brauchen wir uns nicht auf einen Mausklick zu konzentrieren, sondern es reicht, den Datensatzwechsel zu beobachten &#8211; so k&ouml;nnen wir mit der Ereignisprozedur <b>Beim Anzeigen <\/b>arbeiten.<\/p>\n<p><b>Unterformular flexibel gestalten<\/b><\/p>\n<p>Das jeweilige Ereignis ist f&uuml;r diesen Beitrag aber ohnehin uninteressant &#8211; wir haben hier ganz andere Probleme. Zum Beispiel m&uuml;ssen wir uns &uuml;berlegen, wie wir einem Formular, dessen Datenherkunft wir noch nicht kennen, die entsprechenden Steuerelemente hinzuf&uuml;gen k&ouml;nnen.<\/p>\n<p>Theoretisch wird das so ablaufen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Wir weisen der Eigenschaft <b>RecordSource <\/b>des Formulars den Namen der Tabelle oder Abfrage zu, welche die Daten liefert.<\/li>\n<li class=\"aufz-hlung\">Dann f&uuml;gen wir f&uuml;r jedes Feld der Datenherkunft ein Steuerelement zum Formular hinzu und stellen seine Eigenschaft <b>ControlSource <\/b>auf das entsprechende Feld ein.<\/li>\n<\/ul>\n<p>Dies h&ouml;rt sich einfach an, w&uuml;rde aber voraussetzen, dass wir das Formular zun&auml;chst per VBA-Code im Entwurf &ouml;ffnen m&uuml;ssen, die Steuerelemente hinzuf&uuml;gen und erst dann in die Datenblattansicht wechseln k&ouml;nnen.<\/p>\n<p>Dies ist zwar technisch machbar, aber wir w&uuml;rden hier prinzipiell jedes Mal ein komplett neues Formular erstellen. Wir gehen einen etwas anderen Weg: Wir bereiten gleich beim Erstellen des Formulars eine Reihe von Steuerelementen vor, die bei normalen Anforderungen ausreichen sollten. Eine Adresstabelle sollte etwa mit 20 Feldern auskommen. Wir f&uuml;gen also vorab 20 Textfelder zu unserem k&uuml;nftigen Unterformular hinzu. Nach dem Zuweisen der Datenherkunft zur Laufzeit durchlaufen wir dann alle darin enthaltenen Felder und weisen der Eigenschaft <b>ControlSource <\/b>der Textfelder die jeweiligen Namen der Felder der Datenherkunft zu.<\/p>\n<p>Eines haben wir jedoch noch nicht bedacht: Tabellen und Abfragen zeigen nicht immer alle Daten in Textfeldern an, sondern teilweise auch in Kombinationsfeldern und Kontrollk&auml;stchen. Wir sollten also f&uuml;r jedes der maximal 20 vorgesehenen Felder der Datenherkunft ein Textfeld, ein Kombinationsfeld und ein Kontrollk&auml;stchen vorsehen und jeweils nur das entsprechende Feld mit einem Feld der Datenherkunft verkn&uuml;pfen.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Steuerelemente anlegen<\/p>\n<p>Legen Sie zun&auml;chst ein neues, leeres Formular an und speichern Sie es unter dem Namen <b>sfmFlex<\/b>. Stellen Sie au&szlig;erdem seine Eigenschaft <b>Standardansicht <\/b>auf den Wert <b>Datenblatt <\/b>ein. Anschlie&szlig;end k&uuml;mmern wir uns um das Anlegen der Steuerelemente. Nat&uuml;rlich erledigen wir das nicht von Hand, sondern f&uuml;gen die Steuerelemente per VBA hinzu. Dies erledigt die Prozedur aus <a href=\"#anker-22-anchor\">Listing 1<\/a>.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Hinzuf&uuml;gen der Steuerelemente des flexiblen Unterformulars<\/p>\n<pre>Public Sub FlexformControls()\r\n    Dim frm As Form\r\n    Dim strForm As String\r\n    Dim i As Integer\r\n    Dim ctl As Control\r\n    strForm = &quot;sfmFlex&quot;\r\n    DoCmd.OpenForm strForm, View:=acDesign\r\n    Set frm = Forms(strForm)\r\n    For i = 1 To 20\r\n         Set ctl = Application.CreateControl(strForm, acTextBox, acDetail)\r\n        ctl.Name = &quot;txt&quot; &amp; Format(i, &quot;00&quot;)\r\n        Set ctl = Application.CreateControl(strForm, acLabel, acDetail, ctl.Name)\r\n        ctl.Name = &quot;lbltxt&quot; &amp; Format(i, &quot;00&quot;)\r\n        Set ctl = Application.CreateControl(strForm, acCheckBox, acDetail)\r\n        ctl.Name = &quot;chk&quot; &amp; Format(i, &quot;00&quot;)\r\n        Set ctl = Application.CreateControl(strForm, acLabel, acDetail, ctl.Name)\r\n        ctl.Name = &quot;lblchk&quot; &amp; Format(i, &quot;00&quot;)\r\n        Set ctl = Application.CreateControl(strForm, acComboBox, acDetail)\r\n        ctl.Name = &quot;cbo&quot; &amp; Format(i, &quot;00&quot;)\r\n        Set ctl = Application.CreateControl(strForm, acLabel, acDetail, ctl.Name)\r\n        ctl.Name = &quot;lblcbo&quot; &amp; Format(i, &quot;00&quot;)\r\n    Next i\r\nEnd Sub<\/pre>\n<p><!--30percent--><\/p>\n<p>Nach dem &Ouml;ffnen des Formulars durchl&auml;uft die Prozedur eine Schleife, in der verschiedene Aufrufe der <b>CreateControl<\/b>-Methode die einzelnen Steuerelemente anlegen &#8211; in der hier vorliegenden Version genau 20 Mal. Erst kommen die Textfelder an die Reihe, gefolgt von den entsprechenden Bezeichnungsfeldern. Diese sind n&ouml;tig, damit die Spaltenk&ouml;pfe sp&auml;ter die Feldnamen der Quelltabelle anzeigen. Das Anlegen der Bezeichnungsfelder erfordert gegen&uuml;ber den &uuml;brigen Steuerelementen die Angabe eines zus&auml;tzlichen Parameters, der festlegt, zu welchem gebundenen Steuerelement das Bezeichnungsfeld geh&ouml;rt.<\/p>\n<p>Auf die gleiche Weise verf&auml;hrt die Prozedur mit den Kontrollk&auml;stchen und Kombinationsfeldern. Das Formular sieht anschlie&szlig;end so aus, als w&uuml;rde es nur ein Steuerelement enthalten. Das Aufklappen der Steuerelementliste des Eigenschaftsfensters zeigt jedoch, dass alle Steuerelemente angelegt wurden (s. Bild 1).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_05\/FlexiblesUnterformular-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Das flexible Unterformular mit s&auml;mtlichen oben links angelegten Steuerelementen<\/span><\/b><\/p>\n<p>Damit sind bereits alle Voraussetzungen geschaffen &#8211; den Rest &uuml;bernimmt die zur Laufzeit aufgerufene Prozedur <b>FillFlexForm<\/b> (s. <a href=\"#anker-25-anchor\">Listing 2<\/a>).<\/p>\n<p class=\"listingueberschrift\">Listing 2: Steuerelemente des flexiblen Unterformulars mit Daten f&uuml;llen<\/p>\n<pre>Public Sub FillFlexForm(strRecordsource As String)\r\n    ''... Deklaration aus Platzgr&uuml;nden nicht abgedruckt\r\n    Set db = CurrentDb\r\n    Set frm = Forms!sfmflex\r\n    For i = 1 To 20\r\n         frm.Controls(&quot;txt&quot; &amp; Format(i, &quot;00&quot;)).ColumnWidth = 0\r\n        frm.Controls(&quot;cbo&quot; &amp; Format(i, &quot;00&quot;)).ColumnWidth = 0\r\n        frm.Controls(&quot;chk&quot; &amp; Format(i, &quot;00&quot;)).ColumnWidth = 0\r\n    Next i\r\n    Set rst = db.OpenRecordset(&quot;SELECT * FROM &quot; &amp; strRecordsource &amp; &quot; WHERE 1=2&quot;, dbOpenDynaset)\r\n    frm.RecordSource = strRecordsource\r\n    i = 0\r\n    For Each fld In rst.Fields\r\n         i = i + 1\r\n        On Error Resume Next\r\n        intDisplayControl = fld.Properties(&quot;DisplayControl&quot;)\r\n        If Not Err.Number = 0 Then\r\n            intDisplayControl = 109\r\n        End If\r\n        On Error GoTo 0\r\n        Select Case intDisplayControl\r\n            Case 106\r\n                With frm.Controls(&quot;chk&quot; &amp; Format(i, &quot;00&quot;))\r\n                    .ControlSource = fld.Name\r\n                    .ColumnHidden = False\r\n                    frm.Controls(&quot;lblchk&quot; &amp; Format(i, &quot;00&quot;)).Caption = fld.Name\r\n                    .ColumnWidth = -2\r\n                End With\r\n            Case 109\r\n                With frm.Controls(&quot;txt&quot; &amp; Format(i, &quot;00&quot;))\r\n                    .ControlSource = fld.Name\r\n                    .ColumnHidden = False\r\n                    frm.Controls(&quot;lbltxt&quot; &amp; Format(i, &quot;00&quot;)).Caption = fld.Name\r\n                    .ColumnWidth = -2\r\n                End With\r\n            Case 111\r\n                With frm.Controls(&quot;cbo&quot; &amp; Format(i, &quot;00&quot;))\r\n                    .ControlSource = fld.Name\r\n                    .ColumnHidden = False\r\n                    .RowSource = fld.Properties(&quot;RowSource&quot;)\r\n                    .RowSourceType = fld.Properties(&quot;RowSourceType&quot;)\r\n                    .ColumnCount = fld.Properties(&quot;ColumnCount&quot;)\r\n                    .ColumnWidths = fld.Properties(&quot;ColumnWidths&quot;)\r\n                    frm.Controls(&quot;lblcbo&quot; &amp; Format(i, &quot;00&quot;)).Caption = fld.Name\r\n                    .ColumnWidth = -2\r\n                    .SetFocus\r\n                    .ListWidth = Val(fld.Properties(&quot;ListWidth&quot;))\r\n                End With\r\n            Case Else\r\n                Debug.Print intDisplayControl\r\n        End Select\r\n    Next fld\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Diese erwartet die Angabe des Namens der Tabelle oder Abfrage, deren Daten es zeigen soll, als einzigen Parameter.<\/p>\n<p>Diese Prozedur k&ouml;nnen Sie innerhalb oder au&szlig;erhalb des Unterformulars platzieren. Es w&auml;re sinnvoll, diese Prozedur im Klassenmodul des Formulars zu platzieren: Sie k&ouml;nnten den Code dann ganz einfach mit dem Formular weitergeben und in verschiedenen Datenbanken einsetzen.<\/p>\n<p>Der Aufruf vom Hauptformular aus, in dem sich das Unterformular-Steuerelement mit <b>sfmFlex <\/b>als <b>Herkunftsobjekt <\/b>befindet, w&uuml;rde dann etwa so aussehen (ausgehend davon, dass das Unterformular-Steuerelement <b>sfm <\/b>hei&szlig;t):<\/p>\n<pre>Me!sfm.Form.FillFlexForm &quot;&lt;Name der Quelltabelle&gt;&quot;<\/pre>\n<p>Die Prozedur selbst arbeitet sich zun&auml;chst in einer <b>For&#8230;Next<\/b>-Schleife durch alle 20 Textfelder, Kontrollk&auml;stchen und Kombinationsfelder und stellt deren Eigenschaft <b>ColumnWidth <\/b>auf den Wert <b>0 <\/b>ein, damit diese zun&auml;chst nicht sichtbar sind.<\/p>\n<p>Der Bezug zu den jeweiligen Steuerelementen wird dabei &uuml;ber die <b>Controls<\/b>-Auflistung mit dem Namen des betroffenen Steuerelements hergestellt. Da der Name sich jeweils aus einem fixen Text wie <b>txt<\/b>, <b>cbo<\/b>, <b>chk <\/b>oder <b>lbl&#8230; <\/b>und einer zweistelligen Nummer zusammensetzt, kann man diesen leicht in Abh&auml;ngigkeit von der Laufvariablen der Schleife zusammensetzen &#8211; zum Beispiel mit folgendem Ausdruck:<\/p>\n<pre>&quot;txt&quot; &amp; Format(i, &quot;00&quot;)<\/pre>\n<p>Danach &ouml;ffnet die Prozedur eine Datensatzgruppe auf Basis der mit dem Parameter <b>strRecordsource <\/b>&uuml;bergebenen Tabelle oder Abfrage. Da wir nur auf die Eigenschaften der Felder dieses Objekts zugreifen m&ouml;chten, stellen wir mit <b>1=2 <\/b>eine Bedingung ein, die keine Datens&auml;tze zur&uuml;ckliefert.<\/p>\n<p>Die Datenherkunft des Unterformulars hingegen stellen wir tats&auml;chlich auf den angegebenen Tabellen- oder Abfragenamen ein. Direkt im Anschluss beginnt das Einblenden der ben&ouml;tigten Steuerelemente und das Einstellen der Eigenschaften.<\/p>\n<p>Dabei durchl&auml;uft die Prozedur alle Felder der Datenherkunft, und zwar &uuml;ber die <b>Fields<\/b>-Auflistung. Da die Felder einer Tabelle, wie bereits erl&auml;utert, durchaus einmal als Kombinationsfeld oder Kontrollk&auml;stchen statt nur als einfaches Textfeld daherkommen, pr&uuml;fen wir die Eigenschaft <b>DisplayControl <\/b>auf einen Zahlenwert, der den Steuerelementtyp des Tabellenfeldes repr&auml;sentiert. Da diese Eigenschaft nicht zwingend f&uuml;r alle Felder vergeben wird, kann dabei ein Fehler auftreten &#8211; in diesem Fall behandeln wir das Feld als Textfeld.<\/p>\n<p>Nach der Identifizierung des Steuerelementtyps weist die Prozedur innerhalb einer <b>Select Case<\/b>-Bedingung dem Steuerelement die dem Typ entsprechenden Eigenschaften zu. Hier wird auch &uuml;berhaupt entschieden, ob etwa f&uuml;r das erste Feld der Datenherkunft das Textfeld <b>txt01<\/b>, das Kombinationsfeld <b>cbo01 <\/b>oder das Kontrollk&auml;stchen <b>chk01 <\/b>verwendet wird.<\/p>\n<p>Der Wert <b>106 <\/b>f&uuml;r den Steuerelementtyp entspricht dem Kontrollk&auml;stchen, also wird das Steuerelement mit dem Pr&auml;fix <b>chk <\/b>und dem aktuellen Wert der Laufvariablen <b>i <\/b>als Name sichtbar gemacht (<b>ColumnHidden = False<\/b>) und mit einigen weiteren Eigenschaften versehen. Dabei weisen wir <b>ControlSource <\/b>den Namen des aktuell durchlaufenen Feldes zu und die Eigenschaft <b>ColumnWidth <\/b>wird auf <b>-2 <\/b>eingestellt (dies entspricht der optimalen Breite f&uuml;r die aktuell sichtbaren Eintr&auml;ge der Spalte). Au&szlig;erdem gibt es ja noch das Bezeichnungsfeld (f&uuml;r <b>i = 1 <\/b>und ein Kontrollk&auml;stchen, etwa <b>lblchk01<\/b>), f&uuml;r das wir den Namen des Feldes als Beschriftung vergeben. Bei den Textfeldern l&auml;uft dies auf die gleiche Weise ab.<\/p>\n<p>Nur die Einstellung der Kombinationsfelder ist etwas aufwendiger, was nicht zuletzt daran liegt, dass doch einige Eigenschaften daf&uuml;r zust&auml;ndig sind, dass die Daten verkn&uuml;pfter Tabellen wie gew&uuml;nscht dargestellt werden.<\/p>\n<p>Auch hier werden die von den Kontrollk&auml;stchen und Textfeldern bereits bekannten Eigenschaften eingestellt. Es kommen jedoch noch einige Eigenschaften hinzu:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>RowSource<\/b>: Datenherkunft des Kombinationsfeldes (Name der Tabelle\/Abfrage oder Wertliste)<\/li>\n<li class=\"aufz-hlung\"><b>RowSourceType<\/b>: Herkunftstyp (<b>Table\/Query <\/b>oder <b>Fieldlist<\/b>)<\/li>\n<li class=\"aufz-hlung\"><b>ColumnCount<\/b>: Anzahl der Spalten des Kombinationsfeldes<\/li>\n<li class=\"aufz-hlung\"><b>ColumnWidths<\/b>: Spaltenbreiten (etwa zum Ausblenden der ersten, gebundenen Spalte)<\/li>\n<li class=\"aufz-hlung\"><b>ListWidth<\/b>: Breite des Steuerelements (Achtung: Vor Zuweisen dieses Eigenschaftswertes m&uuml;ssen Sie den Fokus auf das betreffende Steuerelement setzen!)<\/li>\n<\/ul>\n<p>Fertig! Nach dem Aufrufen dieser Prozedur f&uuml;llt diese das Formular <b>sfmFlex<\/b> wie in Bild 2. Im Beitrag <b>Duplikatsuche in Adressen <\/b>(<b>www.access-im-unternehmen.de\/744<\/b>) finden Sie das Formular im praktischen Einsatz. Dort erfahren Sie auch, wie Sie dem Unterformular Ereignisse zuweisen, die etwa bei jedem Datensatzwechseln ausgel&ouml;st werden und so zum Beispiel die Daten weiterer Unterformulare in Abh&auml;ngigkeit vom ausgew&auml;hlten Datensatz beeinflussen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_05\/FlexiblesUnterformular-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Das flexible Unterformular mit Daten<\/span><\/b><\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>FlexibleUnterformulare.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{4F5B90A6-3DC2-4D5A-98A8-4774C4F68CF4}\/aiu_743.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Datenherkunft eines Unterformulars &auml;ndert sich in der Regel zur Laufzeit nicht &#8211; es wird h&ouml;chstens mal ein Filter oder eine Sortierung angewendet. Gelegentlich soll das gleiche Unterformularsteuerelement zwar mal das Unterformular wechseln, aber auch dies ist kein Problem. Interessant wird es, wenn Sie ein einziges Unterformular zur Laufzeit mit verschiedenen Datenherk&uuml;nften ausstatten m&ouml;chten. Sie k&ouml;nnen zwar Tabellen oder Abfragen statt eines richtigen Formulars als Unterformular angeben, aber diese bieten nat&uuml;rlich keine M&ouml;glichkeit, auf Ereignisse zu reagieren. Wir zeigen, wie Sie ein einziges Unterformular flexibel mit beliebigen Daten f&uuml;llen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662010,66052010,44000023],"tags":[],"class_list":["post-55000743","post","type-post","status-publish","format-standard","hentry","category-662010","category-66052010","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>Flexibles Unterformular - 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\/Flexibles_Unterformular\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flexibles Unterformular\" \/>\n<meta property=\"og:description\" content=\"Die Datenherkunft eines Unterformulars &auml;ndert sich in der Regel zur Laufzeit nicht - es wird h&ouml;chstens mal ein Filter oder eine Sortierung angewendet. Gelegentlich soll das gleiche Unterformularsteuerelement zwar mal das Unterformular wechseln, aber auch dies ist kein Problem. Interessant wird es, wenn Sie ein einziges Unterformular zur Laufzeit mit verschiedenen Datenherk&uuml;nften ausstatten m&ouml;chten. Sie k&ouml;nnen zwar Tabellen oder Abfragen statt eines richtigen Formulars als Unterformular angeben, aber diese bieten nat&uuml;rlich keine M&ouml;glichkeit, auf Ereignisse zu reagieren. Wir zeigen, wie Sie ein einziges Unterformular flexibel mit beliebigen Daten f&uuml;llen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:07:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13\" \/>\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\\\/Flexibles_Unterformular\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Flexibles Unterformular\",\"datePublished\":\"2020-05-22T22:07:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/\"},\"wordCount\":1718,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/30d808d3f74e48f5b773e56e0939ac13\",\"articleSection\":[\"2010\",\"5\\\/2010\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/\",\"name\":\"Flexibles Unterformular - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/30d808d3f74e48f5b773e56e0939ac13\",\"datePublished\":\"2020-05-22T22:07:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/30d808d3f74e48f5b773e56e0939ac13\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/30d808d3f74e48f5b773e56e0939ac13\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Flexibles_Unterformular\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flexibles Unterformular\"}]},{\"@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":"Flexibles Unterformular - 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\/Flexibles_Unterformular\/","og_locale":"de_DE","og_type":"article","og_title":"Flexibles Unterformular","og_description":"Die Datenherkunft eines Unterformulars &auml;ndert sich in der Regel zur Laufzeit nicht - es wird h&ouml;chstens mal ein Filter oder eine Sortierung angewendet. Gelegentlich soll das gleiche Unterformularsteuerelement zwar mal das Unterformular wechseln, aber auch dies ist kein Problem. Interessant wird es, wenn Sie ein einziges Unterformular zur Laufzeit mit verschiedenen Datenherk&uuml;nften ausstatten m&ouml;chten. Sie k&ouml;nnen zwar Tabellen oder Abfragen statt eines richtigen Formulars als Unterformular angeben, aber diese bieten nat&uuml;rlich keine M&ouml;glichkeit, auf Ereignisse zu reagieren. Wir zeigen, wie Sie ein einziges Unterformular flexibel mit beliebigen Daten f&uuml;llen.","og_url":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:07:44+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13","type":"","width":"","height":""}],"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\/Flexibles_Unterformular\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Flexibles Unterformular","datePublished":"2020-05-22T22:07:44+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/"},"wordCount":1718,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13","articleSection":["2010","5\/2010","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/","url":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/","name":"Flexibles Unterformular - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13","datePublished":"2020-05-22T22:07:44+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/30d808d3f74e48f5b773e56e0939ac13"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Flexibles_Unterformular\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Flexibles Unterformular"}]},{"@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\/55000743","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=55000743"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000743\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}