Domino 9 und frühere Versionen > Entwicklung

Formularprobleme

<< < (6/10) > >>

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