{"id":55000476,"date":"2007-08-01T00:00:00","date_gmt":"2021-02-11T21:17:16","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=476"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Kombinationsfelder_mit_Suchfunktion","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/","title":{"rendered":"Kombinationsfelder mit Suchfunktion"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Kombinationsfelder zeigen normalerweise nur den Inhalt eines Feldes an. An der mangelnden Flexibilit&auml;t dieses Steuerelements liegt das nicht: Nat&uuml;rlich k&ouml;nnen Sie auch den Inhalt mehrerer Felder gleichzeitig anzeigen und mit ein wenig Fantasie oder der Lekt&uuml;re dieses Beitrags erweitern Sie das Kombinationsfeld gleichzeitig zum Suchfeld.<\/b><\/p>\n<\/p><\/div>\n<div class=\"story\">\n<p>Sinnvolle Beispiele f&uuml;r die Anzeige gleich mehrerer Felder in einem Kombinationsfeld gibt es viele: Das Formular <b>frmBuchungen <\/b>der L&ouml;sung <b>Kassenbuch <\/b>aus dem gleichnamigen Artikel (s. Shortlink 486) liefert beispielsweise gleich mehrere Einsatzm&ouml;glichkeiten. So k&ouml;nnen Sie dort mit einem Kombinationsfeld schnell nach einem bestimmten Buchungsdatensatz suchen, aber auch Buchungskonten mit einem flexiblen Kombinationfeld ausw&auml;hlen.<\/p>\n<p>Ersteres beschreibt dieser Beitrag im Detail: Sie erfahren, wie Sie das Kombinationsfeld dazu bringen, den Inhalt mehr als eines Feldes gleichzeitig anzuzeigen, und wie Sie dar&uuml;ber hinaus auch noch in den Inhalten der beiden Felder suchen k&ouml;nnen. Das Formular soll dann den ausgew&auml;hlten Buchungsdatensatz anzeigen.<\/p>\n<p>Erstmal soll das Kombinationsfeld namens <b>cboGeheZuBeleg<\/b> aber die gew&uuml;nschten Daten beim &#8222;normalen&#8220; Aufklappen liefern &#8211; etwa so wie in Bild 1, wo es die Buchungsnummer und den Buchungstext gleichzeitig anzeigt.<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/Kombinationsfelder_3-web-images\/abb001_opt.jpeg\" alt=\"abb001.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Anzeige des Inhalts zweier Felder beim Aufklappen der Kombinationsfeldeintr&auml;ge<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Das ist an sich noch keine gro&szlig;e Kunst. Sie stellen einfach die Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>auf <b>2 <\/b>beziehungsweise <b>0cm <\/b>sowie die Datensatzherkunft des Kombinationsfeldes auf den folgenden Wert ein:<\/p>\n<pre>SELECT tblBuchungen.BuchungID, [Belegnummer] <br \/>&amp; ' ' &amp; [Buchungstext] AS Buchung <br \/>FROM tblBuchungen<\/pre>\n<p>Diese SQL-Anweisung setzt die beiden Felder der Tabelle <b>tblBuchungen<\/b>, die &uuml;brigens wie in Bild 2 aussieht, zu einer per Leerzeichen getrennten Zeichenkette zusammen.<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/Kombinationsfelder_3-web-images\/abb002_opt.jpeg\" alt=\"abb002.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Diese Tabelle liefert die Daten f&uuml;r das Kombinationsfeld zum Ausw&auml;hlen des aktuellen Buchungsdatensatzes.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Die Ereignisprozedur aus Listing 1 nimmt den einfacheren Teil der Programmierung des Kombinationsfeldes vorneweg. Die erste Anweisung sorgt f&uuml;r die Anzeige des Datensatzes mit der in der gebundenen Spalte des Kombinationsfeldes enthaltenen Buchungs-ID.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 1: Nach dem Aktualisieren des Kombinationsfeldes soll das Formular den passenden Datensatz anzeigen.<\/p>\n<pre>Private Sub cboGeheZuBeleg_AfterUpdate()<\/pre>\n<pre>     Me.Recordset.FindFirst \"BuchungID = \" &amp; Me.cboGeheZuBeleg<\/pre>\n<pre>     Me.cboGeheZuBeleg.RowSource = \"SELECT BuchungID, Belegnummer &amp; '' '' &amp; Buchungstext \" _<br \/> \"FROM tblBuchungen\"<\/pre>\n<pre>     Me.cboGeheZuBeleg = Null<\/pre>\n<pre>     bolUpdatedGeheZuBeleg = True<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p>Die zweite stellt die <b>RowSource<\/b>-Eigenschaft, die der <b>Datensatzherkunft<\/b>-Eigenschaft im Eigenschaftsfenster entspricht, wieder auf den urspr&uuml;nglichen Wert ein. Warum dies geschieht, erfahren Sie weiter unten. Au&szlig;erdem leert die Routine noch das Kombinationsfeld und setzt eine Variable, deren Funktion Sie ebenfalls sp&auml;ter kennen lernen, auf den Wert <b>True<\/b>.<\/p>\n<p><b>Nicht automatisch erg&auml;nzen<\/b><\/p>\n<p>Die Eigenschaft <b>Automatisch erg&auml;nzen <\/b>des Kombinationsfeldes sorgt daf&uuml;r, dass dieses direkt den n&auml;chsten in der Liste enthaltenen Datensatz anzeigt, der mit der aktuell eingegebenen Zeichenfolge &uuml;bereinstimmt. Was an sich eine Hilfe ist, wirkt sich hier eher hinderlich aus, wie Sie gleich erfahren werden.<\/p>\n<p>Das Kombinationsfeld soll bei der Suche nach Zeichenketten innerhalb der angezeigten Eintr&auml;ge helfen, indem es die angezeigten Eintr&auml;ge dem aktuellen Inhalt des Kombinationsfeldes entsprechend einschr&auml;nkt.<\/p>\n<p>Sinnvollerweise soll es nach der Eingabe des ersten Zeichens auch noch aufklappen, sodass der Benutzer sieht, welche Eintr&auml;ge in Frage kommen.<\/p>\n<p>Das passende Ereignis hei&szlig;t <b>Bei &auml;nderung <\/b>&#8211; es reagiert auf die Eingabe jedes einzelnen Zeichens. Die Routine aus Listing 2 setzt die obigen Ideen um, indem sie zun&auml;chst die Eigenschaft <b>RowSource <\/b>auf einen SQL-Ausdruck einstellt, der die Datensatzherkunft auf alle Datens&auml;tze der Tabelle <b>tblBuchungen <\/b>reduziert, deren Feld <b>Belegnummer <\/b>mit dem eingegebenen Text beginnt oder dessen Buchungstext den eingegebenen Text enth&auml;lt. Anschlie&szlig;end klappt sie das Kombinationsfeld mit der <b>DropDown<\/b>-Methode auf.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 2: Diese Routine sorgt beim &auml;ndern des Kombinationsfeld-Textes f&uuml;r die Aktualisierung der Elemente der Datensatzherkunft.<\/p>\n<pre>Private Sub cboGeheZuBuchung_Change()<\/pre>\n<pre>     Dim strSQL As String<\/pre>\n<pre>     strSQL = \"SELECT BuchungID, Belegnummer &amp; '' '' &amp; Buchungstext FROM tblBuchungen \" _<br \/> \"WHERE Belegnummer LIKE ''\" &amp; Me!cboGeheZuBuchung.Text &amp; \"*' OR Buchungstext LIKE ''*\" _<br \/> &amp; Me!cboGeheZuBuchung.Text &amp; \"*'\"<\/pre>\n<pre>     Me!cboGeheZuBuchung.RowSource = strSQL<\/pre>\n<pre>     Me!cboGeheZuBuchung.Dropdown<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p>Interessanterweise funktioniert dies aber nicht wie gew&uuml;nscht: Die Eingabe der Zahl 1 beispielsweise zeigt nur einen Datensatz an, obwohl es in den Beispieldaten mehr als einen Datensatz gibt, dessen Belegnummer mit dieser Zahl beginnt.<\/p>\n<p>Der Grund ist ganz einfach: Die Eigenschaft <b>Automatisch erg&auml;nzen <\/b>sorgt daf&uuml;r, dass das Kombinationsfeld direkt den ersten zur Zahl passenden Eintrag anzeigt (siehe Bild 3). Die SQL-Anweisung kann dazu nat&uuml;rlich nur einen Datensatz finden &#8211; n&auml;mlich den, der mit dem durch die automatische Erg&auml;nzung im Kombinationsfeld angezeigten Text &uuml;bereinstimmt.<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/Kombinationsfelder_3-web-images\/abb003_opt.jpeg\" alt=\"abb003.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Die Eigenschaft Automatisch erg&auml;nzen sorgt daf&uuml;r, dass Access direkt bei der Eingabe den n&auml;chsten passenden Wert anzeigt..<\/span><\/b><\/p>\n<\/p><\/div>\n<p><!--30percent--><\/p>\n<p>Bei der Eingabe eines Textes, der in einem der Buchungstexte enthalten ist, funktioniert es hingegen: Das ist aber auch nicht verwunderlich, da die automatische Erg&auml;nzung hier nicht anschl&auml;gt.<\/p>\n<p>F&uuml;r die dem SQL-Ausdruck entsprechende Anzeige der enthaltenen Elemente deaktivieren Sie das automatische Erg&auml;nzen also einfach.<\/p>\n<p>Bei der Eingabe eines Ausdrucks, der mit einer der Belegnummern &uuml;bereinstimmt, markiert Access direkt den passenden Eintrag im aufgeklappten Kombinationsfeld (siehe Bild 4). Geben Sie hingegen einen Ausdruck ein, zeigt das Kombinationsfeld zwar alle passenden Elemente in der ausgeklappten Liste an, aber markiert nicht den ersten Eintrag.<\/p>\n<div class=\"abbildungrahmen\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/Kombinationsfelder_3-web-images\/abb004_opt.jpeg\" alt=\"abb004.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Beim Eingeben eines Ausdrucks, der mit dem Beginn der Listeneintr&auml;ge &uuml;bereinstimmt, wird das erste passende Element markiert.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Der wesentliche Unterschied ist, dass im ersten Fall das Abschlie&szlig;en der Eingabe mit der Eingabetaste oder anderweitiges Verlassen des Kombinationsfeldes den aktuell markierten Eintrag ausw&auml;hlt, das Ereignis <b>Nach Aktualisierung<\/b> ausl&ouml;st und wie oben beschrieben die passende Buchung im Formular anzeigt.<\/p>\n<p>Beginnt keiner der Listeneintr&auml;ge mit dem Suchbegriff, wird auch kein Eintrag markiert und ein Verlassen des Kombinationsfeldes f&uuml;hrt dazu, dass Access versucht, den aktuell eingegebenen Suchbegriff aus den angezeigten Elementen auszuw&auml;hlen. Dies f&uuml;hrt zu einem Fehler, da der passende Eintrag schlicht nicht existiert (&#8222;Der von Ihnen eingegebene Text ist kein Element der Liste&#8220;).<\/p>\n<p><b>Ein Fall f&uuml;r die Fehlerbehandlung<\/b><\/p>\n<p>Ein Fehler im Formular Eine gute Gelegenheit, ein Beispiel f&uuml;r das Ereignis <b>Bei Fehler <\/b>zu liefern!<\/p>\n<p>Legen Sie also eine Prozedur f&uuml;r die passende Ereigniseigenschaft an und best&uuml;cken Sie diese zun&auml;chst nur mit der folgenden Zeile, um die Nummer des hier auftauchenden Fehlers herauszufinden:<\/p>\n<pre>Debug.Print DataErr<\/pre>\n<p>Der Fehler taucht wie erwartet auf, aber zus&auml;tzlich gibt das Direktfenster die Fehlernummer aus &#8211; in diesem Fall die Nummer 2237. Damit k&ouml;nnen Sie zun&auml;chst eine Bedingung in der <b>Bei Fehler<\/b>-Ereignisprozedur unterbringen, die nur beim Auftreten des Fehlers 2237 die passenden Anweisungen ausf&uuml;hrt.<\/p>\n<p>Die passende Routine aus Listing 3 pr&uuml;ft neben der Fehlernummer auch noch den Namen des betroffenen Steuerelements &#8211; immerhin k&ouml;nnen ja auch verschiedene Steuerelemente diesen Fehler ausl&ouml;sen. H&ouml;rt das Steuerelement auf den Namen <b>cboGeheZuBeleg<\/b>, passiert Folgendes:<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 3: Ausw&auml;hlen des ersten Datensatzes der aktuellen Datensatzherkunft und Einstellen des Formulars auf die passende Buchung<\/p>\n<pre>Private Sub Form_Error(DataErr As Integer, Response As Integer)<\/pre>\n<pre>     Dim strSQL As String<\/pre>\n<pre>     Dim lngBuchung As Long<\/pre>\n<pre>     Select Case DataErr<\/pre>\n<pre>         Case 2237<\/pre>\n<pre>             Select Case Me.ActiveControl.Name<\/pre>\n<pre>                 Case \"cboGeheZuBeleg\"<\/pre>\n<pre>                     Me.ActiveControl.Undo<\/pre>\n<pre>                     strSQL = Me.ActiveControl.RowSource<\/pre>\n<pre>                     lngBuchung = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset).Fields(\"BuchungID\")<\/pre>\n<pre>                     Me.ActiveControl = lngBuchung<\/pre>\n<pre>                     Response = acDataErrContinue<\/pre>\n<pre>                     cboGeheZuBeleg_AfterUpdate<\/pre>\n<pre>             End Select<\/pre>\n<pre>     End Select<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<ul>\n<li class=\"aufz-hlung\">Das Kombinationsfeld wird mit der <b>Undo<\/b>-Methode auf den Ausgangszustand zur&uuml;ckversetzt.<\/li>\n<li class=\"aufz-hlung\">Die Variable <b>strSQL <\/b>speichert die aktuelle Datensatzherkunft des Kombinationsfeldes.<\/li>\n<li class=\"aufz-hlung\">Eine weitere Variable namens <b>lngBuchung <\/b>nimmt den Prim&auml;rschl&uuml;sselwert der Tabelle <b>tblBuchungen <\/b>f&uuml;r den ersten Datensatz der in <b>strSQL <\/b>gespeicherten Abfrage auf.<\/li>\n<li class=\"aufz-hlung\">Das Kombinationsfeld erh&auml;lt den oben bestimmten Datensatz als Wert.<\/li>\n<li class=\"aufz-hlung\">Die Fehlermeldung wird unterbunden.<\/li>\n<li class=\"aufz-hlung\">Die <b>Nach Aktualisieren<\/b>-Ereignisprozedur wird aufgerufen, damit das Formular den im Kombinationsfeld ausgew&auml;hlten Beleg anzeigt.<\/li>\n<\/ul>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Fehlerbehandlung in der Fehlerbehandlung<\/p>\n<p>Es kann passieren, dass der Benutzer einen Ausdruck in das Kombinationsfeld eingibt, der keine passenden Elemente liefert. Schlie&szlig;t der Benutzer die Eingabe nun ab, tritt in der Routine aus Listing 3 ein Fehler in der Zeile auf, die den Wert des Feldes <b>BuchungID <\/b>des ersten Elements des Listenfeldes ermitteln soll.<\/p>\n<p>Der Grund ist, dass schlicht kein passender Datensatz vorhanden ist. Diesen Fehler umgehen Sie, indem Sie den Teil der Routine aus Listing 3 innerhalb der <b>Case<\/b>-Bedingung durch folgende Zeilen ersetzen:<\/p>\n<pre>Me.ActiveControl.Undo<\/pre>\n<pre>strSQL = Me.ActiveControl.RowSource<\/pre>\n<pre>On Error Resume Next<\/pre>\n<pre>lngBuchung = CurrentDb.OpenRecordset(strSQL, _<br \/> dbOpenDynaset).Fields(\"BuchungID\")<\/pre>\n<pre>If Err.Number = 0 Then<\/pre>\n<pre>     Me.ActiveControl = lngBuchung<\/pre>\n<pre>     cboGeheZuBeleg_AfterUpdate<\/pre>\n<pre>End If<\/pre>\n<pre>Response = acDataErrContinue<\/pre>\n<pre>On Error GoTo 0<\/pre>\n<p><b>Feinauswahl<\/b><\/p>\n<p>Sofern Sie direkt mit dem eingegebenen Suchbegriff das passende Konto als ersten Eintrag der Liste vorfinden, funktioniert alles pr&auml;chtig &#8211; aber Wehe, Sie wollen aus einer Reihe ausgew&auml;hlter Eintr&auml;ge den passenden mit den Cursor-Tasten oder mit der Maus ausw&auml;hlen. Wenn Sie beispielsweise mit der Cursor-Taste nach unten scrollen, tritt der Effekt auf, den Sie bereits vom automatischen Erg&auml;nzen kennen: Der n&auml;chste erreichbare Eintrag wird in das Kombinationsfeld geschrieben und &#8211; da damit nun ein neues Suchkriterium vorhanden ist &#8211; die Datensatzherkunft arg reduziert. Das liegt daran, dass Access das <b>Beim &auml;ndern<\/b>-Ereignis auch ausl&ouml;st, wenn der Benutzer innerhalb des Kombinationsfeldes auf die Cursor-Up- und Cursor-Down-Tasten klickt. Allerdings aktualisiert Access zun&auml;chst den Kombinationsfeldinhalt mit dem per Cursor-Taste ausgew&auml;hlten Eintrag und ruft dann die <b>Beim &auml;ndern<\/b>-Ereignisprozedur auf.<\/p>\n<p>Also m&uuml;ssen Sie auf irgendeine Weise daf&uuml;r sorgen, dass diese Routine nicht beim Bet&auml;tigen der Cursor-Up- und Cursor-Down-Taste ausgel&ouml;st wird. Dazu verwenden Sie die weiter oben erw&auml;hnte Variable <b>bolChangeGeheZuBeleg<\/b>. Sie soll den Wert <b>False <\/b>aufweisen, wenn der Benutzer eine der beiden relevanten Cursor-Tasten gedr&uuml;ckt hat. Also legen Sie eine Routine f&uuml;r das Ereignis <b>Bei Taste ab <\/b>an, die <b>bolChangeGeheZuBeleg <\/b>auf den passenden Wert einstellt (s. Listing 4).<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 4: Deaktivieren des Change-Ereignisses beim Bet&auml;tigen der Cursor-Tasten<\/p>\n<pre>Private Sub cboGeheZuBuchung_KeyDown(KeyCode As Integer, Shift As Integer)<\/pre>\n<pre>     Select Case KeyCode<\/pre>\n<pre>         Case 38, 40<\/pre>\n<pre>             bolChangeGeheZuBuchung = False<\/pre>\n<pre>     End Select<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p>In der ge&auml;nderten <b>Beim &auml;ndern<\/b>-Ereignisprozedur fragen Sie den Wert der Variablen <b>bolChangeGeheZuBuchung <\/b>ab und stellen entweder die Variable wieder auf den Wert <b>True <\/b>ein oder f&uuml;hren einfach die &uuml;bliche Aktualisierung und Anzeige der gefundenen Elemente aus (s. Listing 5).<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 5: Aktualisierung der Datensatzherkunft und Aufklappen des Kombinationsfeldes in Abh&auml;ngigkeit vom eingegebenen Zeichen<\/p>\n<pre>Private Sub cboGeheZuBuchung_Change()<\/pre>\n<pre>     Dim strSQL<\/pre>\n<pre>     If bolChangeGeheZuBuchung = False Then<\/pre>\n<pre>         bolChangeGeheZuBuchung = True<\/pre>\n<pre>     Else<\/pre>\n<pre>         strSQL = \"SELECT BuchungID, Belegnummer &amp; '' '' &amp; Buchungstext FROM tblBuchungen \" _<br \/> \"WHERE Belegnummer LIKE ''\" &amp; Me!cboGeheZuBuchung.Text &amp; \"*' OR Buchungstext LIKE ''*\" _<br \/> &amp; Me!cboGeheZuBuchung.Text &amp; \"*'\"<\/pre>\n<pre>         Me!cboGeheZuBuchung.RowSource = strSQL<\/pre>\n<pre>         Me!cboGeheZuBuchung.Dropdown<\/pre>\n<pre>     End If<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p><b>Hier kommt die Maus<\/b><\/p>\n<p>Fehlt nur noch ein Fall: Wenn der Benutzer durch die Eingabe einer Zeichenkette das Anpassen der Datensatzherkunft und das Aufklappen des Kombinationsfeldes bewirkt hat und dann mit der Maus auf einen der Eintr&auml;ge klickt, l&ouml;st dies einen Fehler in der Ereignisprozedur <b>Bei &auml;nderung <\/b>aus &#8211; und zwar in der Zeile, mit der die Routine die Eigenschaft <b>Text<\/b> des Kombinationsfeldes ausliest. Auf diese k&ouml;nnen Sie n&auml;mlich nur zugreifen, wenn das Steuerelement den Fokus hat, was hier nicht der Fall ist. Das Ausw&auml;hlen eines Eintrags des Kombinationsfeldes mit der Maus l&ouml;st n&auml;mlich ohne Umwege das Ereignis <b>Nach Aktualisierung <\/b>aus, wodurch Access den Fokus auf den im Formular angezeigten Buchungsdatensatz verschiebt. Erst anschlie&szlig;end kommt das <b>Bei &auml;nderung<\/b>-Ereignis zum Tragen und st&ouml;&szlig;t auf das nicht mehr im Fokus befindliche Kombinationsfeld. Dies &auml;ndern Sie ganz einfach, indem Sie den <b>Else<\/b>-Teil der Ereignisprozedur <b>cboGeheZuBuchung_Change <\/b>durch die folgenden Zeilen ersetzen:<\/p>\n<pre>If Me.ActiveControl.Name = \"cboGeheZuBuchung\" _<br \/> Then<\/pre>\n<pre>     strSQL = \"SELECT BuchungID, ...\"<\/pre>\n<pre>     Me!cboGeheZuBuchung.RowSource = strSQL<\/pre>\n<pre>     Me!cboGeheZuBuchung.Dropdown<\/pre>\n<pre>Else<\/pre>\n<pre>     Me.cboGeheZuBuchung.Undo<\/pre>\n<pre>End If<\/pre>\n<p>Fertig! Das Kombinationsfeld arbeitet nun stabil und hilft bei der schnellen Auswahl des gew&uuml;nschten Buchungsdatensatzes.<\/p>\n<p><b>Tipps zum Eigenbau<\/b><\/p>\n<p>Wenn Sie ein eigenes Formular mit einem Kombinationsfeld mit den hier beschriebenen Funktionen ausstatten wollen, brauchen Sie zusammengefasst Folgendes:<\/p>\n<ul>\n<li class=\"aufz-hlung\">ein ungebundenes Kombinationsfeld mit einer passend zusammengefassten Datensatzherkunft und der Einstellung <b>Nein <\/b>f&uuml;r die Eigenschaft <b>Automatisch erg&auml;nzen<\/b>,<\/li>\n<li class=\"aufz-hlung\">die beschriebenen drei Prozeduren, die durch die Ereignisse <b>Bei &auml;nderung<\/b>, <b>Nach Aktualisierung <\/b>und <b>Bei Taste ab <\/b>ausgel&ouml;st werden, sowie<\/li>\n<li class=\"aufz-hlung\">eine modulweit g&uuml;ltige Variable, die angibt, ob eine &auml;nderung des Kombinationsfeldtextes durch die Eingabe von Zeichen oder das Bet&auml;tigen der Cursor-Tasten hervorgerufen wurde.<\/li>\n<\/ul>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die hier vorgestellte Technik zum Erweitern eines Kombinationsfeldes um zus&auml;tzliche Suchfunktionen in einem oder mehreren Feldern ist in vielen F&auml;llen hilfreich &#8211; selbst wenn Sie nur in einem einzelnen Feld suchen m&ouml;chten. Weitere Beispiele w&auml;ren Kundennummern und die Namen der Kunden oder Artikelnummern und die passenden Artikel.<\/p>\n<p>Nat&uuml;rlich k&ouml;nnen Sie auch gebundene Kombinationsfelder mit der Suchfunktion ausstatten. Hier f&auml;llt dann im Ereignis <b>Nach Aktualisierung <\/b>das Ausw&auml;hlen des gesuchten Datensatzes im Formular sowie das Leeren des Kombinationfeldes weg.<\/p>\n<p>Beispiele daf&uuml;r finden Sie im gleichen Formular in Form der Kombinationsfelder zur Auswahl der Buchungskonten.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Kombinationsfelder.accdb<\/p>\n<p>Kombinationsfelder.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/470B165A-4B57-4D97-9B0F-2C97980212E9\/aiu_476.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kombinationsfelder zeigen normalerweise nur den Inhalt eines Feldes an. An der mangelnden Flexibilit&auml;t dieses Steuerelements liegt das nicht: Nat&uuml;rlich k&ouml;nnen Sie auch den Inhalt mehrerer Felder gleichzeitig anzeigen und mit ein wenig Fantasie oder der Lekt&uuml;re dieses Beitrags erweitern Sie das Kombinationsfeld gleichzeitig zum Suchfeld.<\/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":[662007,66042007,44000036,44000023],"tags":[],"class_list":["post-55000476","post","type-post","status-publish","format-standard","hentry","category-662007","category-66042007","category-Daten_suchen_sortieren_gruppieren","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>Kombinationsfelder mit Suchfunktion - 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\/Kombinationsfelder_mit_Suchfunktion\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kombinationsfelder mit Suchfunktion\" \/>\n<meta property=\"og:description\" content=\"Kombinationsfelder zeigen normalerweise nur den Inhalt eines Feldes an. An der mangelnden Flexibilit&auml;t dieses Steuerelements liegt das nicht: Nat&uuml;rlich k&ouml;nnen Sie auch den Inhalt mehrerer Felder gleichzeitig anzeigen und mit ein wenig Fantasie oder der Lekt&uuml;re dieses Beitrags erweitern Sie das Kombinationsfeld gleichzeitig zum Suchfeld.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:17:16+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0\" \/>\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\\\/Kombinationsfelder_mit_Suchfunktion\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Kombinationsfelder mit Suchfunktion\",\"datePublished\":\"2021-02-11T21:17:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/\"},\"wordCount\":1964,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/54b59f320a864d4f8e7f63396560d2f0\",\"articleSection\":[\"2007\",\"4\\\/2007\",\"Daten suchen, sortieren, gruppieren\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/\",\"name\":\"Kombinationsfelder mit Suchfunktion - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/54b59f320a864d4f8e7f63396560d2f0\",\"datePublished\":\"2021-02-11T21:17:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/54b59f320a864d4f8e7f63396560d2f0\",\"contentUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/54b59f320a864d4f8e7f63396560d2f0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kombinationsfelder_mit_Suchfunktion\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kombinationsfelder mit Suchfunktion\"}]},{\"@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":"Kombinationsfelder mit Suchfunktion - 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\/Kombinationsfelder_mit_Suchfunktion\/","og_locale":"de_DE","og_type":"article","og_title":"Kombinationsfelder mit Suchfunktion","og_description":"Kombinationsfelder zeigen normalerweise nur den Inhalt eines Feldes an. An der mangelnden Flexibilit&auml;t dieses Steuerelements liegt das nicht: Nat&uuml;rlich k&ouml;nnen Sie auch den Inhalt mehrerer Felder gleichzeitig anzeigen und mit ein wenig Fantasie oder der Lekt&uuml;re dieses Beitrags erweitern Sie das Kombinationsfeld gleichzeitig zum Suchfeld.","og_url":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:17:16+00:00","og_image":[{"url":"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0","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\/Kombinationsfelder_mit_Suchfunktion\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Kombinationsfelder mit Suchfunktion","datePublished":"2021-02-11T21:17:16+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/"},"wordCount":1964,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0","articleSection":["2007","4\/2007","Daten suchen, sortieren, gruppieren","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/","url":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/","name":"Kombinationsfelder mit Suchfunktion - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0","datePublished":"2021-02-11T21:17:16+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#primaryimage","url":"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0","contentUrl":"http:\/\/vg04.met.vgwort.de\/na\/54b59f320a864d4f8e7f63396560d2f0"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Kombinationsfelder_mit_Suchfunktion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Kombinationsfelder mit Suchfunktion"}]},{"@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\/55000476","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=55000476"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000476\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}