Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Monster am 30.01.03 - 14:02:48

Titel: Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 30.01.03 - 14:02:48
Hallo Admins,

kann mir jemand von Euch sagen, wie ich mit Hilfe von LotusScript,
aus einem NotesUIDocument das Body-Feld auslesen kann.


Gruss
Monster
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Axel am 30.01.03 - 14:16:40
Hi,

ich gehe davon aus das du ein RTF-Feld meinst. Versuch's mal so

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim item As NotesItem
Dim contents As String

Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

Set item = doc.GetFirstItem( "Body" )
contents = item.Text

Damit kannst du allerdings nur Text auslesen.


Axel
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Till_21 am 30.01.03 - 14:19:16
...und es darf kein neues dokument sein...

gruss
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 30.01.03 - 14:50:03
Danke für die schnelle Hilfe ,

die Version von @Axel habe ich getestet ,
funktioniert aber nur bei normalen Text-Feldern ,
nicht bei Richtext ( Body-feld ).

Geht leider nicht.

-----------------
Hi @Till_21
ich möchte einfach das Body-Feld auslesen und ein neues Dokument mit diesem BodyInhalt in die Mail.box ablegen.

Gruss

Amonster
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: ata am 30.01.03 - 16:21:46
... mit Abstract bekommst du den Text des Feldes...

... doch eie bereits gesagt, bei neuen Dokumenten geht das nicht. Rich-Text funzt erst nach der Speicherung und muß für die Anzeige erneut ins Forntend geladen werden...

ata
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 30.01.03 - 16:25:21
genau ,

das ist ja mein Problem,
gibt es da eine Löung und wie ????

Gruss

monster
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 30.01.03 - 16:35:09
Oder

wie kann ich das gespeicherte UIDoc gleich wieder löschen?

1. Speicher das UiDoc
- damit ich an das Bodyfeld komme
2. Lösche das UiDoc
- mit uidoc.DeleteDocument erhalte ich eine Fehlermeldung

Bitte HILFEEEEEEE

Gruss
Monster
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: ata am 30.01.03 - 16:53:11
.... solange das aktive Dokument das UIDoc ist, kannst du es über uidoc nicht löschen. Du speicherst das Backend-Dokument (docThis) , merkst dir die UniversalID, schließt das uidoc, jetzt kannst du es im Backend löschen...

ata
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 30.01.03 - 16:55:57
hast du ein Beispiel - Code,

wäre Super.

DANKE

 ;)
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: ata am 30.01.03 - 17:00:12
... muß ich zu Hause stöbern, bin noch bei Arbeit...

ata
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 30.01.03 - 17:06:07
wäre Super,

in der Hilfe finde ich nichts
 :(

Monster
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: ata am 30.01.03 - 19:49:53
... daß du in der Hilfe nichts findest wundert mich, denn da ist alles drin - ich hatte meinen Code mit der Hilfe zusammengestupft...

ata
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: ata am 30.01.03 - 20:14:53
... bevor ich lange zu suchen anfange...

Code
' # Text aus einem Richtextfeld - hier "Body" - des aktuellen Dokumentes einlesen
' # ... bitte beachten - Zeilenumbrüche und Formatierungen gehen dabei verloren
' # ... ata
   Dim ws As New NotesUIworkspace
   Dim docThis As NotesDocument
   Dim rtItem As NotesRichtextItem
   Dim sContent As String
   '
   Call ws.CurrentDocument.Save
   Set docThis = ws.CurrentDocument.Document ' # das aktuelle Dokument ins Backen nehmen
   Set rtItem = docThis.GetFirstItem("Body")
   If rtItem.Type = 1 Then ' # Sicher stellen, daß es ein Richtext-Feld ist
      sContent = rtItem.Abstract( 64000  , False , False)
   End If

ata
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: Monster am 31.01.03 - 10:10:43
Hallo @ata,

Das Problem bei dem Script ist,
er speichert das Dokument.

Ich hatte gedacht du kannst mir mit einem Script helfen,
was anschliessend das gespeicherte Dokument wieder löscht.

Und dazu finde ich nichts in der Hilfe.

Gruss

Monster
Titel: Re:Aus UIDocument das Body-Feld auslesen
Beitrag von: ata am 31.01.03 - 14:40:31
... sorry, das war natürlich nur die Haälfte der Wahrheit...

... dazu mußt du noch einen Agenten anlegen (Run once...), den ich im Script "DelDoc" nenne. Dort wird aus der Notes.ini die zu löschende DocID in der Variablen "DelDocID" ausgelesen und das Dokument gelöscht. Der Agent wird zum Ende deines Scriptes aufgerufen...

... der Code für den Agent "DelDoc" ins Initialize setzen - darauf achten, daß der Agent gemeinsam sein soll...
Code
   Dim session As New NotesSession
   Dim dbThis As NotesDatabase
   Dim doc As NotesDocument
   Dim sID As String
   
   Set dbThis = session.CurrentDatabase
   sID = session.GetEnvironmentString("DelDocID" , False)
   Set doc = dbThis.GetDocumentByUNID(sID)
   Call doc.Remove(True)
   Call session.SetEnvironmentVar("DelDocID" , "")   


... hier der korrigierte Code zum auslesen des Feldes und aufrufen des Agenten...
Code
' # Text aus einem Richtextfeld - hier "Body" - des aktuellen Dokumentes einlesen
' # ... bitte beachten - Zeilenumbrüche und Formatierungen gehen dabei verloren
' # ... ata
   Dim session As New NotesSession
   Dim ws As New NotesUIworkspace
   Dim dbThis As NotesDatabase
   Dim agent As NotesAgent
   Dim docThis As NotesDocument
   Dim rtItem As NotesRichtextItem
   Dim sContent As String
   '
   Call ws.CurrentDocument.Save
   Set docThis = ws.CurrentDocument.Document ' # das aktuelle Dokument ins Backen nehmen
   Call session.SetEnvironmentVar("DelDocID" , docThis.UniversalID)
   Set dbThis = docThis.ParentDatabase
   Set agent = dbThis.getAgent("DelDoc")
   
   Set rtItem = docThis.GetFirstItem("Body")
   If rtItem.Type = 1 Then ' # Sicher stellen, daß es ein Richtext-Feld ist
      sContent = rtItem.Abstract( 64000  , False , False)
   End If   
   
   Call ws.CurrentDocument.Close
   Call agent.Run