Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: my head am 18.08.04 - 11:33:38

Titel: rich text eingabevalidierung
Beitrag von: my head am 18.08.04 - 11:33:38
hallo!

wie kann ich im frontend überprüfen, ob in einem richtext-feld text oder eine angehängte datei ist??? das ganze bräuchte ich mit script...

danke
Titel: Re:rich text eingabevalidierung
Beitrag von: HarryB am 18.08.04 - 14:29:20
Code
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem

'...doc auswählen

Set rtitem = doc.GetFirstItem("Body")
If (rtitem.EmbeddedObjects = Empty) Then

  'keine Anhänge vorhanden

Else

  'Anhänge vorhanden

End If

Viele Grüße
Harry
Titel: Re:rich text eingabevalidierung
Beitrag von: my head am 18.08.04 - 15:09:04
gib es eine möglichkeit mit uidoc
Titel: Re:rich text eingabevalidierung
Beitrag von: Tode am 18.08.04 - 15:10:47
das von Harry genannte Script funktioniert leider erst nach dem Speichern....

Da es hier um eine Eingabevalidierung geht, bleibt Dir nur der Umweg über

@AttachmentNames (für Attachments) und einem extra- Feld mit @Abstract() wobei ich bei Abstract nicht sicher bin, ob das nicht auch erst NACH dem speichern gefüllt ist...

HTH
Tode
Titel: Re:rich text eingabevalidierung
Beitrag von: HarryB am 19.08.04 - 10:34:18
das von Harry genannte Script funktioniert leider erst nach dem Speichern....

Wirklich? Ich meine auch schon Zugriff auf das Backend Dokument erlangt zu haben, wenn das Dokument noch nicht gespeichert ist. Auf das Backend Dokument bekommt man per uidoc.Document spielend.

Viele Grüße
Harry
Titel: Re:rich text eingabevalidierung
Beitrag von: Semeaphoros am 19.08.04 - 10:36:09
Zugriff auf das in-memory-backend-doc ist nicht das Problem, das Tode hier meint, es ist die Frage, wie aktuell das Backend-Doc ist, solange nicht gespeichert wurde.
Titel: Re:rich text eingabevalidierung
Beitrag von: HarryB am 19.08.04 - 10:43:42
Zugriff auf das in-memory-backend-doc ist nicht das Problem, das Tode hier meint, es ist die Frage, wie aktuell das Backend-Doc ist, solange nicht gespeichert wurde.

Du meinst, es ist ein Unterschied ob ich von vorn (Frontend) oder von hinten (Backend) auf dieselben Speicherzellen im Speicher zugreife? Ich meine, das sollte kein Unterschied sein.

Angenommen, ich habe Zugriff auf ein bereits gespeichertes Dokument per uidoc, welches auch aktuell geändert wurde, wobei die Änderungen nicht gespeichert wurden. Wenn ich jetzt den Zugriff über die Backend Klasse per uidoc.Document vornehme, habe ich dann im Backend die Daten des noch nicht gespeicherten, im Speicher befindlichen Dokumentes oder die Daten des (veralteten) Dokumentes auf der Festplatte?

Viele Grüße
Harry
Titel: Re:rich text eingabevalidierung
Beitrag von: Semeaphoros am 19.08.04 - 11:20:16
Nö, das sind nicht dieselben Speicherzellen, die Sache ist hochkompliziert.
Titel: Re:rich text eingabevalidierung
Beitrag von: Tode am 19.08.04 - 14:07:42
@HarryB:

Wenn es sich um Richtext-Inhalte handelt, hast Du TASTSÄCHLICH die Inhalte des zuletzt gespeicherten (auf Platte befindlichen) Dokumentes und NICHT die Inhalte dessen, was Du gerade auf dem Screen siehst.

Alle anderen Felder werden wohl in Echtzeit auch im Backenddokument hintlerget, bei Richtextfeldern geht das NICHT.

Es hibt deshalb seit R5 einen Befehl, der da lautet uidoc.Refresh( [ IncludeRichTextItems ] )

Der holt tatsächlich die Inhalte des Frontends auch für Richtextfelder ins Backend... Der Befehl hat nur einen klitzekleinen Schönheitsfehler:
Er speichert das Dokument ab...

Mach mal folgendes: schreib mal in ein Querysave einer Testmaske (nur ein RT-Item ) folgende zwei Zeilen:

Call source.Refresh( True )
Continue = False

und Du wirst feststellen, dass die Änderungen, die Du machst TROTZDEM gespeichert werden...
Für eine Validierung ist das refresh = True also vollkommen sinnlos.

... zumindest war das bis vor kurzem noch so... ich habe das gerade in 6.5.2 getestet: DIE FUNKTION KLAPPT ENDLICH ! Ich fasse es nicht...
Kommando zurück... ich behaupte das Gegenteil... muss jetzt doch mal in den Releasenotes stöbern und schauen, ab welcher Version das refresh das Dokument nicht mehr implizit speichert...

Gruß
Tode
Titel: Re:rich text eingabevalidierung
Beitrag von: Semeaphoros am 19.08.04 - 14:25:49
Wenn ich mich richtig erinnere, war die Methode schon längere Zeit da, hatte aber einen kritischen Bug drin, den die lieben Kollegen@Iris lange nicht beheben konnten :(
Titel: Re:rich text eingabevalidierung
Beitrag von: Tode am 19.08.04 - 14:34:59
@semeaphoros:
Du liest heute grundsätzlich nur die Hälfte, oder !? ;D

Der Bug war zunächst (frühe 5er Versionen <5.0.8) der, dass es schlicht und ergreifend nicht funktioniert hat. Ob der Schalter gesetzt war oder nicht, war ihm schnurz egal.

Nachdem es dann funktioniert hat, war der Bug, das ein uidoc.Refresh( True ) mit diesem Befehl gespeichert wurde... hat man also Änderungen vorgenommen, dann ein refresh aufgerufen, und das Dokument OHNE zu SPEICHERN geschlossen, dann waren die Änderungen trotzdem im Dokument...
Das war bis EINSCHLIESSLICH 5.0.11 der Fall..
später habe ich das nie mehr ausprobiert...
Erst heute habe ich das mal mit 6.5.2 getestet, und siehe da: der bug scheint stillschweigend (in den Release- Notes steht nix davon) behoben worden zu sein: refreh( true ) funktioniert endlich so, wie er soll...

Dann muss ich ab sofort meine Kommentare zu validation / Richtext ändern...

Gruß
Tode