FIndAndReplace im RichTextItem will nicht so wie ich will

  • Hallo,


    ich wollte mal eben eine kleine DB erstellen, wo man so eine Art Serienbriefe erstellen kann, da wir im wesentlichen unsere Adressen in Notes pflegen.
    Dafür habe ich mal eine DB erstellt, wo man angeben kann aus welcher DB die Adressen kommen sollen.
    Dann kann man noch eine Art Vorlage generieren, wo ähnlich zum Wordserienbrief, Infos über die Felder hinterlegt werden können, die aus den Adressdaten kommen.


    Hier mal ein Beispiel einer Vorlage:


    Sehr geehrt
    @F:@If(Title = "Mr.";"er"; Title = "Ms."; "e"; ".."):F@
    @F:@If(Title = "Mr."; "Herr"; Title = "Ms."; "Frau"; ".."):F@
    @F:@If(@Trim(FirstName) <> ""; @Trim(FirstName) + " "; "") + @Trim(LastName):F@


    anbei erhalten Sie wie gewünscht die Informationen


    Dabei sind die Sachen, die zwischen @F: und :F@ kommen, die Platzhalter für die Adressinfos.
    Wenn hinter dem @F: ein @ kommt, handelt es sich um eine Formel und ich mache ein evaluate. Andernfalls ist das ein normales Notesfeld und ich hole mir die Infos aus dem angegebenen Feld.


    Soweit so gut.
    Folgenden Code habe ich dafür:


    Dabei wird immer ein "noteDest" für jeden Datensatz erstellt. "noteSrc" ist mein Dokument, wo die Vorlage mit o.a. Formel angegeben ist.
    Dann gehe ich soweit durch die Vorlage durch, so lange ich ein "@F:" finde. Danach ein Evaluate oder eben der Wert im Notesfeld. Und danach ein FindAndReplace auf dem RichTextNavigator.



    Aber jetzt kommt das Problem.


    Wenn ich die Vorlage wie o.a. einpflege, klappt alles wunderbar und das kommt raus:


    Sehr geehrt
    er
    Herr
    Max Muster


    anbei erhalten Sie wie gewünscht die Informationen.


    Wenn ich nun allerdings die Texte in eine Zeile schreiben will und die Vorlage so aufbaue:


    Sehr geehrt@F:@If(Title = "Mr.";"er"; Title = "Ms."; "e"; ".."):F@ @F:@If(Title = "Mr."; "Herr"; Title = "Ms."; "Frau"; ".."):F@ @F:@If(@Trim(FirstName) <> ""; @Trim(FirstName) + " "; "") + @Trim(LastName):F@


    anbei erhalten Sie wie gewünscht die Informationen


    dann kommt das hier raus:


    Sehr geehrter @F:@If(Title = "Mr."; "Herr"; Title = "Ms."; "Frau"; ".."):F@ @F:@If(@Trim(FirstName) <> ""; @Trim(FirstName) + " "; "") + @Trim(LastName):F@


    anbei erhalten Sie wie gewünscht die Informationen


    Es sieht so aus, als wenn er nur die erste Formel findet und ersetzt, wobei die Messagebox 3 x auftaucht und da auch alles wunderbar drin steht.


    Ich vermute mal, dass mit meinem Navigator bzw der Range was nicht stimmt. Aber was?

  • Wenn ich das mal wüsste.
    Ehrlich gesagt hab ich den Aufbau eines RichText Items noch nicht ganz verstanden.


    Ich habe ein RichTextItem, erstelle mir einen RichTextNavigator. und dann?
    Mein Ziel ist es quasi "nur" Text zu ersetzen.
    Muss ich dann ein FindFirstElement mit TextParagraph oder TextRun machen?
    Wenn ich das gemacht habe, wie geht es dann mit der Range weiter?

  • Kommt immer darauf an wie dein Text mit Formatierungen, Absätzen, Paragraphen,.... aufgebaut ist.


    Wenn es aber nur darum geht Text einzufügen ohne besondere Formatierungen, dann speicher doch die Vorgabe in einem Textfeld und ersetze dann dort die Bausteine per Replace Funktion und füge das Ergebnis mit entsprechenden zeilenumbrüchen in das RichText Feld ein

  • Naja, vom Prinzip soll das eine Serienbrief-DB werden.
    D.h., Benutzer geben Ihren Brief ein und der wird mit Tags versehen, wo Infos aus Notes-DBen eingefügt wird.


    Und da die Benutzer ja erfinderisch sind in dem, was sie eingeben können. Ist der Text mit Sicherheit von Formatierungen, Tabellen usw. nur so gespickt.


    Das dürfte dann wohl nicht ganz trivial sein mit den Navigator, Range & Co Komponenten ins Skript zu lösen oder?