In vielen Anwendung werden Felder für Datumseingaben benötigt. Sinnvoll ist es natürlich das Datum beim Verlassen des Eingabefeldes automatisch auf Plausibilität zu prüfen. Die Prüfung sollte zum einen das korrekte Format (tt.mm.jjjj), sowie die korrekten Angaben für Tag und Monat umfassen. Schön wäre es dann noch, wenn man auch zweistellige Jahresangaben vornehmen könnten und die Anwendung diese dann automatisch in die vierstellige Angabe umwandelt. Eine weitere Arbeitserleichterung für den Anwender wäre es auch, wenn keine Punkte eingegeben werden müssen - oder daß automatisch ein Punkt dargestellt wird, wenn man im Nummerblock der Tastatur das Komma drückt. Der nachfolgende Tipp beherrscht alle o.g. Features und lässt sich ganz leicht in die eigene Anwendung einbinden. Tastatureingaben prüfen ' Tasten Private Sub txtDatum_KeyPress(KeyAscii As Integer) Select Case KeyAscii ' zulässige Tasten: 0-9, Punkt, Space und Backspace Case 48 To 57, 8, 32, 46 ' Komma automatisch in Punkt umwandeln Case 44 KeyAscii = 46 ' Alle anderen Tasten ignorieren Case Else KeyAscii = 0 End Select End Sub Prüfung beim Verlassen des Eingabefeldes ' Datum-Prüfroutine aufrufen Private Sub txtDatum_LostFocus() Dim sDatum As String sDatum = CheckDatum(txtDatum.Text) If sDatum <> "" Then txtDatum.Text = sDatum End Sub Universelle Datum-Prüfroutine ' Datum aus Plausibilität prüfen ' Rückgabewert: formatierte Datumsangabe oder Leerstring, ' wenn ungültiges Datum Public Function CheckDatum(ByVal Datum As String) As String Dim Result As Boolean Dim TT As Integer Dim MM As Integer Dim JJ As Integer Dim sPos As Integer Dim Entry As String Result = False ' Ist überhaupt ein Datum eingetragen? If Trim$(Datum) <> ". ." And Datum <> "" Then ' keine Punkte im Datum vorhanden If InStr(Datum, ".") = 0 Then ' Eingabelänge mindestens 4-stellig If Len(Datum) > 3 Then TT = Val(Left$(Datum, 2)) MM = Val(Mid$(Datum, 3, 2)) If Trim$(Mid$(Datum, 5)) = "" Then ' Jahresangabe fehlt -> aktuelles Jahr annehmen JJ = Val(Right$(Date$, 4)) Else JJ = Val(Mid$(Datum, 5)) End If Result = True End If Else ' Eingabe enthält Punktangaben Entry = Datum ' Tag ermitteln sPos = InStr(Entry, ".") TT = Val(Left$(Entry, sPos - 1)) Entry = Mid$(Entry, sPos + 1) ' Monat ermitteln sPos = InStr(Entry, ".") If sPos Then MM = Val(Left$(Entry, sPos - 1)) Entry = Mid$(Entry, sPos + 1) ' keine Jahresangabe -> aktuelles Jahr annehmen If Trim$(Entry) = "" Then Entry = Right$(Date$, 4) End If JJ = Val(Entry) Result = True End If End If If Result Then Result = False ' Tag prüfen (Bereich 1-31) If TT > 0 And TT < 32 Then ' Monat prüfen (Bereich 1-12) If MM > 0 And MM < 13 Then ' wenn Jahresangabe zweistellig If JJ < 100 Then ' wenn kleiner 30 If JJ < 30 Then ' Jahr 2000 annehmen JJ = 2000 + JJ Else ' Jahr 1900 annehmen JJ = 1900 + JJ End If End If ' wenn Tag größer als maximale Anzahl Tage ' im angegeben Monat If TT > Day(DateSerial(JJ, MM + 1, 1) - 1) Then ' Tagesangabe korrigieren TT = Day(DateSerial(JJ, MM + 1, 1) - 1) End If Result = True End If End If If Result Then ' wenn alles OK - Datum formatieren ' tt.mm.jjjj Datum = Format$(DateSerial(JJ, MM, TT), _ "dd.mm.yyyy") End If End If Else Result = True Datum = "" End If If Not Result Then Datum = "" CheckDatum = Datum End Function Dieser Tipp wurde bereits 39.993 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |