Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: SaSaWu am 03.04.08 - 12:45:16

Titel: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: SaSaWu am 03.04.08 - 12:45:16
Ich prüfe mittels folgender Eingabevalidierungsformel, ob das Feld IPN einen Wert aus der Ansicht "PNListe" enthält:

_Liste := @DbColumn("" : "NoCache" ; "" : "" ; "PNListe" ; 1);

@If(IPN="";@Success;

@If(@IsMember(@Text(IPN); _Liste) & @IsDocBeingSaved;
            @Failure("Die Parzellen-Nr. wird bereits verwendet, bitte geben Sie eine andere Nr. ein!");
            @Success))

Ich möchte die Prüfung unterbinden, wenn das Feld IPN in der vorherigen (letzten) Bearbeitung nicht geändert wurde. Wie kann ich das erreichen?
Titel: Re: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: Glombi am 03.04.08 - 12:56:28
Wenn es alles in Formelsprache bleiben soll: Erstelle nach dem Feld "IPN" ein neues Feld "IPNAlt".
Das Feld sollte verborgen sein und Berechnet beim Anzeigen mit der Formel:
@If(IPNAlt != "";IPNAlt;IPN)

Deine Validierung beginnt dann so
@If(
IPN = "";@Success;
IPNAlt = IPN;@Success;
...

)

Andreas
Titel: Re: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: Axel am 03.04.08 - 12:57:26
Ich würde das Ganze mit Script im QuerySave-Event machen.

Beim Laden der Maske schreibst du den Feldinhalt in eine Variable und beim Speichern vergleichst du den aktuellen Feldinhalt mit dem Inhalt der Variablen. Sind sie unterschiedlich, wurde das Feld geändert und dann kannst du die Prüfung durchführen.


Axel
Titel: Re: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: koehlerbv am 03.04.08 - 13:07:26
Stefan, mich erinnert das wieder an eines Deiner letzten Postings:
Ich glaube, ich muss endlich mal ins Thema "Script" einsteigen!

Es wird Zeit ...  ;) Andreas' Variante funktioniert natürlich, aber Du stösst nun dauernd an Grenzen, manches gerät mit purer Formelsprache zum unnötigen Krampf, und vor allem: Extrem viele Möglichkeiten entgehen Dir.

Wegen Literatur: Die Herdt-Sachen sind sehr gut. Wenn Dir die Sprache egal ist (was immer ideal ist, gerade im Notes-Umfeld): Die schon erwähnte Programming Bible. Wenn Du antiquarisch noch darankommst: Anthony Patton's "Practical LotusScript" - das Teil ist hervorragend. U.U. könnte ich Dir das auch leihweise zur Verfügung stellen.

Bernhard
Titel: Re: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: SaSaWu am 03.04.08 - 13:12:44
Danke für Eure Antworten und an Bernhard: Ich weiß, ich weiß! Bin geläutert...

Ich habe mir auch schon ein Herdt-Buch bestellt. Danke auch für das Angebot der Leihe, werde mich aber erstmal der deutschen Literatur zuwenden.
Titel: Re: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: SaSaWu am 03.04.08 - 18:06:59
Ich würde das Ganze mit Script im QuerySave-Event machen.

Beim Laden der Maske schreibst du den Feldinhalt in eine Variable und beim Speichern vergleichst du den aktuellen Feldinhalt mit dem Inhalt der Variablen. Sind sie unterschiedlich, wurde das Feld geändert und dann kannst du die Prüfung durchführen.


Axel


Danke, so klappt's!
Titel: Re: Eingabevalidierung nur bei Feldänderung durchführbar?
Beitrag von: LN4ever am 06.04.08 - 14:34:24
In Version 5 gibt es die unschönen Reaktionen von CFD-Feldern (=Computed for Dsiplay), daß sie gerne ihre Wertzuweisung vergessen, wenn man Maskenaktualisierungen (RECALCS, z.B. beim Aktualisieren nach Schlüsselwortänderungen) NACH dem Aufruf einer Dialogbox macht.

Im Klartext heißt das: mit Formelsprache wird das im Großen und Ganzen funktionieren, im Kleinen und Genauen aber manchmal auch nicht.

Und wenn das eine häufiger benötigte Datenbank ist, dann ist der mit Fehlersuche und -behebung verbundene Aufwand, der dich in den nächsten zwei Jahren erwartet, größer als das Einlesen in die Fundamentals von LotusScript.

Irgendwann ist immer das erste Mal. Trau dich. Die Aufgabe ist geeignet für einen Einstieg.

Gruß

Norbert