Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Bringen Sie Steuerelementen Funktionen bei, welche die Eingabe von Daten vereinfachen.

Techniken

Formulare, Steuerelemente, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

Steuerelementoptimierung.mdb

Shortlink

516

Eingabe in Text- und Kombinationsfelder
vereinfachen

André Minhorst, Duisburg

Manchmal nervt es einfach, Daten in Textfelder einzugeben, aber in vielen Fällen lässt sich dies nicht ändern. Wenn das Feld numerische Informationen enthält, gibt es aber durchaus Möglichkeiten: Sie können es dann beispielsweise so programmieren, dass der Benutzer den enthaltenen Wert mit den Cursortasten erhöht oder vermindert.

Eingabevereinfachung

Die Eingabe von Daten erfolgt leider immer noch nicht durch Gedankenkraft oder über ein mit dem Gehirn verbundenes USB-Kabel. Bis es so weit ist, sollten Sie Ihren Benutzern diese Arbeit zumindest vereinfachen - einige Anregungen finden Sie in diesem Artikel. Im Einzelnen sieht das folgendermaßen aus, wobei die Cursortasten jedes Mal eine entscheidende Rolle spielen:

Die ersten beiden Beispiele zeigen, wie Sie die Eingabe von Datumsangaben mit verschiedenen Tastenkombinationen erleichtern. Üblicherweise gibt man Datumsangaben wie ganz normalen Text ein, manche Anwendungen bieten dazu alternativ ein spezielles Steuerelement an, mit dem sich das Datum per Maus zusammenklicken lässt.

Der Nachteil dieser Lösungen ist aber in der Regel, dass der Benutzer dazu die Maus verwenden muss. Wer schnell arbeiten möchte, sollte sich allerdings auf die Tastatur konzentrieren - das Greifen der Maus, das Anklicken der Schaltfläche zum Öffnen des Steuerelements zur Datumseingabe und die Datumseingabe selbst nehmen offensichtlich nicht weniger Zeit in Anspruch als das Eingeben des Datums mit der Tastatur.

Die erste Variante zur Eingabe von Datumsangaben verwendet verschiedene Tastenkombinationen, um die Teile des Datums (Tag, Monat, Jahr) zu ändern.

Die Schaltflächen Cursor nach oben und Cursor nach unten sind beispielsweise für das Ändern des Tages verantwortlich, die Monate und Jahre passt man mit den gleichen Schaltflächen bei gleichzeitig gedrückter Strg- und Alt-Taste an.

Die zweite Variante kommt nur mit den beiden Tasten Cursor nach oben und Cursor nach unten aus. Um die verschiedenen Datumselemente zu verändern, positioniert man die Einfügemarke zunächst auf dem entsprechenden Datumsteil und passt diesen dann mit den Cursortasten an.

Auch Zahlen lassen sich in vielen Fällen leichter mit Cursortasten als mit den Zahlentasten selbst verändern.

Das dritte Beispiel zeigt daher, wie Sie die in einem Textfeld enthaltenen Zahlen per Cursortaste nach oben beziehungsweise nach unten korrigieren.

Zuletzt noch ein Beispiel für den Einsatz von Kombinationsfeldern: Wer dort einen neuen Eintrag auswählen möchte, muss dies erst entweder mit der Maus oder durch eine Tastenkombination (entweder F4 oder Alt + Cursor nach unten) erledigen. Viel schöner wäre es doch, wenn man die in unmittelbarer Umgebung des aktuell ausgewählten Eintrags befindlichen Elemente ganz einfach mit den Tasten Umschalt + Strg + Alt + Cursor nach oben beziehungsweise Cursor nach unten auswählen könnte - und zwar ohne das Aufklappen des Kombinationsfeldes.

Nachteile

Bei all den nachfolgend vorgestellten Beispielen ist zu berücksichtigen, dass meist die Cursortasten zum Einsatz kommen. Diese dienen üblicherweise zum Wechseln des aktuell markierten Steuerelements.

Dies wird aber ohnehin selbst in den Dialogen der Office-Anwendungen und in Access-Formularen unterschiedlich gehandhabt (Erstere erlauben beispielsweise nicht das Verlassen von Kombinationsfeldern per Cursortaste, Letztere schon).

Wer kann, sollte also am besten die Vorgehensweise seiner Benutzer studieren und gegebenenfalls alternative Steuermöglichkeiten vorsehen, die der Benutzer per Option einstellen kann.

Grundlegendes

Die wichtigste Technik dieses Beitrags ist das Abfangen von Benutzereingaben, und zwar der Cursortasten. Sie müssen erkennen, wann der Benutzer in den entsprechenden Steuerelementen die Cursor nach oben und Cursor nach unten-Tasten und ihre Kombinationen mit der Umschalt-, der Strg- und der Alt-Taste betätigt. Dabei hilft die Ereignisprozedur Bei Taste ab, die jedes Steuerelement bereitstellt. Die passende Ereignisprozedur stellt zwei Parameter zur Verfügung:

  • KeyCode: Gibt den Zahlencode der gedrückten Taste zurück. Für die Cursortasten sind dies beispielsweise die Werte 37 (nach links), 38 (nach oben), 39 (nach rechts) und 40 (nach unten). Man vereinfacht sich das Leben, wenn man die passenden VB-Konstanten verwendet, die beispielsweise der Objektkatalog offenbart (s. Abb. 1). Sie können aber auch einfach den Wert von KeyCode per Debug.Print ausgeben lassen, wenn Sie den Zahlenwert einer Taste erfahren möchten.
  • Shift: Gibt an, ob eine der Tasten Umschalt (1), Strg (2) oder Alt (4) gedrückt wurde; ist dies nicht der Fall, lautet der Wert 0. Kombinationen der Tasten erkennt man an der Summe der entsprechenden Werte. Der Wert 7 würde beispielsweise bedeuten, dass der Benutzer alle drei Tasten gleichzeitig gedrückt hätte (1+2+4). Auch hier gibt es Konstanten: acShiftMask, acCtrlMask und acAltMask.
abb001.tif

Abb. 1: Der Objektkatalog liefert bei Bedarf die VB-Konstanten für die KeyCode-Werte.

Wenn Sie nun möchten, dass etwas Spezielles passiert, wenn der Benutzer innerhalb eines Textfeldes die Cursor nach unten-Taste drückt, verwenden Sie etwa die folgende Routine:

Private Sub txtBeispiel_KeyDown(KeyCode _
        As Integer, Shift As Integer)

    If KeyCode = vbKeyDown Then

        'Do something

        KeyCode = 0

    End If

End Sub

Sie fragen also über den Parameter KeyCode ab, ob der Benutzer die Cursor nach unten-Taste betätigt hat, und lassen in diesem Fall den gewünschten Code ausführen.

Wichtig ist, dass Sie dem Parameter KeyCode im Anschluss den Wert 0 zuweisen, damit Access auch nur die hier angegebene Aktion und nicht die eigentliche durch das Betätigen der Taste ausgelöste Funktion aufruft.

Natürlich kann dies auch gewünscht sein - in diesem Fall lassen Sie die Zeile einfach weg.

Tastenvorschau

Wie die einzelnen Steuerelemente besitzt auch das Formular ein Bei Taste ab-Ereignis. Mit der Eigenschaft Tastenvorschau legen Sie fest, ob dieses ausgeführt werden soll. Ist diese Eigenschaft auf Ja eingestellt und enthalten sowohl das Formular als auch ein Steuerelement ein Bei Taste ab-Ereignis, wird das des Formulars zuerst ausgeführt. Beachten Sie, dass ein Einstellen von KeyCode auf den Wert 0 sich auch auf das nachfolgend aufgerufene Ereignis des Steuerelements auswirkt.

Textfeldinhalt beeinflussen

Grundsätzlich gibt man Texte in Textfelder ein, indem man den Fokus auf das Textfeld setzt und dann mit der Tastatur den passenden Wert eintippt. Gegebenenfalls kann man dort natürlich auch Informationen aus der Zwischenablage einfügen.

Wenn das Feld schon einen Wert enthält, muss man diesen erst noch löschen, bevor man den neuen Wert einträgt - dies kann man sich erleichtern, indem man dafür sorgt, dass beim Eintreten in ein Feld direkt der komplette Inhalt markiert wird.

Die Eingabe des ersten neuen Zeichens führt dann dazu, dass der vorhandene Inhalt gelöscht wird (mehr dazu im Beitrag Verhalten beim Feldeintritt in der kommenden Ausgabe, Shortlink 540).

Datumseingabe vereinfachen, Variante 1

Die Eingabe von Datumsangaben können Sie sich bereits mit den richtigen Tastenkombinationen erleichtern (s. Abb. 2).

abb002.tif

Abb. 2: Die erste Variante der vereinfachten Datumseingabe

abb003.tif

Abb. 2: Nur mit den Cursortasten ist die Datumseingabe noch intuitiver.

So fügen Strg + Umschalt + , das Datum und Strg + Umschalt + . die aktuelle Uhrzeit hinzu. Diese Tastenkombinationen kennt aber in der Regel kein normaler Benutzer. Und das Problem ist, dass er auch sämtliche Tastenkombinationen, die Sie für Ihre Steuerelemente vorsehen, nicht kennt. Es gibt also zwei Möglichkeiten:

  • Der Benutzer gibt die Daten wie üblich ein.
  • Sie teilen dem Benutzer die Tastenkombinationen mit, die ihm die Arbeit bei der Dateneingabe erleichtern.

Letzteres setzt voraus, dass der Benutzer überhaupt von seiner gewohnten Arbeitsweise abweichen möchte, daher können Sie ihm die Vereinfachung natürlich nur anbieten. Das erledigen Sie beispielsweise durch einen entsprechenden Steuerelement-TipText. Bevor Sie das tun, schauen Sie sich allerdings erstmal an, wie man die Datumseingabe überhaupt vereinfachen kann.

Die Routine, die hier durch das Bei Taste Ab-Ereignis ausgelöst wird, sieht wie in Listing 1 aus. Sie prüft zunächst, welchen Wert Shift liefert, und dann den jeweiligen KeyCode. Zuvor prüft die Routine allerdings noch, ob das Textfeld überhaupt einen Wert enthält, und fügt, wenn das nicht der Fall ist, das aktuelle Datum ein. Ist ein Datum vorhanden, wirken sich einige Tastenkombinationen wie folgt aus:

Listing 1: Anpassen des Datums in einem Textfeld nur mit Strg, Alt, Cursor nach oben und Cursor nach unten.

Private Sub txtDatum_KeyDown(KeyCode As Integer, Shift As Integer)

    Dim txt As Access.TextBox

    If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then

        Set txt = Me!txtDatum

        If Len(Nz(txt.Text)) = 0 Then

            txt.Text = Date

        Else

            Select Case Shift

                Case 0

                    Select Case KeyCode

                        Case vbKeyUp

                            txt.Text = DateAdd("d", 1, txt.Text)

                        Case vbKeyDown

                            txt.Text = DateAdd("d", -1, txt.Text)

                    End Select

                Case acCtrlMask

                    Select Case KeyCode

                        Case vbKeyUp

                            txt.Text = DateAdd("m", 1, txt.Text)

                        Case vbKeyDown

                            txt.Text = DateAdd("m", -1, txt.Text)

                    End Select

                Case acAltMask

                    Select Case KeyCode

                        Case vbKeyUp

                            txt.Text = DateAdd("yyyy", 1, txt.Text)

                        Case vbKeyDown

                            txt.Text = DateAdd("yyyy", -1, txt.Text)

            &

  • Cursor nach oben: nächster Tag
  • Cursor nach unten: vorheriger Tag
  • Strg + Cursor nach oben: nächster Monat
  • Strg + Cursor nach unten: vorheriger Monat
  • Alt + Cursor nach oben: nächstes Jahr
  • Alt + Cursor nach unten: vorheriges Jahr

Die dabei verwendete Funktion DateAdd ist dabei so schlau, dass beispielsweise das Addieren eines Monats zum Datum 31.1.2007 automatisch den 28.2.2007 ergibt.

Wichtig sind hier folgende Aspekte: Arbeiten Sie immer mit der Text-Eigenschaft des jeweiligen Wertes. Der Grund ist, dass beispielsweise Me!txtDatum eigentlich den Wert der Eigenschaft Me!txtDatum.Value liefert. Wenn der Benutzer jedoch den Inhalt des Feldes ändert, ohne das Feld zu aktualisieren, indem er beispielsweise zu einem anderen Feld wechselt oder den Datensatz speichert, besitzt die Eigenschaft Value noch immer den Wert, den das Feld zu Beginn hatte. Die Text-Eigenschaft gibt immer den angezeigten Inhalt eines Textfeldes aus.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.