Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Löschen von Wert in Textfeld unterbinden

Begonnen von jagger, November 19, 2018, 21:27:46

⏪ vorheriges - nächstes ⏩

jagger

@MzKlMu,
man soll es ändern können. Löschen aber nicht.
Wenn in dem Feld ein Wert steht, der kein Datumswert ist
(12.01 oder 09. oder "") kommt die Fehlermeldung:
"Der Fokus kann von Microsoft Access nicht auf das Steuerelement |1 verschoben werden."
Die Meldung kommt, wenn man das entsprechende Datum, oder einen Teil davon, markiert und dann "Entf" oder "Backspace" drückt.
Weil:Private Sub tDate_Change()
Me.sprungfeld.SetFocus
End Sub

Kurios ist, dass wenn ich mit Dim Test As String
Test = Nz(Me![tDate])
If Len(Test) = 10 Then
MsgBox Test

der Wert von [tDate] abfrage, da immer noch das komplette Datum steht (siehe Bild), er aber dann (durch .SetFocus) die Fehlermeldung kommt.  :-\
Weil ja durch das ".SetFocus" das "schlechte" Datum gespeichert wird. Das müsste man abfangen.
Nur hab ich weder die richtige Stelle, noch das entsprechende "wenn" gefunden.

LG
jagger



MzKlMu

Hallo,
unter diesen Bedingungen würde ich für das Datumsfeld nur zulässige Zeichen (0-9 und .) zulassen. Dann kann markiert und die Zahlen benutzt werden. Aber Entf und BS geht nicht.
Die Zeichenauswahl wir im Ereignis "Bei Taste" des Feldes gemacht, indem der ASCII Code ausgewertet wird.
Gruß Klaus

jagger

#17
Hallo MzKlMu,

Dein letzter Tipp ist die Lösung!!!
Private Sub tDate_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
      Case 48 To 57  ' 0-9 zulassen
      Case 46        ' . zulassen
      Case Else      ' alles andere ablehnen
         KeyAscii = 0
   End Select
End Sub


Mit Private Sub tDate_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
         Case Else      ' alles andere ablehnen
         KeyAscii = 0
   End Select
End Sub

kann man jetzt nur noch mit DatePicker arbeiten.
Falsche Eingaben (ungültige Formate) sind jetzt ausgeschlossen  ;D


Vielen Dank!
LG
jagger

Beaker s.a.

@jagger
Im zweiten Code brauchst du kein Select Case mehr, -
Private Sub tDate_KeyPress(KeyAscii As Integer)
         KeyAscii = 0
End Sub

reicht da.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

jagger

@Beaker,
Zitat von: Beaker s.a. am November 21, 2018, 13:59:51
@jagger
Im zweiten Code brauchst du kein Select Case mehr, -
Private Sub tDate_KeyPress(KeyAscii As Integer)
         KeyAscii = 0
End Sub

reicht da.

Okay, Danke.
Ich habe es geändert.
LG
jagger