Domino 9 und frühere Versionen > Entwicklung
Formularprobleme
eknori:
Hallo Silver,
hab dir hier mal eine ganz simple Lösung erstellt
Sub Exiting(Source As Field)
On Error Goto notNumeric
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim account As String
Set uidoc = workspace.CurrentDocument
account = uidoc.FieldGetText( "Account" )
If Len(account) = 0 Then
Else
tmp% = Cint(account)
End If
' Feldlänge abfragen
If Len(account) > 3 Then
Msgbox "falsche feldlänge"
End If
' ende feldlänge prüfen
Exit Sub
notNumeric:
Msgbox "nicht numerisch"
Resume Next
End Sub
Im Code überprüfe ich beide Sachen NUMERISCH und die FELDLÄNGE. Musst nur eins von beiden weglassen.
zur Erläuterung:
Prüfung auf nicht numerisch; beim verlassen lese ich den Wert des Feldes "Account" ein und speichere den Wert in einer Textvariable. Dann wandle ich den String mittels CInt in einen numerischen Wert um. Enthält der Wert einen Buchstaben, erzeugt der Code einen fehler und verzweigt in die Fehlerbehandlung.
Feldlänge; hier prüfe ich mit len() die Länge. liegt diese über einen bestimmten Wert, gebe ich eine Fehlermeldung aus.
Silver:
Habe ich wirklich nur die Möglichkeit, den Feldwert auf Länge und numerische Zahl zu prüfen. Kann ich nicht angeben, dass nach den ersten zwei ziffern - die eingegeben wurden, ein Punkt gesetzt wird. Ebenso nach dem Monat (zwei Stellig)???
eknori:
Hallo Silver,
doch du kannst natürlich auch solche Sachen prüfen.
Mit dem Validierungstool geht das sogar vorzüglich ( und einfach, wenn man die Designelemente einmal eingebunden hat ) Auch im Exiting Event kannst du das realisieren. Du kanns sogar dem User die Eingabe in einer beliebeim Format gestatten und dann in der "Eingabeübersetzung" dei gewünschtes Format generieren.
Also zunächst prüfst du vielleicht, ob der User 6 Zeichen eingegeben hat, die auch alle numerisch sind und dann formatierst du die Eingabe so, wie du willst ( z.B. 12.34.56)
Alles kein Problem.
Aber dann solltest du mal genau posten, WAS du in WELCHER Form in deinem Feld stehen haben willst.
Ohne diese Angaben philosophieren wir hier noch bis zum St. Nimmerleins Tag.
eknori
Silver:
Da ich (noch) nicht so viel Plan von der ganzen Materie habe wäre ich Dir dankbar, wenn Du mir den jeweiligen Code aufzeigen könntest.
Wenn beispielsweise jemand 311202 eingibt, soll ausegeben werden: 31.12.2002
Wenn beispielsweise jemand 100599 eingibt, soll aber 10.05.1999 erscheinen. Muss ich hier ne Grenze setzten, wo 19.. und 20.. auftauchen muss? Wenn ja dann ab ..50 auf 20..!
Wir eingegeben 15042002 sollen eben nur noch die Punkte dazwischen gestellt weren (15.04.2002).
Mehr nicht! Ich bringe es aber einfach nicht hin.
eknori:
Nun denn, damit kann man doch was anfangen:
Kopiere diese Formel in die Eingabeumsetzung des Feldes, das du prüfen willst
fldValue:=@Trim(@ReplaceSubstring(Test;".";""));
tmp99:=@if(@Right(fldValue;2)="99";"1999";@Right(fldValue;4));
First2:=@Left(fldValue;2);
Next2:=@Middle(fldValue;2;2);
Period:=".";
First2+Period+Next2+Period+tmp99
damit sollte dein Problem zu lösen sein.
erstetze "Test" in der ersten Zeile durch den Namen deines Feldes.
Du kannst dann eingeben 010199 und es erscheint 01.01.1999
oder
01.01.2002 und es bleibt bei der Eingabe
auch 01.0199 ist möglich
eknori
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln