{"id":55000724,"date":"2010-06-01T00:00:00","date_gmt":"2020-05-22T22:13:22","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=724"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Suchformular_fuer_die_Datenblattansicht","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/","title":{"rendered":"Suchformular f&uuml;r die Datenblattansicht"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Access liefert zwar eine hilfreiche Suchfunktion, mit der Sie die in der Datenblattansicht angezeigte Daten sortieren oder filtern k&ouml;nnen, aber wirklich &uuml;bersichtlich und intuitiv ist diese nicht. Also legen wir selbst Hand an und bauen uns ein eigenes Suchformular, dass die verschiedenen Steuerelementtypen der Datenblattansicht ber&uuml;cksichtig und dieses gleich entsprechend der definierten Suche filtert.<\/b><\/p>\n<p>Als Beispiel f&uuml;r unsere L&ouml;sung dient die Artikel-Tabelle der S&uuml;dsturm-Datenbank &#8211; unsere optimierte Nordwind-Datenbank aus dem Beitrag <b>S&uuml;dsturm, die bessere Beispieldatenbank <\/b>(<b>www.access-im-unternehmen.de\/411<\/b>). Diese Tabelle enth&auml;lt die drei m&ouml;glichen Steuerelementtypen, die &uuml;blicherweise in der Datenblattansicht von Formularen dargestellt werden, n&auml;mlich Textfelder, Kombinationsfelder und Kontrollk&auml;stchen.<\/p>\n<p>Die Konfiguration f&uuml;r die Anzeige von Daten in der Datenblattansicht sieht &uuml;blicherweise so aus, dass es ein Hauptformular gibt, dass einige Steuerelemente wie beispielsweise eine Suchen-Schaltfl&auml;che und ein Unterformular mit den eigentlichen Daten enth&auml;lt. Dies ist allein der Tatsache geschuldet, dass Formulare in der Datenblattansicht keinen Kopf- oder Fu&szlig;bereich anzeigen, in dem man weitere Steuerelemente unterbringen k&ouml;nnte. Das in diesem Beitrag demonstrierte Beispiel sieht wie in Bild 1 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/Suchformulare-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Beispiel f&uuml;r das Durchsuchen eines Datenblatts mit einem zus&auml;tzlichen Suchformular<\/span><\/b><\/p>\n<p>Unser Suchformular soll folgende Voraussetzungen erf&uuml;llen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Es soll per Mausklick auf eine Schaltfl&auml;che erscheinen.<\/li>\n<li class=\"aufz-hlung\">Es soll im Vordergrund bleiben, aber das Bearbeiten von Daten im aufrufenden Formular erlauben.<\/li>\n<li class=\"aufz-hlung\">Es soll f&uuml;r jedes Feld der Datenblattansicht ein Suchfeld enthalten.<\/li>\n<li class=\"aufz-hlung\">Die eingegebenen Suchkriterien werden mit dem Operatur <b>Und <\/b>verkn&uuml;pft.<\/li>\n<li class=\"aufz-hlung\">Ein Klick auf die Schaltfl&auml;che <b>Suchen <\/b>des Formulars aktualisiert das Datenblatt des aufrufenden Formulars.<\/li>\n<li class=\"aufz-hlung\">Gleichzeitig bleibt das Suchformular ge&ouml;ffnet, damit der Benutzer leicht die Suchkriterien anpassen und die Suche erneut durchf&uuml;hren kann.<\/li>\n<li class=\"aufz-hlung\">Die Schaltfl&auml;che <b>Leeren <\/b>setzt alle Suchfelder zur&uuml;ck und sorgt daf&uuml;r, dass wieder alle Datens&auml;tze im Datenblatt erscheinen.<\/li>\n<li class=\"aufz-hlung\">Das Suchformular soll automatisch geschlossen werden, wenn das aufrufende Formular geschlossen wird.<\/li>\n<\/ul>\n<p><b>Anzeige der Daten in der Datenblattansicht<\/b><\/p>\n<p>Das Formular <b>frmArtikel <\/b>enth&auml;lt die Schaltfl&auml;che <b>cmdSuchen <\/b>und das Unterformularsteuerelement <b>sfm<\/b>. Die Eigenschaften <b>Datenherkunft <\/b>und <b>Standardansicht <\/b>des Unterformular <b>sfmArtikel <\/b>stellen Sie auf <b>tblArtikel <\/b>und <b>Datenblatt <\/b>ein.<\/p>\n<p>Au&szlig;erdem ziehen Sie alle gew&uuml;nschten Felder ( in der Beispieldatenbank alle) in den Detailbereich des Formularentwurfs.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Einbinden des Unterformulars in das Hauptformular<\/p>\n<p>Wenn Sie dem Hauptformular bereits ein Unterformularsteuerelement hinzugef&uuml;gt haben, brauchen Sie nur noch dessen Eigenschaft <b>Herkunftsobjekt <\/b>auf <b>sfmArtikel <\/b>einzustellen. Im Entwurf sieht der aktuelle Stand nun wie in Bild 2 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/Suchformulare-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Entwurf von Haupt- und Unterformular f&uuml;r die zu durchsuchenden Daten<\/span><\/b><\/p>\n<p>Wenn Sie der Schaltfl&auml;che <b>cmdSuchen <\/b>nun noch die folgende Ereignisprozedur unterjubeln, ist dieser Teil der L&ouml;sung bereits erledigt:<\/p>\n<pre>Private Sub cmdSuche_Click()\r\n    DoCmd.OpenForm &quot;frmSuche&quot;\r\nEnd Sub<\/pre>\n<p><b>Erstellen des Suchformulars<\/b><\/p>\n<p>Das Suchformular hei&szlig;t <b>frmSuche <\/b>und besitzt keine Datenherkunft und somit nur ungebundene Steuerelemente. Die drei Schaltfl&auml;chen hei&szlig;en <b>cmdSuchen<\/b>, <b>cmdLeeren <\/b>und <b>cmdAbbrechen<\/b>. Die Schaltfl&auml;che <b>cmdAbbrechen <\/b>hat die einfachste Aufgabe, die mit folgender Ereignisprozedur erledigt wird:<\/p>\n<pre>Private Sub cmdAbbrechen_Click()\r\n    DoCmd.Close acForm, Me.Name\r\nEnd Sub<\/pre>\n<p>F&uuml;r zus&auml;tzlichen Komfort stellen Sie die Eigenschaft <b>Abbrechen <\/b>dieser Schaltfl&auml;che auf den Wert <b>Ja <\/b>ein. Dies l&ouml;st obige Prozedur aus, wenn der Benutzer auf Escape tippt. Au&szlig;erdem sorgen Sie mit <b>Popup <\/b>gleich <b>Ja <\/b>daf&uuml;r, dass das Formular immer im Vordergrund bleibt.<\/p>\n<p><b>Kein Suchformular ohne aufrufendes Formular<\/b><\/p>\n<p>Der Rest ist weniger trivial, aber nach einmaliger Programmierung vielf&auml;ltig einsetzbar. Wir besch&auml;ftigen uns zun&auml;chst damit, dass das Formular beim Schlie&szlig;en des aufrufenden Formulars automatisch mit geschlossen werden soll. Hier gibt es zwei M&ouml;glichkeiten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Sie bringen direkt im Klassenmodul des aufrufenden Formulars ein Ereignis unter, dass beim Schlie&szlig;en desselbigen ausgel&ouml;st wird (<b>Beim Schlie&szlig;en<\/b>, <b>Beim Entladen<\/b>) und das Formular <b>frmSuchen <\/b>ebenfalls schlie&szlig;t. Nachteil: Sie m&uuml;ssen hier erst pr&uuml;fen, ob dieses Formular &uuml;berhaupt noch ge&ouml;ffnet ist, da das Schlie&szlig;en sonst einen Fehler hervorruft.<\/li>\n<li class=\"aufz-hlung\">Sie jubeln dem aufrufenden Formular &uuml;ber seine Objektvariable ein Ereignis unter, das beim Schlie&szlig;en (also wiederum durch eines der Ereignisse <b>Beim Schlie&szlig;en <\/b>oder <b>Beim Entladen<\/b>) ausgel&ouml;st wird. Unterjubeln deshalb, weil es physisch im Klassenmodul des Suchformulars angelegt wird, aber auf die Ereignisse eines Objekts reagiert, dass auf das aufrufende Formular verweist. Im Prinzip ist das der gleiche Vorgang, aber Sie brauchen keine Pr&uuml;fung mehr, ob das zu schlie&szlig;ende Formular &uuml;berhaupt ge&ouml;ffnet ist.<\/li>\n<\/ul>\n<p>Wir verwenden die zweite Variante, wozu wir zun&auml;chst eine Objektvariable namens <b>frmParent <\/b>deklarieren:<\/p>\n<pre>Private WithEvents frmParent As Form<\/pre>\n<p>Durch die Deklaration mit dem Schl&uuml;sselwort <b>WithEvents<\/b> k&ouml;nnen wir uns &uuml;berhaupt erst in die Ereigniskette dieses Formulars einklinken. frmParant werden wir gleich mit einem Verweis auf das aufrufende Formular f&uuml;llen. Wir brauchen noch einen weiteren Objektverweis, und zwar f&uuml;r den Zugriff auf das zu durchsuchende Unterformular in der Datenblattansicht. Dieses referenzieren wir mit dieser Objektvariablen:<\/p>\n<pre>Private frmDatasheet As Form<\/pre>\n<p>Beide Objektvariablen f&uuml;llen wir gleich beim &Ouml;ffnen des Suchformulars <b>frmSuche<\/b>. Dazu verwenden wir die Prozedur, die durch das Ereignis <b>Beim &Ouml;ffnen <\/b>ausgel&ouml;st wird:<\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    Dim ctl As Control\r\n    Set ctl = Screen.ActiveControl\r\n    Set frmParent = ctl.Parent\r\n    frmParent.OnUnload = &quot;[Event Procedure]&quot;\r\n    Set frmDatasheet = frmParent!sfm.Form\r\nEnd Sub<\/pre>\n<p>Die Prozedur ermittelt zun&auml;chst einen Verweis auf das aktive Steuerelement. Die Eigenschaft <b>Screen.ActiveControl <\/b>sollte hier tunlichst einen Verweis auf die Schaltfl&auml;che <b>cmdSuchen <\/b>zur&uuml;ckliefern. &Uuml;ber die <b>Parent<\/b>-Eigenschaft dieses Steuerelements erhalten wir einen Verweis auf das Formular, das dieses enth&auml;lt. Das funktioniert auch, wenn das Formular mit der Schaltfl&auml;che <b>cmdSuchen<\/b> selbst als Unterformular in einem weiteren Unterformular untergebracht ist. Nur wenn die Schaltfl&auml;che und das Unterformular mit der Datenblattansicht nicht das gleiche &uuml;bergeordnete Formular besitzen, m&uuml;ssen Sie diesen Code entsprechend umbauen.<\/p>\n<p><!--30percent--><\/p>\n<p>Die folgende Zuweisung des Wertes <b>[Event Procedure] <\/b>an die Eigenschaft <b>OnUnload <\/b>bewirkt nichts anderes, als wenn Sie von Hand den Wert <b>[Ereignisprozedur] <\/b>in das entsprechende Eigenschaftsfeld eintragen w&uuml;rden &#8211; allerdings muss sich die passende Ereignisprozedur im gleichen Klassenmodul wie die Deklaration der Objektvariablen befinden (also in dem des Suchformulars). Dort legen Sie auch die ben&ouml;tigte Ereignisprozedur an, die schlicht das Suchformular schlie&szlig;t:<\/p>\n<pre>Private Sub frmParent_Unload(Cancel As Integer)\r\n    DoCmd.Close acForm, Me.Name\r\nEnd Sub<\/pre>\n<p><b>Besonderheiten beim Anlegen der Felder zur Eingabe der Kriterien<\/b><\/p>\n<p>Bevor wir uns um den Code k&uuml;mmern, der die eingegebenen Kriterien auswertet, legen wir erstmal die zur Eingabe ben&ouml;tigten Steuerelemente an. Es gibt vier M&ouml;glichkeiten (dies ist erweiterbar, aber wir wollen nicht den Rahmen dieses Beitrags sprengen):<\/p>\n<ul>\n<li class=\"aufz-hlung\">Einfache Textfelder, in die der Benutzer Kriterien mit Platzhaltern wie Sternchen (*) und Fragezeichen () eingeben kann<\/li>\n<li class=\"aufz-hlung\">Kombinationsfelder, die eine Auswahl aller in einem Textfeld vorkommenden Eintr&auml;ge anbieten<\/li>\n<li class=\"aufz-hlung\">Kombinationsfelder, die alle Eintr&auml;ge eines zu durchsuchenden Kombinationsfeldes anbieten<\/li>\n<li class=\"aufz-hlung\">Kombinationsfelder, welche die beiden Werte eines <b>Ja\/Nein<\/b>-Feldes anbieten<\/li>\n<\/ul>\n<p>Es gibt ein paar kleine Regeln f&uuml;r das Anlegen dieser Felder: Text- und Kombinationsfelder, die Suchkriterien f&uuml;r Textfelder aufnehmen, sollen das Pr&auml;fix <b>txt <\/b>besitzen (also die ersten beiden Eintr&auml;ge der obigen Liste). Kombinationsfelder f&uuml;r die Auswahl von Werten aus Kombinationsfeldern sollen das Pr&auml;fix <b>cbo <\/b>erhalten (f&uuml;r <b>Combobox<\/b>). Und solche, die sich auf <b>Ja\/Nein<\/b>-Felder beziehen, beginnen mit <b>chk <\/b>(f&uuml;r <b>Checkbox<\/b>). Der Teil des Steuerelementnamens hinter dem Pr&auml;fix muss genau mit dem Feldnamen &uuml;bereinstimmen. Im Falle der Artikel-Tabelle sieht dies so aus:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>txtArtikelID<\/b>: Textfeld zur Eingabe von Artikelnummern aus dem Feld <b>ArtikelID <\/b>oder Teilen davon als Text<\/li>\n<li class=\"aufz-hlung\"><b>txtArtikelname<\/b>: wie <b>txtArtikelID<\/b>, nur f&uuml;r das Feld <b>Artikelname<\/b><\/li>\n<li class=\"aufz-hlung\"><b>txtLiefereinheit<\/b>: Kombinationsfeld zur Auswahl der Werte des Feldes <b>Liefereinheit<\/b><\/li>\n<li class=\"aufz-hlung\"><b>cboLieferant<\/b>, <b>cboKategorie<\/b>: Auswahl der Werte der verkn&uuml;pften Tabellen <b>tblLieferanten <\/b>und <b>tblKategorien<\/b>, die in der Tabelle <b>tblArtikel <\/b>als Nachschlagefelder <b>Lieferant <\/b>und <b>Kategorie <\/b>abgebildet sind<\/li>\n<li class=\"aufz-hlung\"><b>chkAuslaufartikel<\/b>: Kombinationsfeld, dass die beiden Werte <b>Ja <\/b>und <b>Nein <\/b>anbietet und damit die Tabelle nach dem Inhalt des <b>Ja\/Nein<\/b>-Feldes <b>Auslaufartikel <\/b>filtert<\/li>\n<\/ul>\n<p>Insgesamt werden die Steuerelemente zur Eingabe der Suchkriterien im Entwurf des Formulars wie in Bild 3 angeordnet.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/Suchformulare-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Formular zur Eingabe von Suchkriterien in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Die Kombinationsfelder m&uuml;ssen Sie schlie&szlig;lich noch mit einer Datensatzherkunft versehen. Am einfachsten ist dies bei den Kombinationsfeldern, die zum Ausw&auml;hlen der Werte aus verkn&uuml;pften Tabellen dienen: Sie brauchen dort lediglich die Datensatzherkunft des entsprechenden Feldes der zu filternden Tabelle einzutragen. Beim Feld <b>Lieferant <\/b>ist dies beispielsweise der folgende Ausdruck:<\/p>\n<pre>SELECT LieferantID, Firma FROM tblLieferanten;<\/pre>\n<p>Stellen Sie au&szlig;erdem die Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>auf die Werte <b>2 <\/b>und <b>0cm <\/b>ein, damit nur der eigentliche Wert angezeigt wird und der Inhalt des Prim&auml;rschl&uuml;sselfeldes verborgen bleibt. Die Datensatzherkunft eines Nachschlagefeldes finden Sie &uuml;brigens in den Eigenschaften des jeweiligen Feldes im Tabellenentwurf, und dort auf der Registerseite <b>Nachschlagen <\/b>(siehe Bild 4).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_03\/Suchformulare-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Hier finden Sie die Datensatzherkunft eines Nachschlagefeldes.<\/span><\/b><\/p>\n<p>Bei einem Feld, dessen Inhalte Sie ebenfalls als Kombinationsfeld anbieten m&ouml;chten, das aber eigentlich nur ein Textfeld ist, k&ouml;nnen Sie die Datensatzherkunft ganz leicht selbst ableiten: Sie ben&ouml;tigen eigentlich nur den Feld- und den Tabellennamen und betten beides dann in einen SQL-Ausdruck wie diesen hier ein:<\/p>\n<pre>SELECT DISTINCT Liefereinheit FROM tblArtikel ORDER BY Liefereinheit;<\/pre>\n<p>Wichtig sind dabei das Schl&uuml;sselwort <b>DISTINCT<\/b>, das daf&uuml;r sorgt, dass jeder Eintrag nur einmal angezeigt wird, und die Sortierung nach dem Feldinhalt &#8211; auf diese Weise findet der Benutzer die Eintr&auml;ge gleich in alphabetischer Reihenfolge. Beachten Sie au&szlig;erdem, dass Sie <b>Spaltenanzahl <\/b>auf <b>1 <\/b>einstellen und <b>Spaltenbreiten <\/b>leeren &#8211; die Datensatzherkunft enth&auml;lt schlie&szlig;lich nur ein Feld.<\/p>\n<p>Beim <b>Ja\/Nein<\/b>-Feld verwenden Sie grunds&auml;tzlich den folgenden Ausdruck als Datensatzherkunft:<\/p>\n<pre>-1;&quot;Ja&quot;;0;&quot;Nein&quot;<\/pre>\n<p>Wie Sie sehen, handelt es sich nicht um einen SQL-Ausdruck, sondern um eine Wertliste. Dementsprechend stellen Sie die Eigenschaft <b>Herkunftsart <\/b>auf <b>Wertliste <\/b>ein. <b>Spaltenanzahl <\/b>und <b>Spaltenbreite <\/b>setzen Sie auf <b>2 <\/b>und <b>0cm<\/b>, damit nur die Werte <b>Ja <\/b>und <b>Nein <\/b>angezeigt werden. Die Werte der ersten Spalte werden anschlie&szlig;end beim Zusammensetzen des Filterausdrucks ber&uuml;cksichtigt.<\/p>\n<p><b>Auswerten von Suchkriterien<\/b><\/p>\n<p>Die Auswertung erfolgt unabh&auml;ngig der speziellen Implementation des Formulars. Sie k&ouml;nnten auch eine ganz andere Tabelle in dem Unterformular in der Datenblattansicht hinterlegen und das Suchformular mit entsprechenden Steuerelementen zur Eingabe der Suchkriterien ausstatten &#8211; wichtig ist allein, dass die Steuerelemente den oben angegebenen Konventionen entsprechen. Generell wird die Suche &uuml;ber einen Mausklick auf die Schaltfl&auml;che <b>cmdSuchen <\/b>gestartet. Damit der Benutzer nach Eingabe der Suchbegriffe nicht erst zur Maus greifen muss, um diese Schaltfl&auml;che anzuklicken, stellen Sie ihre Eigenschaft <b>Standard <\/b>auf <b>Ja <\/b>ein &#8211; das Bet&auml;tigen der Eingabetaste f&uuml;hrt dann zum Ausl&ouml;sen der Ereignisprozedur dieser Schaltfl&auml;che. Die Ereignisprozedur sieht wie folgt aus und erledigt nur einen Teil der Arbeit:<\/p>\n<pre>Private Sub cmdSuchen_Click()\r\n    Dim strSuchfilter As String\r\n    strSuchfilter = SuchfilterErstellen\r\n    If Len(strSuchfilter) &gt; 0 Then\r\n        frmDatasheet.Filter = strSuchfilter\r\n        frmDatasheet.FilterOn = True\r\n    Else\r\n        frmDatasheet.Filter = &quot;&quot;\r\n        frmDatasheet.FilterOn = False\r\n    End If\r\nEnd Sub<\/pre>\n<p>Sie &uuml;berl&auml;sst das Zusammenstellen des Filterkriteriums n&auml;mlich einer weiteren Funktion namens <b>SuchfilterErstellen<\/b>, die wir uns weiter unten anschauen. Diese liefert einen Ausdruck zur&uuml;ck, der beispielsweise so aussieht:<\/p>\n<pre>Artikelname LIKE ''Ch*''<\/pre>\n<p>Diesen braucht die Prozedur dann nur noch an die <b>Filter<\/b>-Eigenschaft des Unterformulars zu &uuml;bergeben und die Eigenschaft <b>FilterOn <\/b>auf <b>True <\/b>einzustellen &#8211; schon zeigt das Unterformular nur noch die passenden Datens&auml;tze an. Es kann nat&uuml;rlich auch sein, dass der Benutzer auf die <b>Suchen<\/b>-Schaltfl&auml;che klickt, obwohl er noch gar keine Suchkriterien eingegeben hat &#8211; in diesem Fall wird <b>Filter <\/b>mit einer leeren Zeichenkette gef&uuml;llt und <b>FilterOn <\/b>auf <b>False <\/b>einstellt. Das entscheidende Kriterium hierf&uuml;r ist, dass der Suchausdruck in <b>strSuchfilter <\/b>eine leere Zeichenkette enth&auml;lt.<\/p>\n<p><b>Suchstring zusammensetzen<\/b><\/p>\n<p>Kommen wir zur Funktion <b>SuchfilterErstellen<\/b>, die in Listing 1 abgebildet ist. Diese Funktion liest die Inhalte s&auml;mtlicher Steuerelemente des Suchformulars ein und f&uuml;gt aus denjenigen, f&uuml;r die die der Benutzer einen Wert eingegeben hat, eine SQL-Where-Bedingung zusammen. Dabei durchl&auml;uft die Funktion in einer <b>For Each<\/b>-Schleife alle Steuerelemente des Formulars (<b>Me.Controls<\/b>), wobei der Verweis auf das aktuelle Steuerelement jeweils in der Variablen <b>ctl <\/b>gespeichert wird. Eine <b>Select Case<\/b>-Bedingung sondiert zun&auml;chst, ob es sich bei dem Steuerelement um ein Textfeld oder ein Kombinationsfeld handelt; alle &uuml;brigen Steuerelementtypen bleiben unber&uuml;cksichtigt.<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Diese Routine erstellt aus den Suchkriterien eine SQL-Where-Bedingung.<\/p>\n<pre>Private Function SuchfilterErstellen() As String\r\n    Dim strFilter As String\r\n    Dim strFieldname As String\r\n    Dim ctl As Control\r\n    For Each ctl In Me.Controls\r\n        Select Case ctl.ControlType\r\n        Case acTextBox, acComboBox\r\n        strFieldname = Mid(ctl.Name, 4)\r\n        If ctl.ControlType = acTextBox Then\r\n            If Len(ctl.Value) &gt; 0 Then\r\n                strFilter = strFilter &amp; &quot; AND &quot; &amp; strFieldname &amp; &quot; LIKE ''&quot; _\r\n                &amp; Replace(ctl.Value, &quot;''&quot;, &quot;''''&quot;) &amp; &quot;''&quot;\r\n            End If\r\n        Else\r\n            If Not IsNull(ctl.Value) Then\r\n                Select Case Left(ctl.Name, 3)\r\n                Case &quot;cbo&quot;\r\n                strFilter = strFilter &amp; &quot; AND &quot; &amp; strFieldname &amp; &quot; = &quot; &amp; ctl.Value\r\n                Case &quot;txt&quot;\r\n                strFilter = strFilter &amp; &quot; AND &quot; &amp; strFieldname &amp; &quot; = ''&quot; _\r\n                &amp; Replace(ctl.Value, &quot;''&quot;, &quot;''''&quot;) &amp; &quot;''&quot;\r\n                Case &quot;chk&quot;\r\n                strFilter = strFilter &amp; &quot; AND &quot; &amp; strFieldname &amp; &quot; = &quot; &amp; ctl.Value\r\n                End Select\r\n            End If\r\n        End If\r\n        End Select\r\n    Next ctl\r\n    If Len(strFilter) &gt; 0 Then\r\n        SuchfilterErstellen = Mid(strFilter, 5)\r\n    End If\r\nEnd Function<\/pre>\n<p>Text- und Kombinationsfelder erfahren eine unterschiedliche Behandlung, und bei Kombinationsfeldern gibt es wiederum unterschiedliche Vorgehensweisen. Bei einem Textfeld ist klar, dass das zugrunde liegende Feld mit der im Textfeld angegebenen Zeichenkette verglichen werden soll, bei Kombinationsfeldern kann es sich um eines handeln, das nur die verschiedenen Werte eines Textfelds anbietet, um ein Nachschlagefeld oder um die Auswahl der potenziellen Werte eines <b>Ja\/Nein<\/b>-Feldes.<\/p>\n<p>Beim Textfeld pr&uuml;ft die Funktion, ob diese &uuml;berhaupt Text enth&auml;lt. Falls ja, f&uuml;gt es ein neues Kriterium zusammen, dass aus dem Feldnamen (der ja aus dem hinteren Teil des Steuerelementnamens abgeleitet wird), dem Vergleichsoperator <b>LIKE <\/b>und einer in Hochkommata eingefassten Zeichenkette besteht. Da auch der Inhalt des Textfeldes Hochkommata enthalten kann, werden diese verdoppelt. Aus einem Eintrag wie <b>Josef&#8220;s <\/b>wird dann <b>Josef&#8220;&#8220;s<\/b>. So interpretiert die Jet Engine das Hochkomma nicht f&auml;lschlicherweise als Ende des Vergleichswertes.<\/p>\n<p>Der so zusammengesetzte Vergleichsausdruck wird an die bisher in <b>strFilter <\/b>enthaltenen Ausdrucke angeh&auml;ngt und mit dem Schl&uuml;sselwort <b>AND<\/b> so verkn&uuml;pft, das nur solche Datens&auml;tze angezeigt werden, die alle Bedingungen erf&uuml;llen.<\/p>\n<p>Die Auswertung von Kombinationsfeldern ist etwas schwieriger. Hier untersucht die Funktion in einer weiteren <b>Select Case<\/b>-Anweisung die ersten drei Buchstaben des Steuerelementnamens, also das Pr&auml;fix:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>cbo <\/b>f&uuml;hrt zu einem einfachen Ausdruck aus dem Feldnamen, einem Gleichheitszeichen und dem Wert der gebunden (also unsichtbaren) Spalte des Kombinationsfeldes.<\/li>\n<li class=\"aufz-hlung\"><b>txt<\/b> arbeitet genauso wie bei einem reinen Textfeld, da das Kombinationsfeld letztlich nur als Eingabehilfe des Vergleichswertes dient.<\/li>\n<li class=\"aufz-hlung\"><b>ctl <\/b>stellt Feldnamen, Gleichheitszeichen und den Wert der gebundenen Spalte des Kombinationsfeldes zusammen (entweder <b>0 <\/b>oder <b>-1<\/b>).<\/li>\n<\/ul>\n<p>Nach dem Durchlaufen aller Steuerelemente des Suchformulars pr&uuml;ft die Funktion, ob in <b>strFilter <\/b>&uuml;berhaupt Vergleichsausdr&uuml;cke zusammengekommen sind.<\/p>\n<p>Falls ja, schneidet sie die ersten f&uuml;nf Zeichen ab: Immerhin wurden alle Vergleichsausdr&uuml;cke mit f&uuml;hrendem <b>AND <\/b>zusammengestellt, damit man nicht jedes Mal pr&uuml;fen muss, ob bereits ein Ausdruck enthalten ist. Mit diesem Ausdruck wird schlie&szlig;lich das Unterformular gefiltert.<\/p>\n<p><b>Suchkriterien leeren und alle anzeigen<\/b><\/p>\n<p>Ein Klick auf die Schaltfl&auml;che Leeren soll schlie&szlig;lich alle Suchfelder zur&uuml;cksetzen und dementsprechend wieder alle Datens&auml;tze im Unterformular anzeigen. Daf&uuml;r sorgt die folgende Ereignisprozedur:<\/p>\n<pre>Private Sub cmdFilterLeeren_Click()\r\n    Dim ctl As Control\r\n    For Each ctl In Me.Controls\r\n        Select Case ctl.ControlType\r\n        Case acTextBox, acComboBox\r\n        ctl.Value = Null\r\n        End Select\r\n    Next ctl\r\n    frmDatasheet.Filter = &quot;&quot;\r\n    frmDatasheet.FilterOn = False\r\nEnd Sub<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die L&ouml;sung k&ouml;nnen Sie f&uuml;r alle Formulare einsetzen, die im Unterformular Daten einer Tabelle oder Abfrage in der Datenblatt- oder Endlosansicht anzeigen. Neben den bereits genannten Regeln brauchen Sie nur daf&uuml;r zu sorgen, dass das Unterformularsteuerelement <b>sfm <\/b>hei&szlig;t.<\/p>\n<p>Im Suchformular legen Sie dann die Steuerelemente an, mit denen Sie die Datens&auml;tze des Unterformulars filtern. Diese benennen Sie entsprechend den erw&auml;hnten Konventionen (<b>txt<\/b>, <b>cbo <\/b>oder <b>chk <\/b>als Pr&auml;fix plus angeh&auml;ngtem Feldnamen).<\/p>\n<p>Noch sch&ouml;ner w&auml;re es nat&uuml;rlich, wenn man solche Formulare per Add-In anlegen k&ouml;nnte. In einem weiteren Beitrag namens <b>Suchformulare per Assistent <\/b>(<b>www.access-im-unternehmen.de\/****<\/b>) stellen wir ein solches Add-In vor.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Suchformular.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{32C23016-288A-47E8-AE98-26A4E76F2202}\/aiu_724.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Access liefert zwar eine hilfreiche Suchfunktion, mit der Sie die in der Datenblattansicht angezeigte Daten sortieren oder filtern k&ouml;nnen, aber wirklich &uuml;bersichtlich und intuitiv ist diese nicht. Also legen wir selbst Hand an und bauen uns ein eigenes Suchformular, dass die verschiedenen Steuerelementtypen der Datenblattansicht ber&uuml;cksichtig und dieses gleich entsprechend der definierten Suche filtert.<\/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,66032010,44000023],"tags":[],"class_list":["post-55000724","post","type-post","status-publish","format-standard","hentry","category-662010","category-66032010","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>Suchformular f&uuml;r die Datenblattansicht - 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\/Suchformular_fuer_die_Datenblattansicht\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Suchformular f&uuml;r die Datenblattansicht\" \/>\n<meta property=\"og:description\" content=\"Access liefert zwar eine hilfreiche Suchfunktion, mit der Sie die in der Datenblattansicht angezeigte Daten sortieren oder filtern k&ouml;nnen, aber wirklich &uuml;bersichtlich und intuitiv ist diese nicht. Also legen wir selbst Hand an und bauen uns ein eigenes Suchformular, dass die verschiedenen Steuerelementtypen der Datenblattansicht ber&uuml;cksichtig und dieses gleich entsprechend der definierten Suche filtert.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:13:22+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd\" \/>\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=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Suchformular f&uuml;r die Datenblattansicht\",\"datePublished\":\"2020-05-22T22:13:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/\"},\"wordCount\":2553,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/f90be499d61b49b8b5282c0e2f4922bd\",\"articleSection\":[\"2010\",\"3\\\/2010\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/\",\"name\":\"Suchformular f&uuml;r die Datenblattansicht - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/f90be499d61b49b8b5282c0e2f4922bd\",\"datePublished\":\"2020-05-22T22:13:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/f90be499d61b49b8b5282c0e2f4922bd\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/f90be499d61b49b8b5282c0e2f4922bd\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Suchformular_fuer_die_Datenblattansicht\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Suchformular f&uuml;r die Datenblattansicht\"}]},{\"@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":"Suchformular f&uuml;r die Datenblattansicht - 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\/Suchformular_fuer_die_Datenblattansicht\/","og_locale":"de_DE","og_type":"article","og_title":"Suchformular f&uuml;r die Datenblattansicht","og_description":"Access liefert zwar eine hilfreiche Suchfunktion, mit der Sie die in der Datenblattansicht angezeigte Daten sortieren oder filtern k&ouml;nnen, aber wirklich &uuml;bersichtlich und intuitiv ist diese nicht. Also legen wir selbst Hand an und bauen uns ein eigenes Suchformular, dass die verschiedenen Steuerelementtypen der Datenblattansicht ber&uuml;cksichtig und dieses gleich entsprechend der definierten Suche filtert.","og_url":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:13:22+00:00","og_image":[{"url":"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Suchformular f&uuml;r die Datenblattansicht","datePublished":"2020-05-22T22:13:22+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/"},"wordCount":2553,"commentCount":2,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd","articleSection":["2010","3\/2010","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/","url":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/","name":"Suchformular f&uuml;r die Datenblattansicht - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd","datePublished":"2020-05-22T22:13:22+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/f90be499d61b49b8b5282c0e2f4922bd"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Suchformular_fuer_die_Datenblattansicht\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Suchformular f&uuml;r die Datenblattansicht"}]},{"@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\/55000724","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=55000724"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000724\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}