Benutzereingabe prüfen (Validieren der Benutzereingabe)

Wie kann man per 4D Programmcode (Funktion) eine Benutzereingabe überprüfen?
a) Ob ein Datum eingegeben wurde (30.03.2017 oder 30.03.17)
b) Ob nur eine Zahl eingegeben wurde (evtl. auch noch vierstellig)

Ich möchte sichergehen dass Benutzer korrekte Eingaben machen, die nicht zum Fehler führen

Beispiel:
vdRequestedDate:=Date(Request(“Gib das Datum ein:”;String(Year of(Current date)))))
vdRequestedNum:=Num(Request(“Gib eine Zahl ein:”;String(Current date)))

If …
ALERT(“Sie müssen das Datum korrekt eingegeben!”)

http://doc.4d.com/4Dv16/4D/16/Date.301-3035931.de.html

Product :4D - 4D Server v15
OS : Windows

Ich mache das üblicherweise so:
<code 4D>
$s:=Request(“Datum:”;String(Current date))
Case of
: (ok=0)
ALERT(“Abbruch durch Benutzer”)
: (IST_DATE_TTMMJJJJ ($s)=False)
ALERT(“Sorry, bitte ein Datum der Form ‘TT.MM.JJJJ’ eingeben.”)
Else
$dat:=Date($s)
End case

</code 4D>

Die Funktion IST_DATE_TTMMJJJJ sieht so aus:
<code 4D>
C_BOOLEAN($0) //true, wenn $1 ein Datum im Format “TT.MM.JJJJ” ist
C_TEXT($1) //z.B. “24.06.2013”
$0:=($1#"")
Case of
: (Length($1)#10)
$0:=False
: ($1[3]#".")
$0:=False
: ($1[6]#".")
$0:=False
: (IST_LONGINT (Substring($1;1;2))=False)
$0:=False
: (IST_LONGINT (Substring($1;4;2))=False)
$0:=False
: (IST_LONGINT (Substring($1;7;4))=False)
$0:=False
: (Num(Substring($1;1;2))<1)
$0:=False
: (Num(Substring($1;1;2))>31)
$0:=False
: (Num(Substring($1;4;2))<1)
$0:=False
: (Num(Substring($1;4;2))>12)
$0:=False
: (Num(Substring($1;7;4))<1900)
$0:=False
: (Num(Substring($1;7;4))>2100)
$0:=False
End case

</code 4D>

Sie benutzt die Funktion IST_LONGINT, die so aussieht:
<code 4D>
C_BOOLEAN($0) //true, wenn $1 eine Longint-Nummer ist
C_TEXT($1) //z.B. “0034”
C_LONGINT($i;$n;$b)
$0:=($1#"")
$n:=Length($1)
For ($i;1;$n)
$b:=Character code($1[$i])
Case of
: (($b>47) & ($b<58)) // 0 bis 9
: ($b=45) // Minus
If ($i>1)
$0:=False
End if
Else
$0:=False
$i:=$n
End case
End for

</code 4D>

Danke!

Hallo Herr Slavik,

nix zu tun am Wochenende? :mrgreen:

Ja, geht. Sie können mit den Listbox-Befehlen den aktuellen Status (Spaltenbreite, Position der Spalte etc) abfragen. Am besten, wenn der User die Form schließt.

Dann hat jeder User seinen Datensatz in einer Tabelle [Benutzer] und dort speichern Sie den Kram zusammen mit dem Namen der Form.

Wird die Form wieder geöffnet, in [Benutzer] nachsehen, ob für den was hinterlegt ist und falls ja, die Einstellungen laden und die Listbox entsprechend einstellen.

Sie können das auch in einem Objektdatensatz speichern, wenn Sie möchten…

Schicken Sie dem Kunden aber zuerst ein Angebot… umsonst ist das nicht.

Hallo Herr Schumacher,

ja ich sende mal ein Angebot :pray:

Danke für den Tipp. Ich bin leider wieder einmal krank aber ich möchte nicht im Bett liegen. Einfach zu langweilig. Da mache ich lieber etwas produktives :mrgreen:

Grüße