{"id":55000518,"date":"2007-12-01T00:00:00","date_gmt":"2021-02-11T21:18:41","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=518"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"KombinationsfeldNachbau_mit_Pepp","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/","title":{"rendered":"Kombinationsfeld-Nachbau mit Pepp"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Kombinationsfelder spielen eine wichtige Rolle bei der Dateneingabe in Formularen. Auch wenn sie mit zahlreichen Eigenschaften und Programmierm&ouml;glichkeiten ausgestattet sind, gibt es immer wieder F&auml;lle, in denen man sich eine ausgefeiltere Bedienung oder eine andere Optik w&uuml;nscht. Einige &auml;nderungsm&ouml;glichkeiten finden Sie in diesem Beitrag.<\/b><\/p>\n<\/div>\n<div class=\"story\">\n<p>Neben Textfeldern sind Kombinationsfelder wohl das zweitwichtigste Steuerelement in Formularen. Dennoch hapert es manchmal &#8211; der eine m&ouml;chte gern Eintr&auml;ge mit den Pfeiltasten ausw&auml;hlen (siehe auch Beitrag <b>Eingabe in Text- und Kombinationsfelder vereinfachen<\/b>, Shortlink 516), der andere ist mit dem Erscheinungsbild nicht ganz zufrieden. Au&szlig;er der M&ouml;glichkeit, mehrere Spalten in der Liste einzublenden, beschr&auml;nken sich Formatierungen auf die Schrift. Funktionell bieten Kombinationsfelder zwar eine automatische Worterg&auml;nzung, eine Filterung der Liste ist aber nicht oder nur umst&auml;ndlich m&ouml;glich. Dieser Beitrag soll zeigen, wie Sie mehr erreichen k&ouml;nnen: Basteln Sie sich Kombinationsfelder einfach selbst!<\/p>\n<p><b>Wo ist das Problem<\/b><\/p>\n<p>Was soll Kombinationsfeldern, wie Access sie mitbringt, denn fehlen, k&ouml;nnten Sie fragen. Nichts, w&uuml;rde ich Ihnen antworten, solange sie nur einfache Listen mit einer m&auml;&szlig;igen Zahl an Eintr&auml;gen beherbergen. Sobald jedoch unter Hunderten oder Tausenden von Eintr&auml;gen ausgew&auml;hlt werden soll, kann dies zu einer Tipp- und Scroll-Arie ausarten. Wenn au&szlig;erdem zu den einzelnen Eintr&auml;gen genauere Informationen ben&ouml;tigt werden, helfen zus&auml;tzliche Spalten nur bedingt weiter. <br \/>Einige Beispiele daf&uuml;r, was Kombinationsfelder unter Access nicht k&ouml;nnen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Keine unterschiedlichen Schriftarten f&uuml;r die Spalten<\/li>\n<li class=\"aufz-hlung\">Keine farbliche Unterscheidung der Zeilen (alternierender Hintergrund)<\/li>\n<li class=\"aufz-hlung\">Keine Symbole oder Icons f&uuml;r die Eintr&auml;ge<\/li>\n<li class=\"aufz-hlung\">Keine Filterung der Liste<\/li>\n<li class=\"aufz-hlung\">Keine Filterung nach Teil des Feldinhalts (die automatische Begriffserg&auml;nzung ber&uuml;cksichtigt nur den Wortanfang, also <b>Like &quot;Begriff*&#8220;<\/b>, und nicht <b>Like &quot;*Begriff *&#8220;<\/b>).<\/li>\n<\/ul>\n<p>Ein anderer Punkt ist der Ressourcenbedarf von Kombinationsfeldern. Jedes Kombinationsfeld hat ein eigenes Recordset als Basis, das unter Umst&auml;nden mehrmals abgefragt oder aufgebaut wird. Jedes Recordset stellt im Prinzip jeweils eine komplette Tabelle dar. F&uuml;r ein Formular mit zahlreichen Kombinationsfeldern, die vielleicht noch auf mehrere Registerkarten verteilt sind, steigt die Rechenleistung beim F&uuml;llen meist deutlich und auch Speicher und Netzwerktraffic sind betroffen. Ein gebundenes Kombinationsfeld ist im Grunde vergleichbar mit einem Unterformular. Dieser Umstand f&uuml;hrt dazu, dass Access Formulare mit Kombinationsfeldern langsam l&auml;dt und die Belastung auf das Backend erh&ouml;ht wird. <br \/>Wenn Sie nicht auf Kombinationsfelder verzichten k&ouml;nnen oder wollen, etwa, weil dem Kunden eine kompakte Oberfl&auml;che vorschwebt, dann sollten Sie eine ungebundene Version im Eigenbau in Betracht ziehen, um die Belastung des Systems zu verringern.<\/p>\n<p><b>Wie baue ich ein Kombinationsfeld<\/b><\/p>\n<p>Technisch gesehen ist ein Kombinationsfeld unter Windows die Ableitung eines Textfeldes. Dem Textfeld wird zus&auml;tzlich ein Kn&ouml;pfchen spendiert. Ein Klick auf den Button erzeugt dann ein Listbox-Fenster. Auf die gleiche Weise k&ouml;nnte man bei dem geplanten Nachbau eines Kombinationsfeldes verfahren und drei Elemente kombinieren: Dazu m&uuml;ssen Sie ein Textfeld, eine Schaltfl&auml;che mit Bild und ein Listensteuerelement im Formular platzieren und diese programmtechnisch verbinden. Ein solches Pseudokombinationsfeld h&auml;tte dann allerdings die gleichen Nachteile wie das eingebaute von Access, denn das Listenfeld ist in seinen M&ouml;glichkeiten ebenfalls ziemlich beschr&auml;nkt. Besser ist es daher, statt des Listenfeldes ein randloses Formular in Datenblatt- oder Endlosansicht einzusetzen. Damit sind der Gestaltung der Liste dann keine Grenzen mehr gesetzt. F&uuml;r das Formular selbst sind zwei Varianten implementierbar: Entweder ein Unterformular oder ein Popup-Formular. <br \/>Bevor wir ins Detail gehen, schauen wir uns einmal an, wie sich ein herk&ouml;mmliches Kombinationsfeld eigentlich verh&auml;lt.<\/p>\n<p><b>Das muss ein Kombinationsfeld k&ouml;nnen<\/b><\/p>\n<p>Grunds&auml;tzlich l&auml;sst sich ein Kombinationsfeld vollst&auml;ndig sowohl mit der Maus als auch mit der Tastatur bedienen. Mit der Maus hat man diese Abfolge: Ein Klick auf den Pfeil-Button &ouml;ffnet die Liste, die Bildlaufleiste dient zum Navigieren und ein Klick auf einen Eintrag w&auml;hlt diesen aus.<br \/>Die Tastatur bietet weitere M&ouml;glichkeiten: Innerhalb des Textbereichs verh&auml;lt sich das Kombinationsfeld n&auml;mlich genau so wie ein Textfeld. Mit der Taste <b>F4 <\/b>oder der Tastenkombination <b>Alt + Cursor nach unten<\/b> klappen Sie das Kombinationsfeld auf. Die gleichen Tastaturanweisungen oder die Tasten <b>Escape <\/b>und <b>Tab <\/b>schlie&szlig;en die Liste wieder. Das Scrollen durch die Liste geschieht durch die <b>Cursor nach unten<\/b>&#8211; und <b>Cursor nach oben<\/b>-Tasten oder, f&uuml;r gr&ouml;&szlig;ere Spr&uuml;nge, mit <b>Bild auf <\/b>und <b>Bild ab<\/b>. Die Eingabe von Zeichen in das Textfeld navigiert zu entsprechenden Eintr&auml;gen, falls die automatische Erg&auml;nzung eingeschaltet ist. Die Eingabetaste schlie&szlig;lich w&auml;hlt den markierten Eintrag aus.<\/p>\n<p>Die Liste selbst hat eine Datenherkunft, die auf einer Tabelle, einer Wertliste oder, ab Access 2002, direkt auf einem Recordset basiert. Die veraltete M&ouml;glichkeit, es mit einer benutzerdefinierten Funktion zu f&uuml;llen, bleibt hier au&szlig;en vor. Das Steuerelement l&auml;sst sich direkt an ein Datenfeld des Formulars oder eines Berichts binden &#8211; die Auswahl eines anderen Eintrags &auml;ndert also den Wert des zu Grunde liegenden Feldes.<\/p>\n<p>Wollte man all diese Eigenschaften per Eigenbau akribisch nachbilden, w&uuml;rde dies eine ganze Menge Arbeit bedeuten. In den folgenden Beispielen ist das nur teilweise umgesetzt. Schlie&szlig;lich sollen die neuen Kombinationsfelder ja neue M&ouml;glichkeiten aufweisen, die dann unter Umst&auml;nden auch eine andere Bedienung erfordern. Wichtig ist vor allem, dass die Liste sich mit den erw&auml;hnten Tastenkombinationen &ouml;ffnen und schlie&szlig;en l&auml;sst, eine Verwendung auch allein mit der Maus m&ouml;glich ist und das Ergebnis schlie&szlig;lich im zugewiesenen Datenfeld des Formulars landet.<\/p>\n<p><b>Eigenbau, Version mit Unterformular<\/b><\/p>\n<p>In Bild 1 sehen Sie, wie sich die einzelnen Komponenten des nachgebildeten Kombinationsfeldes zusammenf&uuml;gen. Ausgangspunkt ist ein Textfeld mit Beschriftung (&#8222;Label&#8220;), an dessen rechter Seite eine Schaltfl&auml;che mit Bild angeflanscht wird. Das Textfeld ist im Formular ungebunden.<\/p>\n<div class=\"abbildung\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/Combos_Extended-web-images\/Bild258_opt.jpeg\" alt=\"missing image file\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Nachgebildetes Kombinationsfeld<\/span><\/b><\/p>\n<\/div>\n<p>Unterhalb des Textfeldes ist ein Unterformular angebracht, das rechtsb&uuml;ndig mit der Schaltfl&auml;che abschlie&szlig;t. Seine Eigenschaft <b>Sichtbar <\/b>wurde in der Entwurfsansicht auf <b>Nein <\/b>eingestellt. Vielleicht wundern Sie sich dar&uuml;ber, warum das Unterformular so klein ist, obwohl es nachher doch die ganze ausgeklappte Liste anzeigen soll. Der Grund ist ganz einfach der, dass das Unterformular &uuml;ber anderen weiteren Steuerelementen des Formulars liegen muss, sie also in der Entwurfsansicht &uuml;berdecken w&uuml;rde. Das machte die Arbeit am Formularentwurf etwas schwierig, falls Sie nachtr&auml;glich die &uuml;berdeckten Steuerelemente bearbeiten wollten. Stattdessen wird das Unterformular zur Laufzeit beim Laden des Formulars per VBA auf die gew&uuml;nschte Gr&ouml;&szlig;e gebracht.<\/p>\n<p>Ein Wort zur Schaltfl&auml;che: Hier muss man sich leider entscheiden, welches Bildchen man f&uuml;r das Pfeilsymbol anheften m&ouml;chte. Je nach Access-Version, nach Betriebssystem und nach Einstellung der Option <b>Mit einem Design versehene Steuerelemente verwenden<\/b> sieht ein Kombinationsfeld-Pfeil unterschiedlich aus. In Bild 1 wurde ein Symbol mit XP-Style unter Access 2003 verwendet. Man k&ouml;nnte zwar zur Laufzeit die Einstellungen ermitteln und in Abh&auml;ngigkeit davon individuelle Bildchen in den Button laden, der Aufwand hierf&uuml;r scheint aber etwas &uuml;bertrieben.<\/p>\n<p>Es macht ja nichts, wenn der User bemerkt, dass es sich nicht um ein Windows-konformes Kombinationsfeld handelt. Im Verzeichnis der Beispieldatenbank <b>comboboxfakes.mdb <\/b>finden Sie zwei unterschiedliche Bilddateien, die sich f&uuml;r den Button eignen.<\/p>\n<p>Wie nun die einzelnen Elemente zusammenarbeiten, l&auml;sst sich am besten anhand der Beipieldatenbank demonstrieren. Als Datenbasis wurde die von der Nordwind-Datenbank abgeleitete Version S&uuml;dsturm verwendet. Das Formular <b>frmBestellungen <\/b>(siehe Bild 2) zeigt die Bestellungen einzelner Kunden und die zugeh&ouml;rigen Bestelldetails in einem Unterformular. Zwei gefakte Kombinationsfelder sind eingebaut: Ganz oben eines zur Auswahl des Kunden und im Unterformular eines zur Auswahl von Artikeln f&uuml;r eine Bestellung.<\/p>\n<div class=\"abbildung\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/Combos_Extended-web-images\/Bild265_opt.jpeg\" alt=\"missing image file\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Das Formular <br \/>Kundenbestellungen der Beispieldatenbank<\/span><\/b><\/p>\n<\/div>\n<p>Das Kundenkombinationsfeld ist in der Unterformularversion ausgef&uuml;hrt. Im Unterformular f&uuml;r die Artikel ist das nicht m&ouml;glich, weil dieses selbst in Endlosansicht vorliegt und &#8211; abgesehen vom fehlenden Platz pro Zeile &#8211; damit nicht erlaubt, Unterformulare einzuf&uuml;gen. Dort kommt die Version mit einem Popup-Formular zur Anwendung, die sp&auml;ter besprochen wird.<br \/>Das &ouml;ffnen des Kundenkombinationsfeldes mit <b>F4<\/b>, <b>Alt + Cursor nach unten<\/b> oder Klick auf die Pfeil-Schaltfl&auml;che f&uuml;hrt zur in Bild 3 dargestellten Erscheinung.<\/p>\n<div class=\"abbildung\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/Combos_Extended-web-images\/Bild271_opt.jpeg\" alt=\"missing image file\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Ge&ouml;ffnetes Kombinationsfeld im Eigenbau<\/span><\/b><\/p>\n<\/div>\n<p><!--30percent--><\/p>\n<p>Die Kunden sind in der Liste mit detaillierten Angaben aufgef&uuml;hrt. Sie bietet die Gelegenheit, nach verschiedenen Feldern wie Code, Kontaktperson, Firmenname oder Adresse zu filtern und das auch kombiniert. In die Felder der Filterzeile k&ouml;nnen Anfangsbuchstaben oder Wortteile eingegeben werden, die in einem SQL-String per LIKE zu einem Filterausdruck zusammengesetzt werden. Eintr&auml;ge k&ouml;nnen durch Klick auf eine der gr&uuml;n markierten Schaltfl&auml;chen mit der Beschriftung <b>Ausw&auml;hlen<\/b> oder durch Bet&auml;tigen der Eingabetaste selektiert werden. Die Liste schlie&szlig;t sich dann wieder und der Eintrag wird in die Kunden-Textbox &uuml;bernommen.<\/p>\n<p>Sie m&ouml;gen einwenden, dass man statt eines solchen nachgebauten Kombinationsfelds auch gleich ein Popup-Fformular verwenden k&ouml;nnte. Dazu m&uuml;sste man jedoch eine M&ouml;glichkeit zum &ouml;ffnen dieses Formulars wie etwa eine zus&auml;tzliche Schaltfl&auml;che bereitstellen, die f&uuml;r die meisten Benutzer jedoch zun&auml;chst ungewohnt sein d&uuml;rfte. Hat der Benutzer hingegen ein Kombinationsfeld vor sich, dann sind die Funktionen der Pfeil-Schaltfl&auml;che und die Tastenkombinationen selbstverst&auml;ndlich.<\/p>\n<p><b>Die Funktion im Detail<\/b><\/p>\n<p>Das &ouml;ffnen der Liste geschieht, indem das Unterformular sichtbar gemacht wird. So, wie es im Entwurf eingerichtet wurde, s&auml;he das dann zun&auml;chst eigenartig aus &#8211; wurde es doch verkleinert angelegt.<\/p>\n<p>Deshalb ist in der Ereignisprozedur <b>Beim Anzeigen <\/b>des Hauptformulars der Code zum Einstellen der gew&uuml;nschten Gr&ouml;&szlig;e des Unterformulars untergebracht:<\/p>\n<pre>Me!cboKunden.Left = 980<br \/>Me!cboKunden.Width = 10900<br \/>Me!cboKunden.Height = 6630<\/pre>\n<p>St&ouml;ren Sie sich nicht daran, dass dem Unterformularnamen das Pr&auml;fix <b>cbo <\/b>statt des &#8222;korrekten&#8220; <b>sfrm <\/b>spendiert wurde. Es wurde zur leichteren Unterscheidung von &#8222;richtigen&#8220; Unterformularen gew&auml;hlt. Die <b>Beim Klicken<\/b>-Ereignisprozedur der Pfeil-Schaltfl&auml;che macht das Unterformular sichtbar:<\/p>\n<pre>Private Sub cmdDropdown_Click()<br \/>    Me!cboKunden.Visible = _<br \/>    Not Me!cboKunden.Visible<br \/>    ...\r\nEnd Sub<\/pre>\n<p>Hier wird <b>Visible <\/b>nicht einfach auf <b>True<\/b> gesetzt, sondern ausgewertet, ob das Unterformular eventuell bereits ge&ouml;ffnet wurde. Dann n&auml;mlich wird es wieder auf <b>Unsichtbar <\/b>gestellt, was dem Verhalten des Pfeil-Buttons eines herk&ouml;mmlichen Kombinationsfeldes entspricht. Die gleiche Aktion soll erfolgen, wenn die Tasten <b>F4 <\/b>oder <b>Alt + Cursor nach unten <\/b>bet&auml;tigt werden. Das ist mit dem <b>Key_Down<\/b>-Ereignis (<b>Bei Taste Ab<\/b>) des Kunden-Textfeldes zu l&ouml;sen. In dieser Prozedur werden die passenden Keycodes abgefangen:<\/p>\n<pre>Private Sub txtKunde_KeyDown(KeyCode As _<br \/>        Integer, Shift As Integer)<br \/>    If (KeyCode = vbKeyDown And Shift = _<br \/>            ALT_MASK) Or (KeyCode = vbKeyF4 And _<br \/>            Shift = 0) Then<br \/>        cmdDropdown_Click<br \/>    End If<br \/>End Sub<\/pre>\n<p>Statt hier den gleichen Code wie f&uuml;r die Schaltfl&auml;che zu wiederholen, wird einfach die Prozedur <b>cmdDropDown_Click <\/b>selbst aufgerufen.<\/p>\n<p>Fehlt noch der Inhalt des Textfeldes selbst. Da es nicht an ein Feld der Datenherkunft des Formulars gebunden ist, muss per Code im <b>Current<\/b>-Ereignis f&uuml;r das Bef&uuml;llen Sorge getragen werden (in einer Zeile):<\/p>\n<pre>Me!txtKunde.Value = DFirst(&quot;Firma&quot;, &quot;tblKunden&quot;, &quot;KundeID=&quot; &amp; Me!KundeID)<\/pre>\n<p>Das Textfeld selbst ist &uuml;brigens f&uuml;r die Eingabe gesperrt. Das Verhalten unserer Fake-Combobox entspricht damit quasi der Einstellung <b>Nur Listeneintr&auml;ge anzeigen<\/b> einer Access-Combobox.<\/p>\n<p>Mehr Code ist im Hauptformular f&uuml;r die L&ouml;sung nicht notwendig. Der Fokus hat sich ja nun auf das Unterformular verlagert, welches sich in der Beispieldatenbank <b>frm_cbKunden <\/b>nennt.<br \/>Es enth&auml;lt selbst wieder ein Unterformular <b>sfrm_cbKunden <\/b>in Endlosausf&uuml;hrung.<\/p>\n<p>Man h&auml;tte darauf auch gut verzichten und es gleich selbst als Endlosformular ausf&uuml;hren k&ouml;nnen. Die L&ouml;sung mit zus&auml;tzlichem Unterformular l&auml;sst jedoch erweiterten Gestaltungsspielraum offen.<\/p>\n<p>Da die Kombinationsfeldliste, also das Unterformular <b>cboKunden<\/b>, auch mit den gleichen Tasten geschlossen werden soll, mit denen es ge&ouml;ffnet wurde, m&uuml;ssen in diesem wieder Keycodes abgefangen werden. Da hier aber mehr als nur ein Steuerelement im Formular enthalten ist, soll dieses Abfangen formularweit erfolgen.<\/p>\n<p>Dazu ist die Eigenschaft <b>Tastenvorschau <\/b>des Formulars auf <b>Ja <\/b>zu stellen, was dazu f&uuml;hrt, dass jeglicher Tastenanschlag zuerst an die Prozedur <b>Form_KeyDown <\/b>geleitet wird, bevor er seinen vorgesehenen Zielort erreicht. In der Prozedur k&ouml;nnen die Tastenanschl&auml;ge dann ausgewertet und gegebenenfalls gefiltert und mit Aktionen belegt werden:<\/p>\n<pre>Private Sub Form_KeyDown(KeyCode As Integer, _<br \/>        Shift As Integer)<br \/>    &apos;Bei ESC, ALT+NACH-UNTEN und F4 Liste wieder <br \/>    &apos;ausblenden<br \/>    If KeyCode = vbKeyEscape Or (KeyCode = _<br \/>         vbKeyDown And Shift = ALT_MASK) Or _<br \/>         (KeyCode = vbKeyF4 And Shift = 0) Then<br \/>        Me.Parent!txtKunde.SetFocus<br \/>        Me.Visible = False<br \/>    End If<br \/>End Sub<\/pre>\n<p>Das Formular enth&auml;lt noch einige weitere Prozeduren, die f&uuml;r das Filtern der Liste verantwortlich sind oder die Bedienung per Tastatur genauer regeln &#8211; auf diese wird hier nicht weiter eingegangen. F&uuml;r das Filtern sind die Prozeduren <b>FilterMe<\/b> und <b>ConcatenateFilter<\/b> zust&auml;ndig, die immer aufgerufen werden, sobald ein Wert in den Filtereingabefeldern ge&auml;ndert wird.<br \/>Wichtig ist dagegen die Prozedur zum Ausw&auml;hlen eines Eintrags der Liste. Da die Schaltfl&auml;che <b>Ausw&auml;hlen<\/b> sich im Unterformular <b>sfrm_cbKunden <\/b>des Unterformulars befindet, leitet es eine Aktion an das Elternfenster weiter:<\/p>\n<pre>Private Sub cmdSelect_Click()<br \/>    Me.Parent.KundeSelectedID Nz(Me!Firma) &amp; _<br \/>        &quot; \/ &quot; &amp; Nz(Me!KundenCode) &amp; &quot; \/ &quot; _<br \/>        &amp; Nz(Me!Person)<br \/>End Sub<\/pre>\n<p>Das Elternformular wiederum enth&auml;lt die &ouml;ffentliche Prozedur <b>KundeSelectedID<\/b>:<\/p>\n<pre>Public Sub KundeSelectedID(KID As Variant)<br \/>    Me.Parent.Filter = &quot;KundeID=&quot; _<br \/>        &amp; Me!sfrmKunden!KundeID<br \/>    Me.Parent.FilterOn = True<br \/>    With Me.Parent!txtKunde<br \/>        .SetFocus<br \/>        .Value = KID<br \/>    End With<br \/>    Me.Visible = False<br \/>End Sub<\/pre>\n<p>Hier werden mehrere Aufgaben erledigt. Zun&auml;chst wird der Filter f&uuml;r die Datenherkunft des Hauptformulars auf die ID des ausgew&auml;hlten Kunden gesetzt. Dadurch wechselt der Datensatz im Hauptformular, was die beabsichtigte Navigationsfunktion des Kombinationsfeldes ist. Dann wird noch das Textfeld des zusammengesetzten Kombinationsfelds mit dem im Unterformular ermittelten Kunden-String, &uuml;bergeben im Parameter <b>KID<\/b>, gef&uuml;llt. Das w&auml;re an sich allerdings nicht notwendig, weil bereits das <b>Current<\/b>-Ereignis des Hauptformulars, das nach dem Filtern eintritt, Gleiches tut. Es demonstriert hier aber den Zugriff vom Unterformular auf ein Steuerelement des Hauptformulars.<\/p>\n<p>Damit sind die Grundfunktionen der ersten Version des Kombinationsfeld-Eigenbaus besprochen. Man k&ouml;nnte noch mehr Features einbauen: So fehlt etwa der Umstand, dass nach dem &ouml;ffnen der Liste gleich der im Textfeld bereits angezeigte Datensatz markiert wird, wie das bei Kombinationsfeldern &uuml;blich ist. Dieses Feature macht in diesem Beispiel jedoch wenig Sinn, weil die Hauptfunktion das Filtern von Eintr&auml;gen ist, weshalb der Fokus nach dem &ouml;ffnen eher auf einem Filtereingabefeld stehen sollte als auf einem Listeneintrag.<\/p>\n<p><b>Eigenbau, Version mit Popup-Formular<\/b><\/p>\n<p>Die vorige L&ouml;sung hat entscheidende Nachteile: Erstens l&auml;sst sie sich nicht in Endlos-Unterformularen einsetzen und zweitens ben&ouml;tigt die Liste als Unterformular Platz, der leider nicht zur Verf&uuml;gung steht, wenn die Combobox etwa am unteren Rand des Formulars sitzt &#8211; ein Unterformular kann nun mal nicht &uuml;ber den Rand das Hauptformulars hinausragen. Das l&auml;sst sich daher nur mit einem externen Formular l&ouml;sen.<br \/>In der Beispieldatenbank sieht der andere Eigenbau so wie in Bild 4 aus.<\/p>\n<div class=\"abbildungrahmen\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/Combos_Extended-web-images\/Bild277_opt.jpeg\" alt=\"missing image file\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Kombinationsfeld-Eigenbau mit einem Popup-Formular<\/span><\/b><\/p>\n<\/div>\n<p>Dieses Kombinationsfeld ist deutlich einfacher gehalten als das im ersten Beispiel. Neben der Liste von ausw&auml;hlbaren Artikeln zeigt es links neben jedem Eintrag den Lagerbestand des Artikels an. Je nach Bestand wird dieser Wert zus&auml;tzlich farblich unterlegt. Ein Bestand von weniger als sechs Artikeln etwa markiert das Feld rot, ein Bestand von mehr als 20 Artikeln zeigt sich gr&uuml;n. Ein besonderes Feature des Kombinationsfelds ist aber die Tatsache, dass die Liste dynamisch ist: F&uuml;r eine Bestellung kann ein Artikel nur einmal angegeben werden. W&uuml;rde <b>Queso Cabrales<\/b> in eine weitere Zeile eingegeben, dann w&uuml;rde sich Access mit einem Fehler wegen Verletzung der Indexregeln f&uuml;r Bestelldetails melden &#8211; ein Artikel soll ja nicht mehrmals angegeben, sondern in der Bestellmenge ver&auml;ndert werden. Das Kombinationsfeld ber&uuml;cksichtigt dies, indem es in der Liste alle Artikel ausfiltert, die bereits vergeben sind. Das erledigt dieser Code:<\/p>\n<pre>Dim strIDs As String<br \/>Dim rsClone As DAO.Recordset<br \/>Set rsClone = Me.RecordsetClone<br \/>rsClone.MoveFirst<br \/>Do While Not rsClone.EOF<br \/>    strIDs = strIDs &amp; rsClone!ArtikelID &amp; &quot;,&quot;<br \/>    rsClone.MoveNext<br \/>Loop<br \/>Set rsClone = Nothing<br \/>If Len(strIDs) &gt; 0 Then strIDs = _<br \/>    Left(strIDs, Len(strIDs) - 1)<br \/>DoCmd.OpenForm &quot;sfrm_Artikel&quot;, , , _<br \/>    &quot;ArtikelID NOT IN (&quot; &amp; strIDs &amp; &quot;)&quot;<\/pre>\n<p>Ausgangspunkt ist das Unterformular <b>sfrm_Bestelldetails<\/b>, eingebettet in das Hauptformular <b>frmBestellungen<\/b>. Es enth&auml;lt eine Liste der Artikel zu einer Bestellung, gespeichert in Form der <b>ArtikelIDs<\/b>. Der Code durchl&auml;uft nun in einer Schleife alle Datens&auml;tze der aktuellen Bestellung und setzt dabei in der Variablen <b>strIDs <\/b>einen String zusammen, der alle vergebenen <b>ArtikelIDs <\/b>enth&auml;lt. Dieser String wird dann als WHERE-Bedingung beim &ouml;ffnen des Popup-Formulars per <b>Docmd.OpenForm <\/b>&uuml;bergeben. Das ge&ouml;ffnete Popup-Formular hat damit eine Datenherkunft wie diese:<\/p>\n<pre>SELECT * FROM tblArtikel WHERE ArtikelID NOT IN(12,14,22,26,33)<\/pre>\n<p>Doch das war nur ein Vorgriff. Sehen Sie zun&auml;chst, wie das &ouml;ffnen der alternativen Combobox vonstatten geht. Aus dem Hauptformular wird es durch die gleichen Aktionen ge&ouml;ffnet, wie im ersten Beispiel: entweder Klick auf den Combobox-Button oder eine der Tastenkombinationen. Der Code, der hierbei abl&auml;uft, ist allerdings ein wenig komplizierter, da wir es nun mit einem eigenst&auml;ndigen Popup-Formular zu tun haben, dessen Position auf dem Bildschirm erst anzupassen ist.<\/p>\n<p>Der Reihe nach: W&auml;hrend im ersten Beispiel das Kombinationsfeld durch Setzen der <b>Visible<\/b>-Eigenschaft eingeblendet wurde, muss es hier per <b>Docmd.OpenForm <\/b>ge&ouml;ffnet werden. Und da wird es etwas umst&auml;ndlich: W&uuml;rde man es im Modus <b>Dialog <\/b>&ouml;ffnen, dann h&auml;tte es erstens eine Titelleiste und zweitens w&uuml;rde der Code beim Aufruf anhalten, was es unm&ouml;glich machen w&uuml;rde, es vom aufrufenden Formular per Code zu positionieren. Also bleibt nur die M&ouml;glichkeit, es mit dem Wert <b>Ja <\/b>f&uuml;r die Eigenschaft <b>Gebunden<\/b> zu versehen, damit nicht gleichzeitig das Pseudo-Kombinationsfeld ge&ouml;ffnet ist und dennoch weitere Funktionen in Access ausgef&uuml;hrt werden k&ouml;nnen. Ein Formular im gebundenen Modus verhindert aber nicht, dass der Code nach Aufruf von <b>DoCmd.OpenForm <\/b>fortgef&uuml;hrt wird. Das kann man sich zu Nutze machen, um die Positionierung des Popup-Formulars genau an die richtige Stelle zu vollziehen, damit es &uuml;berhaupt erst wie die Liste eines Kombinationsfeldes aussieht:<\/p>\n<pre>Dim lPosLeft As Long, lPosTop As Long<br \/>lPosLeft = Me.WindowLeft + _<br \/>    Me.CurrentSectionLeft + _<br \/>    Me!cmdDropdown.Left + _<br \/>    Me!cmdDropdown.Width - _<br \/>    Forms!sfrm_Artikel.WindowWidth - 30<br \/>lPosTop = Me.WindowTop + _<br \/>    Me.CurrentSectionTop + _<br \/>    Me.Section(acDetail).Height - 30<br \/>Forms!sfrm_Artikel.Move lPosLeft, lPosTop<\/pre>\n<p>Positioniert wird es mit der Methode <b>Move <\/b>des Formulars, der als Parameter die X- und Y-Koordinaten relativ zum Access-Hauptfenster &uuml;bergeben werden. Achtung: Leider wird die Methode <b>Move <\/b>nur von Access XP und h&ouml;her unterst&uuml;tzt. F&uuml;r Access 2000 k&auml;me nur die Positionierung &uuml;ber API-Code infrage &#8211; machbar, aber kompliziert.<br \/>Die Koordinaten werden aus der Position des aufrufenden Fensters ermittelt (<b>WindowLeft<\/b>, <b>WindowTop <\/b>&#8211; ebenfalls nicht unter Access 2000 verf&uuml;gbar), der Position des Pfeil-Buttons und der Position der Zeile mit den Eigenschaften <b>CurrentLeft<\/b>, <b>CurrentTop<\/b> sowie <b>Detailbereich.Height<\/b>.<\/p>\n<p>Um den Wert zu erhalten, der in der Combobox ausgew&auml;hlt wurde, kommt hier eine Methode zum Einsatz, die manch einer als unsch&ouml;n empfindet: Die Verwendung einer globalen Variablen. Vor dem Aufruf des Popup-Formulars wird die Variable <b>globvTemp <\/b>auf Null gesetzt und nach dem Schlie&szlig;en wieder ausgelesen. Dazwischen wird in einer Schleife auf das Schlie&szlig;en gewartet:<\/p>\n<pre>globvTemp = Null<br \/>Docmd.OpenForm &quot;sfrm_Artikel&quot;, ...<br \/>Do<br \/>    DoEvents<br \/>Loop Until SysCmd(acSysCmdGetObjectState, _<br \/>    acForm, &quot;sfrm_Artikel&quot;) = 0<br \/>If Not IsNull(globvTemp) Then _<br \/>    Me!ArtikelID = globvTemp<\/pre>\n<p>Wurde kein Wert ausgew&auml;hlt, dann ist die Variable <b>globvTemp <\/b>noch immer Null; anderenfalls wird im aktuellen Bestelldetaildatensatz die entsprechende <b>ArtikelID <\/b>gespeichert.<br \/>Das Setzen der Variablen im Popup-Formular &uuml;bernimmt eine Zeile:<\/p>\n<pre>Private Sub txtArtikelname_Click()<br \/>    globvTemp = Me!ArtikelID<br \/>    DoCmd.Close acForm, Me.Name<br \/>End Sub<\/pre>\n<p>Diese Methode &uuml;ber eine globale Variable ist hier aus zwei Gr&uuml;nden unproblematisch: Erstens kann in der Datenbank parallel praktisch nichts passieren, weil das Popup-Formular im gebundenen Modus betrieben wird. Zum anderen enth&auml;lt dessen Code eine Fehlerbehandlung, sodass <b>globvTemp <\/b>nicht zuf&auml;llig durch einen Fehler auf Null gesetzt werden kann. &uuml;ber die Variable ist zudem eine st&auml;rkere Entkopplung zum aufrufenden Formular gegeben.<\/p>\n<p><b>Feinschliff<\/b><\/p>\n<p>Nachdem diese Version der Combobox im Aussehen einer &uuml;blichen recht nahekommt, sollte sie auch ein &auml;hnliches Verhalten an den Tag legen. Dazu geh&ouml;rt etwa, dass man sich mit dem Cursor nicht innerhalb eines Eintrags bewegen kann, wie das die hier verwendeten Textboxen nun mal vorsehen, oder dass ein Eintrag vollst&auml;ndig markiert ist. Sehen Sie sich den Entwurf des Popup-Formulars in Bild 5 an.<\/p>\n<div class=\"abbildung\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/Combos_Extended-web-images\/Bild283_opt.jpeg\" alt=\"missing image file\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 5: Popup-Formular f&uuml;r die Kombinationsfeldliste im Entwurf<\/span><\/b><\/p>\n<\/div>\n<p>F&uuml;r die Listeneintr&auml;ge wird eine Textbox verwendet. Ger&auml;t man mit dem Cursor in das Feld, dann kann man sich innerhalb der Zeichen horizontal bewegen. Das l&auml;sst sich unterbinden, indem die Eigenschaft <b>Gesperrt <\/b>der Textbox auf <b>Ja <\/b>eingestellt wird. Aber selbst dann zeigen die Cursortasten noch nicht das ideale Verhalten. Deshalb ist auch in diesem Formular die Eigenschaft <b>Tastenvorschau <\/b>auf <b>Ja <\/b>eingestellt und die Tastatur-Ereignisse werden in einer Prozedur <b>Form_KeyDown <\/b>verarbeitet. Ein Ausschnitt dieser Prozedur, die noch weitere Eigenschaften in Bezug auf das Filtereingabefeld ganz oben steuert, sei hier wiedergegeben:<\/p>\n<pre>Private Sub Form_KeyDown(KeyCode As Integer, _<br \/>        Shift As Integer)<br \/>    Select Case KeyCode<br \/>    &apos;Zugelassene Tasten: NACH-UNTEN, NACH-OBEN, \r\n    &apos;BILD-AUF, BILD-UNTEN,ENTER<br \/>    Case 38, 33, 34, 13 &apos;tue nichts<br \/>    Case 9, 27, 40, 115 <br \/>        &apos;TAB, ESC, F4, NACH-UNTEN<br \/>        If (KeyCode = 40 And Shift &lt;&gt; 4) Then<br \/>            &apos;nicht ALT+NACH-UNTEN<br \/>            Exit Sub<br \/>        End If<br \/>    Case Else &apos;Alle anderen Tasten<br \/>         KeyCode = 0 &apos;Taste deaktivieren<br \/>    End Select<br \/>End Sub<\/pre>\n<p class=\"zwischen-berschriftnachquellcode\">Zusammenfassung<\/p>\n<p>Die hier dargestellte Eigenentwicklung von Kombinationsfeldern soll zeigen, wie man die Ergonomie von Datenbankoberfl&auml;chen verbessern kann. F&uuml;r viele Zwecke d&uuml;rfte der Aufwand zu hoch sein. Wenn aber aus umfangreicheren Listen eine Auswahl zu treffen ist oder ein Auge auf Performance-Optimierungen geworfen werden muss, dann sollten Sie &auml;hnliche L&ouml;sungen in Betracht ziehen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>combofakes.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/50BBAD48-9D39-4B82-8AFD-3A8EF9CF8BC6\/aiu_518.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kombinationsfelder spielen eine wichtige Rolle bei der Dateneingabe in Formularen. Auch wenn sie mit zahlreichen Eigenschaften und Programmierm&ouml;glichkeiten ausgestattet sind, gibt es immer wieder F&auml;lle, in denen man sich eine ausgefeiltere Bedienung oder eine andere Optik w&uuml;nscht. Einige &Auml;nderungsm&ouml;glichkeiten finden Sie in diesem Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662007,66062007,44000028,44000023],"tags":[],"class_list":["post-55000518","post","type-post","status-publish","format-standard","hentry","category-662007","category-66062007","category-Ergonomie_und_Benutzeroberflaeche","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>Kombinationsfeld-Nachbau mit Pepp - 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\/KombinationsfeldNachbau_mit_Pepp\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kombinationsfeld-Nachbau mit Pepp\" \/>\n<meta property=\"og:description\" content=\"Kombinationsfelder spielen eine wichtige Rolle bei der Dateneingabe in Formularen. Auch wenn sie mit zahlreichen Eigenschaften und Programmierm&ouml;glichkeiten ausgestattet sind, gibt es immer wieder F&auml;lle, in denen man sich eine ausgefeiltere Bedienung oder eine andere Optik w&uuml;nscht. Einige &Auml;nderungsm&ouml;glichkeiten finden Sie in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:18:41+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853\" \/>\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=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Kombinationsfeld-Nachbau mit Pepp\",\"datePublished\":\"2021-02-11T21:18:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/\"},\"wordCount\":3479,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/55d05cde41904f9fa6ec4702f1791853\",\"articleSection\":[\"2007\",\"6\\\/2007\",\"Ergonomie und Benutzeroberfl\u00e4che\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/\",\"name\":\"Kombinationsfeld-Nachbau mit Pepp - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/55d05cde41904f9fa6ec4702f1791853\",\"datePublished\":\"2021-02-11T21:18:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/55d05cde41904f9fa6ec4702f1791853\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/55d05cde41904f9fa6ec4702f1791853\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/KombinationsfeldNachbau_mit_Pepp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kombinationsfeld-Nachbau mit Pepp\"}]},{\"@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":"Kombinationsfeld-Nachbau mit Pepp - 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\/KombinationsfeldNachbau_mit_Pepp\/","og_locale":"de_DE","og_type":"article","og_title":"Kombinationsfeld-Nachbau mit Pepp","og_description":"Kombinationsfelder spielen eine wichtige Rolle bei der Dateneingabe in Formularen. Auch wenn sie mit zahlreichen Eigenschaften und Programmierm&ouml;glichkeiten ausgestattet sind, gibt es immer wieder F&auml;lle, in denen man sich eine ausgefeiltere Bedienung oder eine andere Optik w&uuml;nscht. Einige &Auml;nderungsm&ouml;glichkeiten finden Sie in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:18:41+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Kombinationsfeld-Nachbau mit Pepp","datePublished":"2021-02-11T21:18:41+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/"},"wordCount":3479,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853","articleSection":["2007","6\/2007","Ergonomie und Benutzeroberfl\u00e4che","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/","url":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/","name":"Kombinationsfeld-Nachbau mit Pepp - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853","datePublished":"2021-02-11T21:18:41+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/55d05cde41904f9fa6ec4702f1791853"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/KombinationsfeldNachbau_mit_Pepp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Kombinationsfeld-Nachbau mit Pepp"}]},{"@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\/55000518","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=55000518"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000518\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}