{"id":55000834,"date":"2012-06-01T00:00:00","date_gmt":"2020-05-22T21:54:28","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=834"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"mnDaten_per_Listenfeld_filtern","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/","title":{"rendered":"m:n-Daten per Listenfeld filtern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wenn Sie Daten wie etwa Bestelldaten aus einer m:n-Beziehung in einem Formular verwalten, suchen Sie meist nach Bestellungen eines bestimmten Kunden, mit einem bestimmten Bestelldatum et cetera. Sie k&ouml;nnten aber auch einmal nach solchen Bestellungen suchen, die mindestens einen von mehreren Artikeln enthalten oder die gleich mehrere angegebene Artikel auff&uuml;hren sollen. Solche eine Suche f&uuml;hren Sie am einfachsten in einem separaten Formular durch, das zur Suche ge&ouml;ffnet wird und die Ergebnisse zur Auswahl bereitstellt.<\/b><\/p>\n<p>Die hier vorgestellte L&ouml;sung ist auf zwei Formulare aufgeteilt. Das erste Formular entspricht etwa dem von der Nordwind-Datenbank bekannten Bestellformular, das Kundendaten und Bestellinformationen anzeigt (s. Bild 1).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Bestellformular mit Filter-Funktion<\/span><\/b><\/p>\n<p>Dar&uuml;ber hinaus bietet das Formular mit der Schaltfl&auml;che <b>Bestellungen filtern <\/b>die M&ouml;glichkeit, einen weiteren Dialog zu &ouml;ffnen. Dieser erlaubt es, einen oder mehrere Artikel auszuw&auml;hlen, nach denen die Bestellungen durchsucht werden. Der Dialog sieht wie in Bild 2 aus und bietet zwei wesentliche Funktionen. Zun&auml;chst legen Sie mit einer Optionsgruppe fest, ob Sie Bestellungen mit mindestens einem der nachfolgend angegebenen Artikel anzeigen m&ouml;chten oder ob die Bestellungen alle gew&auml;hlten Artikel enthalten m&uuml;ssen. Die Treffer werden gleich im Listenfeld rechts neben den Suchkriterien angezeigt. Mit einem Doppelklick auf einen der gefundenen Eintr&auml;ge zeigen Sie die entsprechende Bestellung im Bestellformular an.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Filterkriterien f&uuml;r Bestellungen zusammenstellen<\/span><\/b><\/p>\n<p><b>Formular zur Anzeige der Bestellungen<\/b><\/p>\n<p>Dieses Formular enth&auml;lt keine besonderen Techniken. Das Hauptformular <b>frmBestellungen<\/b> enth&auml;lt als Datenherkunft eine Abfrage, die auf der Tabelle <b>tblBestellungen <\/b>basiert. Das Unterformular <b>sfmBestelldetails <\/b>liefert die zur jeweiligen Bestellung geh&ouml;renden Daten aus der Tabelle <b>tblBestelldetails<\/b>. Die Schaltfl&auml;che <b>cmdOK <\/b>schlie&szlig;t das Formular, die Schaltfl&auml;che <b>cmdBestellungenFiltern <\/b>&ouml;ffnet den Dialog zum Zusammenstellen des Filters:<\/p>\n<pre>Private Sub cmdBestellungenFiltern_Click()\r\n    DoCmd.OpenForm &quot;frmFilterkriterien&quot;\r\nEnd Sub<\/pre>\n<p><b>Das Filterformular<\/b><\/p>\n<p>Das Formular <b>frmFilterkriterien<\/b> sieht im Entwurf wie in Bild 3 aus. Zur Eingabe der Filterkriterien stehen zwei Steuerelemente zur Verf&uuml;gung. Das erste ist die Optionsgruppe <b>ogrArtikelfilter <\/b>mit den beiden Optionen <b>Oder <\/b>(Wert <b>1<\/b>) und <b>Und <\/b>(Wert <b>2<\/b>) und dem Standardwert <b>1<\/b>. Das zweite Steuerelement ist ein Listenfeld namens <b>lstArtikelfilter<\/b>. Es enth&auml;lt als Datensatzherkunft den folgenden Ausdruck:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Das Formular frmFilterkriterien in der Entwurfsansicht<\/span><\/b><\/p>\n<pre>SELECT ArtikelID, Artikelname FROM tblArtikel ORDER BY Artikelname;<\/pre>\n<p>Dadurch zeigt es alle Artikelnamen in alphabetischer Reihenfolge an. Damit nur die Artikelnamen erscheinen und nicht die <b>ArtikelID<\/b>, erhalten die beiden Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>die Werte <b>2 <\/b>und <b>0cm<\/b>.<\/p>\n<p>Der Benutzer soll einen oder mehrere Werte dieses Listenfeldes markieren, daher stellen Sie die Eigenschaft <b>Mehrfachauswahl <\/b>auf <b>Einfach <\/b>ein (oder <b>Erweitert<\/b>, je nachdem, was Ihnen angenehmer ist).<\/p>\n<p><b>Datensatzherkunft des Ergebnislistenfeldes<\/b><\/p>\n<p>Das Ergebnislistenfeld zeigt beim &Ouml;ffnen des Formulars die mit der Abfrage <b>qryBestellungenBestelldetails<\/b> ermittelten Daten an (s. Bild 4). Diese Abfrage f&uuml;hrt Daten aus den Tabellen <b>tblBestellungen<\/b>, <b>tblBestelldetails <\/b>und <b>tblArtikel <\/b>zusammen und sortiert diese aufsteigend nach dem Bestelldatum.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Die Abfrage qryBestellungenBestelldetails dient als Datensatzherkunft des Listenfeldes lstBestellungen.<\/span><\/b><\/p>\n<p><b>Ausl&ouml;sen der Aktualisierung der gefundenen Bestellungen<\/b><\/p>\n<p>Da es mehr als ein Steuerelement gibt, das die Datensatzherkunft des Listenfeldes <b>lstBestellungen <\/b>&auml;ndert, wurden die Codezeilen zum Filtern der Bestellungen in eine eigene Prozedur ausgegliedert. Diese hei&szlig;t <b>Bestellungen filtern <\/b>und wird durch zwei Ereignisse ausgel&ouml;st. Das erste ist das Aktualisieren der Optionsgruppe <b>ogrArtikelfilter<\/b>. Die dazugeh&ouml;rige Ereignisprozedur sieht so aus:<\/p>\n<pre>Private Sub ogrArtikelfilter_AfterUpdate()\r\n    BestellungenFiltern\r\nEnd Sub<\/pre>\n<p>Das zweite Ereignis ist das &auml;ndern der Auswahl im Listenfeld <b>lstArtikelfilter<\/b>: <\/p>\n<pre>Private Sub lstArtikelfilter_AfterUpdate()\r\n    BestellungenFiltern\r\nEnd Sub<\/pre>\n<p><b>Gefilterte Bestellungen ermitteln<\/b><\/p>\n<p>Die Prozedur <b>BestellungenFiltern <\/b>im Klassenmodul des Formulars <b>frmFilterkriterien <\/b>erledigt die Hauptarbeit (s. <span class=\"verweis-ohneumbruch\"><a href=\"#anker-50-anchor\">Listing 1<\/a><\/span>). Die Prozedur durchl&auml;uft zun&auml;chst alle ausgew&auml;hlten Eintr&auml;ge des Listenfeldes <b>lstArtikelfilter<\/b>. Dies geschieht innerhalb einer <b>For&#8230;Next<\/b>-Schleife mit der Laufvariablen <b>i<\/b>. Die Anzahl der zu durchlaufenden Elemente wird &uuml;ber die Eigenschaft <b>Count <\/b>der Auflistung <b>ItemsSelected <\/b>des Listenfeldes ermittelt.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Zusammenstellen der Datensatzherkunft nach dem Festlegen von Filterkriterien<\/p>\n<pre>Private Sub BestellungenFiltern()\r\n    Dim i As Integer\r\n    Dim lngIndex As Long\r\n    Dim lngArtikelID As Long\r\n    Dim strFilter As String\r\n    Dim strSQL As String\r\n    Dim intAnzahl As Integer\r\n    For i = 0 To Me!lstArtikelfilter.ItemsSelected.Count - 1\r\n        lngIndex = Me!lstArtikelfilter.ItemsSelected(i)\r\n        lngArtikelID = Me!lstArtikelfilter.ItemData(lngIndex)\r\n        strFilter = strFilter &amp; &quot; OR ArtikelID = &quot; &amp; lngArtikelID\r\n        intAnzahl = intAnzahl + 1\r\n    Next i\r\n    If Len(strFilter) &gt; 0 Then\r\n        strFilter = Mid(strFilter, 4)\r\n        strSQL = &quot;SELECT DISTINCT BestellungID, Bestelldatum, Firma, Kontaktperson &quot; _\r\n            &amp; &quot;FROM qryBestellungenBestelldetails&quot;\r\n        If Me!ogrArtikelfilter = 1 Then\r\n            Me!lstBestellungen.RowSource = strSQL &amp; &quot; WHERE &quot; &amp; strFilter\r\n        Else\r\n            If Not intAnzahl = 0 Then\r\n                strSQL = strSQL &amp; &quot; WHERE (&quot; &amp; strFilter &amp; &quot;) GROUP BY BestellungID, &quot; _\r\n                    &amp; &quot;Bestelldatum, Firma, Kontaktperson HAVING Count(BestellungID)=&quot; _\r\n                    &amp; intAnzahl &amp; &quot;;&quot;\r\n                Me!lstBestellungen.RowSource = strSQL\r\n            End If\r\n        End If\r\n    Else\r\n        Me!lstBestellungen.RowSource = &quot;SELECT DISTINCT BestellungID, Bestelldatum, Firma, &quot; _\r\n            &amp; &quot;Kontaktperson FROM qryBestellungenBestelldetails&quot;\r\n    End If\r\nEnd Sub<\/pre>\n<p><!--30percent--><\/p>\n<p>Die erste Zeile innerhalb der Schleife ermittelt den Index des jeweiligen Eintrags der Auflistung <b>ItemsSelected<\/b> und speichert ihn in der Variablen <b>lngIndex<\/b>. Wenn beispielsweise als erstes markiertes Element der dritte Eintrag erkannt wird, enth&auml;lt <b>lngIndex <\/b>den Wert <b>2 <\/b>(die Indizes sind <b>0<\/b>-basiert). Die <b>ItemData<\/b>-Eigenschaft mit diesem <b>Index<\/b>-Wert als Parameter liefert den Wert der gebundenen Spalte des Listenfeldes, also den Wert des Feldes <b>ArtikelID<\/b>, und speichert diesen in einer weiteren Variablen namens <b>lngArtikelID<\/b>. F&uuml;r jeden markierten Eintrag des Listenfeldes wird nun eine <b>OR<\/b>-Klausel an die Zeichenkette <b>strFilter<\/b> angeh&auml;ngt, die etwa wie folgt aussieht:<\/p>\n<pre>OR ArtikelID = 12<\/pre>\n<p>Au&szlig;erdem wird die Z&auml;hlervariable <b>intAnzahl <\/b>um <b>1 <\/b>erh&ouml;ht. Stellt die Prozedur nach dem Verlassen der <b>For&#8230;Next<\/b>-Schleife fest, dass mindestens ein Eintrag markiert und somit die L&auml;nge der in der Variablen <b>strFilter <\/b>gespeicherten Zeichenkette gr&ouml;&szlig;er als <b>0 <\/b>ist, wird der <b>If<\/b>-Teil der folgenden <b>If&#8230;Then&#8230;Else<\/b>-Bedingung abgearbeitet.<\/p>\n<p>Falls nicht, weist die Prozedur dem Listenfeld <b>lstBestellungen <\/b>erneut die bereits beim &Ouml;ffnen des Formulars verwendete Abfrage <b>qryBestellungenBestelldetails <\/b>als Wert der Eigenschaft <b>RowSource <\/b>(<b>Datensatzherkunft<\/b>) zu &#8211; mit dem Unterschied, dass nur die vier Felder <b>BestellungID<\/b>, <b>Bestelldatum<\/b>, <b>Firma <\/b>und <b>Kontaktperson <\/b>ausgegeben werden. Au&szlig;erdem wird durch Verwendung des Schl&uuml;sselworts <b>DISTINCT <\/b>sichergestellt, dass jede Bestellung nur einmal aufgef&uuml;hrt wird und nicht f&uuml;r jeden Artikel jeweils einmal.<\/p>\n<p>Ist jedoch ein Filterausdruck vorhanden, wird es interessant. Zun&auml;chst einmal wird das f&uuml;hrende <b>OR <\/b>mit der <b>Mid<\/b>-Funktion abgeschnitten, damit aus einem Ausdruck wie <\/p>\n<pre>OR ArtikelID = 12 OR ArtikelID = 15<\/pre>\n<p>der folgende Ausdruck wird:<\/p>\n<pre>ArtikelID = 12 OR ArtikelID = 15<\/pre>\n<p>Dann beginnt die Prozedur, die Datensatzherkunft f&uuml;r das Listenfeld <b>lstArtikelfilter <\/b>in der Variablen <b>strSQL <\/b>zusammenzustellen. Der erste Teil besteht prinzipiell aus dem Inhalt der Abfrage <b>qryBestellungenBestelldetails<\/b>:<\/p>\n<pre>SELECT DISTINCT BestellungID, Bestelldatum, Firma, Kontaktperson FROM qryBestellungenBestelldetails<\/pre>\n<p>Der Unterschied ist, dass das Feld <b>ArtikelID<\/b> nicht mit ausgegeben wird &#8211; es dient schlicht als Kriteriumsfeld. Wie der Kriteriumsausdruck ermittelt wird, h&auml;ngt davon ab, ob der Benutzer die markierten Artikel mit <b>Und <\/b>oder <b>Oder <\/b>verkn&uuml;pfen m&ouml;chte.<\/p>\n<p>Bei Verkn&uuml;pfung mit <b>Oder <\/b>wird der erste Teil der folgenden <b>If&#8230;Then&#8230;Else<\/b>-Bedingung ausgef&uuml;hrt.<\/p>\n<p>Dieser h&auml;ngt schlicht das Schl&uuml;sselwort <b>WHERE <\/b>und den in der Variablen <b>strFilter <\/b>gespeicherten Ausdruck an die in <b>strSQL <\/b>enthaltene Basisabfrage an. Damit entsteht beispielsweise ein Ausdruck wie der folgende:<\/p>\n<pre>SELECT DISTINCT BestellungID, Bestelldatum, Firma, Kontaktperson\r\nFROM qryBestellungenBestelldetails\r\nWHERE ArtikelID = 12 OR ArtikelID = 15<\/pre>\n<p>Dies liefert alle Bestellungen, die mindestens einen der beiden Artikel mit dem Wert <b>12 <\/b>oder <b>15 <\/b>im Feld <b>ArtikelID <\/b>enthalten.<\/p>\n<p><b>Abfrage mit Und-Verkn&uuml;pfung<\/b><\/p>\n<p>Interessanter wird es, wenn der Benutzer <b>Und <\/b>als Verkn&uuml;pfungsparameter gew&auml;hlt hat.<\/p>\n<p>Es gibt keine direkte Formulierung eines solchen Kriteriums f&uuml;r per m:n-Beziehung verkn&uuml;pfte Datens&auml;tze, denn ein Kriterium wie das folgende kann niemals erf&uuml;llt werden:<\/p>\n<pre>ArtikelID = 12 AND ArtikelID = 15<\/pre>\n<p>Stattdessen w&auml;hlen wir einen Trick. Die Abfrage aus Bild 5 liefert ein Beispiel f&uuml;r die Ermittlung aller Bestellungen, deren Tabelle <b>tblBestelldetails <\/b>die Artikel mit den Werten <b>1 <\/b>und <b>2 <\/b>f&uuml;r das Feld <b>ArtikelID <\/b>zur Ergebnismenge der Abfrage hinzuf&uuml;gt. Das Abfrageergebnis enth&auml;lt also Datens&auml;tze mit dem Wert <b>1 <\/b>oder <b>2<\/b> &#8211; manchmal einen pro Bestellung, manchmal zwei. Per Sichtkontrolle lassen sich nun bereits die Bestelldatens&auml;tze ermitteln, die alle gesuchten Artikel enthalten. Wie aber k&ouml;nnen wir diese automatisiert auslesen<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic007.png\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Diese Abfrage verkn&uuml;pft zwei Vergleichskriterien mit Und.<\/span><\/b><\/p>\n<p>Dazu entfernen Sie zun&auml;chst das Feld <b>ArtikelID <\/b>aus der Menge der anzuzeigenden Felder und lassen nur das als Bedingung verwendete Exemplar im Abfrageentwurf. Damit enth&auml;lt das Ergebnis jede Bestellung, die &uuml;berhaupt einen der beiden Artikel enth&auml;lt, nur einmal. Um zu ermitteln, welche Bestellung einen und welche zwei der gesuchten Artikel enth&auml;lt, f&uuml;gen Sie das Feld <b>BestellungID <\/b>erneut zum Abfrageentwurf hinzu (s. Bild 6).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Um zu erkennen, welche Datens&auml;tze zweimal enthalten sind, wird die Anzahl gleicher Datens&auml;tze zus&auml;tzlich ausgegeben.<\/span><\/b><\/p>\n<p>Das Ergebnis sieht nun wie in Bild 7 aus. Um das Ergebnis abzurunden, fehlt nur noch ein Kriterium, welches das letzte Feld auf den Wert <b>2 <\/b>pr&uuml;ft &#8211; schon liefert die Abfrage alle gesuchten Bestellungen. Als reiner SQL-Ausdruck sieht diese Abfrage wie folgt aus:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/mnDatenPerListenfeldFiltern-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Bestellungen mit einem und zweien der gesuchten Artikel<\/span><\/b><\/p>\n<pre>SELECT DISTINCT BestellungID, Bestelldatum, Firma, Kontaktperson\r\nFROM qryBestellungenBestelldetails\r\nWHERE (ArtikelID = 1 OR ArtikelID = 2)\r\nGROUP BY BestellungID, Bestelldatum, Firma, Kontaktperson\r\nHAVING Count(BestellungID)=2;<\/pre>\n<p>Leider gilt diese nur f&uuml;r genau zwei per <b>Und <\/b>verkn&uuml;pfte Artikel &#8211; n&auml;mlich f&uuml;r jene mit den Werten <b>1 <\/b>und <b>2 <\/b>im Feld <b>ArtikelID<\/b>. Es ist also noch ein wenig Dynamik gefragt, die im weiter oben erw&auml;hnten inneren <b>If&#8230;Then-Else<\/b>-Konstrukt hinzugef&uuml;gt wird.<\/p>\n<p>Nun: Das Kriterium, das die Bestellungen mit den gesuchten Artikeln zur&uuml;ckgibt, wird bereits im ersten Teil der Prozedur zusammengef&uuml;gt und enth&auml;lt die einzelnen, durch <b>OR <\/b>getrennten Kriterien. Fehlt also nur noch der hintere Teil der SQL-Abfrage. Dieser besteht aus einem statischen Teil, der immer gleich ist und die Felder f&uuml;r die Gruppierung zusammenstellt:<\/p>\n<pre>GROUP BY BestellungID, Bestelldatum, Firma,\r\nKontaktperson<\/pre>\n<p>W&auml;hrend der Abgleich mit den gesuchten Werten f&uuml;r die <b>ArtikelID <\/b>vor der Gruppierung erfolgt, soll der Vergleich mit der Zahl, die der Anzahl der per <b>OR <\/b>verkn&uuml;pften Kriterien entspricht, erst nach dem Gruppieren durchgef&uuml;hrt werden. Dies erledigt die folgende Klausel:<\/p>\n<pre>HAVING Count(BestellungID)=2<\/pre>\n<p>Dabei wird statt des Wertes die mit der Z&auml;hlervariablen <b>intAnzahl <\/b>ermittelte Anzahl Kriterien &uuml;bergeben. Dadurch, dass die Bedingung <b>Count(BestellungID) = 2<\/b> hinter dem <b>HAVING<\/b>-Schl&uuml;sselwort folgt und nicht bereits im <b>WHERE<\/b>-Bereich, wird sie erst nach dem Durchf&uuml;hren der Gruppierung angewendet.<\/p>\n<p><b>Anzeigen der gesuchten Bestellung<\/b><\/p>\n<p>Wenn das Listenfeld <b>lstBestellungen <\/b>die gesuchten Bestellungen auflistet, soll der Benutzer diese per Doppelklick im aufrufenden Formular <b>frmBestellungen <\/b>anzeigen k&ouml;nnen.<\/p>\n<p>Dazu f&uuml;gen Sie dem Ereignis <b>Beim Doppeklicken <\/b>die folgende Ereignisprozedur hinzu:<\/p>\n<pre>Private Sub lstBestellungen_DblClick(Cancel As Integer)\r\n    If IstFormularGeoeffnet(&quot;frmBestellungen&quot;) Then\r\n        Forms!frmBestellungen.Filter = _\r\n            &quot;BestellungID = &quot; &amp; Me!lstBestellungen\r\n        Forms!frmBestellungen.FilterOn = True\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die Suche nach Daten in m:n-Beziehungen, die mehreren verkn&uuml;pften Datens&auml;tzen zugleich zugeordnet sind, ist selten. Dieser Beitrag liefert mit der M&ouml;glichkeit, einen einzigen oder mehrere per <b>Oder <\/b>oder <b>Und <\/b>verkn&uuml;pfte Datens&auml;tze zu ermitteln, jedoch eine Rundum-L&ouml;sung. Ein weiteres Anwendungsbeispiel w&auml;re es etwa, Rezepte mit bestimmten Zutaten oder Fahrzeuge mit bestimmten Ausstattungsmerkmalen zu ermitteln.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>mnDatenperListenfeldFiltern.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{2BDC097E-343E-4993-9AFB-2DB6306B1C36}\/aiu_834.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie Daten wie etwa Bestelldaten aus einer m:n-Beziehung in einem Formular verwalten, suchen Sie meist nach Bestellungen eines bestimmten Kunden, mit einem bestimmten Bestelldatum et cetera. Sie k&ouml;nnten aber auch einmal nach solchen Bestellungen suchen, die mindestens einen von mehreren Artikeln enthalten oder die gleich mehrere angegebene Artikel auff&uuml;hren sollen. Solche eine Suche f&uuml;hren Sie am einfachsten in einem separaten Formular durch, dass zur Suche ge&ouml;ffnet wird und die Ergebnisse zur Auswahl bereitstellt.<\/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":[662012,66032012,44000023],"tags":[],"class_list":["post-55000834","post","type-post","status-publish","format-standard","hentry","category-662012","category-66032012","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>m:n-Daten per Listenfeld filtern - 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\/mnDaten_per_Listenfeld_filtern\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"m:n-Daten per Listenfeld filtern\" \/>\n<meta property=\"og:description\" content=\"Wenn Sie Daten wie etwa Bestelldaten aus einer m:n-Beziehung in einem Formular verwalten, suchen Sie meist nach Bestellungen eines bestimmten Kunden, mit einem bestimmten Bestelldatum et cetera. Sie k&ouml;nnten aber auch einmal nach solchen Bestellungen suchen, die mindestens einen von mehreren Artikeln enthalten oder die gleich mehrere angegebene Artikel auff&uuml;hren sollen. Solche eine Suche f&uuml;hren Sie am einfachsten in einem separaten Formular durch, dass zur Suche ge&ouml;ffnet wird und die Ergebnisse zur Auswahl bereitstellt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:54:28+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c\" \/>\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=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"m:n-Daten per Listenfeld filtern\",\"datePublished\":\"2020-05-22T21:54:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/\"},\"wordCount\":1653,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/5ae12c4a3bd9406db5d92c340a36796c\",\"articleSection\":[\"2012\",\"3\\\/2012\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/\",\"name\":\"m:n-Daten per Listenfeld filtern - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/5ae12c4a3bd9406db5d92c340a36796c\",\"datePublished\":\"2020-05-22T21:54:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/5ae12c4a3bd9406db5d92c340a36796c\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/5ae12c4a3bd9406db5d92c340a36796c\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/mnDaten_per_Listenfeld_filtern\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"m:n-Daten per Listenfeld filtern\"}]},{\"@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":"m:n-Daten per Listenfeld filtern - 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\/mnDaten_per_Listenfeld_filtern\/","og_locale":"de_DE","og_type":"article","og_title":"m:n-Daten per Listenfeld filtern","og_description":"Wenn Sie Daten wie etwa Bestelldaten aus einer m:n-Beziehung in einem Formular verwalten, suchen Sie meist nach Bestellungen eines bestimmten Kunden, mit einem bestimmten Bestelldatum et cetera. Sie k&ouml;nnten aber auch einmal nach solchen Bestellungen suchen, die mindestens einen von mehreren Artikeln enthalten oder die gleich mehrere angegebene Artikel auff&uuml;hren sollen. Solche eine Suche f&uuml;hren Sie am einfachsten in einem separaten Formular durch, dass zur Suche ge&ouml;ffnet wird und die Ergebnisse zur Auswahl bereitstellt.","og_url":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:54:28+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"m:n-Daten per Listenfeld filtern","datePublished":"2020-05-22T21:54:28+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/"},"wordCount":1653,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c","articleSection":["2012","3\/2012","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/","url":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/","name":"m:n-Daten per Listenfeld filtern - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c","datePublished":"2020-05-22T21:54:28+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/5ae12c4a3bd9406db5d92c340a36796c"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/mnDaten_per_Listenfeld_filtern\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"m:n-Daten per Listenfeld filtern"}]},{"@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\/55000834","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=55000834"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000834\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}