Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Cobi am 16.10.07 - 17:12:40

Titel: Feldinhalt Format vorgeben
Beitrag von: Cobi am 16.10.07 - 17:12:40
Nabend zusammen,

kurze Frage. Ist es Möglich ein Textfeld auf Formatierung zu überprüfen. Also sagen wir der User darf nur so Blöcke eingeben: 123 4AD 3T3 ?

Wenn ja wie und wo würdet ihr das realisieren? In der Eingabeumsetzung Option?

Grüße
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: guesswho am 16.10.07 - 19:17:37
Hallo Cobi,

eigentlich nicht, unter "Eingabeumsetzung" kannst du das abprüfen und eventuell ändern in "123-123-123" (vor dem Speichern).

Wenn du vor dem Speichern den Benutzer anmeckern willst, musst du das unter "Input Validation/Eingabevalidierung" tun. Da kannst du das Format der Eingabe prüfen und die weitere Arbeit mit z.B. @Failure verweigern oder mit @Success fortsetzen.

Jo
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Cobi am 17.10.07 - 08:55:58
Guten Morgen Jo,

Okay anmeckern bei der Eingabe hört sich super an   :-P

Wie überprüfe ich denn das Format? Kannst du mir da auch einen Tip geben? Habe in der Designer Hilfe noch nichts gefunden...

Grüße
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Glombi am 17.10.07 - 08:58:38
Können es beliebig viele Blöcke sein?
Falls nicht (und die Anzahl klein genug ist) würde ich separate Felder machen und dann mit @Length die Zahl der Stellen abfragen.

Ansonsten:
Mit @Explode(...; " ") in Mehrfachwerte umwandeln und dann mit @Length die Elemente zählen.

Andreas
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: guesswho am 17.10.07 - 17:56:44
Hallo Cobi,

um genau zu sein: anmeckern NACH der Eingabe, während der Eingabe ist das auch möglich aber schwieriger....

Bist du eigentlich weitergekommmen ?

Eine Rückinfo wäre erfreulich, auch ein Vorname wäre nett

Viele Grüsse
Jo
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: koehlerbv am 17.10.07 - 18:13:32
Zitat
Also sagen wir der User darf nur so Blöcke eingeben: 123 4AD 3T3

Das ist ja noch etwas "lau", Tanja. Meinst Du damit einen skalaren Wert, der aufgeteilt ist in drei mal drei Zeichen, jeweils getrennt durch ein Leerzeichen? Das ist noch unaufwändig in der Input Validation mit @functions zu erledigen.
Wenn es komplexer werden soll, geht da noch mehr via LotusScript (PostRecalc- und QuerySave-Event, das dann vielleicht noch in Verbindugn mit dem Exiting-Event oder - bei wenig Feldern - der Maskeneigenschaft, dass immer alle Felder bei Änderungen neu durchzurechnen sind).

Mehr Input, mehr Output.

Bernhard
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: guesswho am 17.10.07 - 19:14:42
ok Bernhard kennt Ihm  ;D

aber : für Tanja's bin ich sonst überall zuständg, vielleicht kann ich das hier auch durchsetzen  ;D

Jo
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Cobi am 18.10.07 - 09:02:56
Guten Morgen :-)

also der aufbau des Wertes ist immer so: 123 456 7A 890 123  --> ist das skalar? Es ist sozusagen eine Bezeichnungsnummer, die der Übersicht halber in die 4 dreierblöcke und den einen 2er Block getrennt mit Leerzeichen eingegeben werden soll.

Frohes Schaffen.

Tanja
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: bikerboy am 18.10.07 - 13:49:22
So jetzt noch die frage soll dann nur gemeckert werden oder soll er es korrigieren wenn es nicht mit leerzeichen eingetragen wurde, aber die nummer soweit korrekt ist ?
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Glombi am 18.10.07 - 13:59:19
So könnte es aussehen:

@If(
 @Length(@Explode(Feld;" ")) != 3:3:2:3:3;
   @failure("So nicht!!!");
 @Success
)
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: flaite am 18.10.07 - 14:03:06
Ich würd das in Skript machen.

Trennen in Blöcke.
zb:
Code
  Dim ret As Variant
   dim teststr as string
   Dim delim As String
   teststr = "123 456 7A 890 123"
   delim = " "
   ret = split(teststr, delim)
   For x = 0 to Ubound(ret)
      ret(x) = Trim(ret(x)) ' SO  EIN TRIM WÜRD ICH AUF JEDEN FALL EINBAUEN. Für die Leute, die aus Versehen 2 statt 1 Leerzeichen eingeben.  
      Print ret(x)
   Next
a) Prüfe, ob Anzahl der Blöcke wie erwartet. (Ubound(ret)
b) Prüfe, ob in jeweiligen Block erwartete Anzahl an Zeichen (Len Funktion).
c) Prüfe ob richtige zeichen in den einzelnen Blöcken (müßt ich jetzt nachschlagen).
 
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Glombi am 18.10.07 - 14:07:46
Falls nur  bestimmte Zeichen wie A,...,Z und 1,...,9 vorkommen sollen, dann kann man noch ein @Matches(Feld;"{A-Z}") und @Matches(Feld;"{0-9}") einbauen.
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: bikerboy am 18.10.07 - 14:16:59
Habs in @function gemacht  ::)

Code
_value := feldName;
@If(@Right(@Left(_value;4);1) != " ";@Failure("Bitte geben sie die Nummer im richtigen Format ein");
	@If(@Right(@Left(_value;8);1) != " " ;@Failure("Bitte geben sie die Nummer im richtigen Format ein");
		@If(@Right(@Left(_value;11);1) != " ";@Failure("Bitte geben sie die Nummer im richtigen Format ein");
			@If(@Right(@Left(_value;15);1) = " " ; @Success ; @Failure("Bitte geben sie die Nummer im richtigen Format ein")))));
		
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: koehlerbv am 18.10.07 - 14:24:01
Deren Mächtigkeit spricht hier wirklich für @functions. Der Vergleich zwischen Roberts und Andreas' Code zeigt, was da geht  ;)

Bernhard
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: flaite am 18.10.07 - 15:34:44
Kommt drauf an. Obwohl in diesem Fall Formelsprache zugegeben Sinn machen kann. Warum benutzt du dann nicht die Funktion von Glombi?
Problem von Formelsprache ist, dass der Code ziemlich verstreut ist und man so ziemlich gute Ytria (spell?) und Teamstudio skills benötigt, um den Überblick zu behalten. 
Mit Skript könnte man eine modulare Validierungsbibliothek aufbauen, obwohl die auch leicht unübersichtlich wird.
Falls ich das richtig sehe, erlaubt dein Validierungscode die Eingabe von 15 Lehrzeichen  ;D
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Glombi am 18.10.07 - 15:40:05
Ich habe auch schon die eine oder andere Datenbank gesehen, wo der Scriptcode ziemlich verstreut war.  ;)

Apropo Script-Bibliotheken: Da habe ich letztens den Wink bekommen, dass das ein ziemlicher Bremsklotz sein kann, wenn man in Ansichten Aktionen verwendet, die Libraries benutzen. Daher besser immer Agenten aufrufen in den Aktionen  - aber das nur am Rande...

Andras
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: koehlerbv am 18.10.07 - 16:14:42
Genauso gut kann der Agent dann den Bremsklotz spielen, Andreas. Es kommt bei beiden Verfahren darauf an, wie man es macht und ob man ein guter Architekt ist (oder nicht).  ;)

Bernhard
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Glombi am 18.10.07 - 16:23:44
Es ist so: Wenn Du eine Ansicht öffnest und dort sind Aktionen drin, die SLs enthalten, dann wird der gesamte Code der SLs geladen - unabhängig ob die Aktion verwendet wird. So habe ich es jedenfalls verstanden.
Vielleicht gilt das aber auch nur für gemeinsame Aktionen - ich muss das mal beizeiten genauer ansehen.

Wenn die Aktionen einen Agenten aufruft, lädt der ja dann erst zur Laufzeit den ganzen Code.

Andreas
Titel: Re: Feldinhalt Format vorgeben
Beitrag von: Cobi am 19.10.07 - 11:29:44
Ihr seid ja echt verrückt :-)

danke für eure Hilfe. Der Code von Andreas sollte eigentlich ausreichen für das was ich mir bisher überlegt habe. Hatte noch keine Gelegenheit es zu probieren, aber ich denke das passt dann schon.

einen schönen Tag und schönes Wochenende vorallem!