TKSoft-Online

Einschränken von Textfeldeingaben durch das Ereignis "Bei Taste" PDF Drucken E-Mail
( 1 Vote )
MS-Access Bsp. DB's - Bsp. Downloads Formulare
  
Sonntag, den 06. Januar 2008 um 01:00 Uhr

 

Problemstellung:

Wie kann ich es verhindern das Sonderzeichen in Textfeldern eingegeben werden?

Voraussetzungen:

Das Bsp ist unter A00, AXP, A03 lauffähig, unter A07 wurde es nicht getestet.

Funktionsweise:

Um zu verhindern das unzulässige Zeichen in ein Textfeld eingegeben werden, kann man auf das
Ereignis "Bei Taste" des betreffenden
Feldes zurück greifen. Um z.B. nur Buchstaben und Zahlen zu zulassen würde der Code so aussehen:

Private Sub Text0_KeyPress(KeyAscii As Integer)
    If KeyAscii > 47 And KeyAscii < 58 Or KeyAscii > 64 And _
       KeyAscii < 91 Or KeyAscii > 96 And KeyAscii < 123 Or KeyAscii = 8 Then
      Else
        MsgBox "Es wurde ein ungültiges Zeichen eingegeben" & vbNewLine & _
               "Es sind nur Zahlen, Groß- und Kleinbuchstaben zulässig.", _
               vbCritical + vbOKOnly, "Eingabefehler!"
        Me!Text0.SetFocus
        KeyAscii = 0
    End If
End Sub

 

Jetzt hat diese Lösung aber den Nachteil, das man bei mehreren Textfelden, immer wieder den
gleichen Code schreiben muss.
Deshalb hab ich eine Universalprozedur geschrieben, die recht flexibel zu handeln ist.

Die Prozedur bietet 5 Möglichkeiten die in der Enum-Auflisten "ZeichenTyp" definiert sind.
Diese Auflistung hat auch den Vorteil, das beim Prozeduraufruf nur diese Möglichkeiten
gesetzen werden können (s. Bild)

Public Enum ZeichenTyp
    NurZahlen = 1
    NurBuchstabenGross = 2
    NurBuchstabenKlein = 3
    NurBuchstaben = 4
    ZahlenUndBuchstaben = 5
End Enum



Kommen wir nun zum Aufruf der Prozedur.
Hier der Prozedurkopf:

Public Sub KeineSonderzeichen(cText As Control, iType As ZeichenTyp, _
                               iKey As Integer, _
                               Optional bSpace As Boolean = False, _
                               Optional bKomma As Boolean = False)

 

Es müssen 3 Parameter übergeben und es können noch 2 optionale Parameter übergeben werden.

cText = Name des Textfeldes das geprüft werden soll
iType = Typ der Prüfung, diese sind in der Enum-Auflistung "ZeichenTyp" hinterlegt.
iKey = ist der Ascii-Code der gedrückten Taste, dieser wird vom KeyPress-Ereignis übernommen.

bSpace = Optional ob Leerzeichen zulässig sind, Standardwert=Nein. Gilt nicht für Zahlenfelder.
bKomma = Optional ob Kommastellen bei Zahlenfeldern zugelassen werden. Gilt nur für Zahlenfelder.

Ein Aufruf könnte dann z.B. so aussehen:
für das Textfeld "txt_BmL" nur Buchstaben, gross und klein, mit Leerzeichen

Private Sub txt_BmL_KeyPress(KeyAscii As Integer)
    KeineSonderzeichen Me!txt_BmL, NurBuchstaben, KeyAscii, True
End Sub

Der im Code enthaltene iKey=8 ermöglicht das Löschen von Eingaben mittels Delete-Taste

Wird ein unzulässiges Zeichen eingegeben erscheint eine MsgBox mit dem Hinweis und das ungültige Zeichen wird sofort gelöscht.
z.B.:


Es besteht natürlich die Möglichkeit die Prozedur beliebig zu erweitern oder zu verändern.
Denkbar wären z.B. das zulassen von deutschen Umlauten.
Hier die Codes dafür:

ä = 228
ö = 246
ü = 252
ß = 223
Ä = 196
Ö = 214
Ü = 220

 

 

Einschränken von Textfeldeingaben durch das Ereignis Bei Taste

Einschränken von Textfeldeingaben durch das Ereignis "Bei Taste"
für A00-A03 , A07 nicht getestet

Die Zip-Datei enthält eine Version ab A00



Erstellt am
Dateigröße
Downloads
04.01.2008
23.46 KB
1250


Downloads in dieser Kategorie

MS-Access Formulare

MS-Access Formulare

 Seite: 1

 Seite: 2


DatumKlicks
Total2057
Mi. 232
Di. 222
Mo. 211
So. 207
Sa. 191
Fr. 181
Mi. 161
Aktualisiert ( Mittwoch, den 19. Oktober 2011 um 12:46 Uhr )
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Login

Latest Comments

Latest Forum Posts

Mehr »

Download Statistik

41 Kategorien
187 Dateien
173444 Downloads