Autor Thema: Schlüsselwort in NotesRichTextItem durch Seitenumbruch ersetzen  (Gelesen 1712 mal)

Offline azique

  • Frischling
  • *
  • Beiträge: 40
Hallo,

ich habe eine Auswertung über verschiedene Dokumente der Datenbank und möchte an bestimmten Stellen einen Seitenumbruch einfügen, damit aus dieser Auswertung mehrere Seiten (nach z. B. Bereichen) generiert werden.

Jetzt dachte ich an NotesRichTextItem + NotesRichTextNavigator + NotesRichTextRange:
Code
Dim rti as New NotesRichTextItem(doc, "Body")
Dim rtn As NotesRichTextNavigator
Set rtn = rti.CreateNavigator()

call rtn.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
	
Dim rtr As NotesRichTextRange
Set rtr = rti.CreateRange()

Do While rtr.FindAndReplace("(PageBreak)","") > 0
%rem wenn das hier auskommentiert ist, funktioniert zumindest die Textersetzung, sodass die Schlüsselwörter entfernt sind
	Call rti.BeginInsert(rtr) ' hier schlägt sowohl rtr als auch rtn fehl
	Call rti.AddPageBreak()
	Call rti.EndInsert()
%endrem
Loop

Aber wenn ich das ausführe (nicht auskommentiert), kommt der Fehler
Zitat
Error 4506 Element or Navigator is invalid

Vielleicht habt ihr damit ja mehr Erfahrung und könnt einen kleinen Denkanstoß liefern.

Danke!
verbindlichst,
Johannes Pietsch


____________________
Ausbildung zum Fachinformatiker/Anwendungsentwicklung am 05.02.07 erfolgreich beendet.
Datenbankentwicklung für Lotus Notes 6.5, 7.0

Offline counteredge

  • Frischling
  • *
  • Beiträge: 2
  • Geschlecht: Männlich
  • Singer, sing me a song ...
Hallo,

habe deine Frage zufällig gesehen, weil ich auf der Suche nach der Lösung zu einem ähnlich gelagerten Problem war.

Mach die Suche nicht über
Code
	Call rtn.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
sondern mit
Code
	Call rtn.FindFirstString("(PageBreak)")

dann setzt du den Seitenumbruch mit 
Code
	Call rti.BeginInsert( rtNav, True )	
	Call rti.AddPageBreak()
	Call rti.EndInsert

Wie du das alles in eine Schleife verpackst, bleibt dir aber selbst überlassen   ;-))

Am Ende nimmst du dann noch eine einfache Variante zu deiner 'Do While' Schleife, um den String "(PageBreak)" zu löschen:
Code
	rtr.FindAndReplace("(PageBreak)", " ", 16)
   
Achte darauf, dass das zweite Argument ein Leerschritt ist, mit "" hat es bei mir nicht geklappt.
Die 16 am Ende ist der Long-Wert von RT_REPL_ALL und veranlaßt, dass alle im RichText Feld gefundenen Suchstrings ersetzt werden.



 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz