Hallo,
schlage mich jetzt doch schon eine Weile mit einem Problem beim kopieren von RichTextFeldern herum. Habe bereits auch hier im Forum und auch sonst im Netz gesucht, doch leider hat bisher jede vermeintlich gefunden Lösung einen unerwünschten Nebeneffekt gehabt.
Ausgangssituation:
Es gibt in der DB bzgl. Kundenkontakte. Einmal im Jahr wird mit dem Kunden ein JahresGespräch (Dokument docGespr) über alles mögliche geführt. Der Mitarbeiter hat außerdem die Möglichkeit bestimmte Themen auszuwählen, dann werden diese Felder (RichTextFelder) angezeigt und er kann dort seine Notizen oder eben auch Bilder (Hardcopys von Bildschirmausschnitten) eingeben. Wird unter dem Jahr mit dem Kunden über ein bestimmtes Thema gesprochen, so wird dies in einem andern Dokument (docKontakt) festgehalten. Dazu gibt es im docKontakt ein RichTextFeld in welchem einfach immer Text oder Bilder hinzugefügt werden. Hier ein Beispiel (Bild Kundenkontakt) wie das Feld im Kundenkontakt dargestellt wird. Wird im Jahresgespräch über ein bestimmtes Thema gesprochen, so soll die Möglichkeit über eine Schaltfläche bestehen, für dieses Thema einen Kontakt anzulegen, wenn zu diesem Thema noch kein Kontakt vorhanden ist, ansonsten soll im vorhandene Kontakt im RichtTextfeld einfach die Information hinzugefügt werden.
Mein Problem:
Habe eine Schaltfläche erstellt, welche prüft um im docGespräch ein bestimmtes Thema (Betreff) angesprochen wird, wenn ja, wird geprüft ob es ein entsprechendes docKontakt gibt. Wenn nein, wird ein neuer Kontakt erstellt, ansonsten der vorhandene Kontakt her genommen und in das entsprechende Feld der Inhalt aus dem docGespr übernommen. So weit funktioniert das auch, bis auf dem Fall, wenn ich im RichTextFeld im docGespr Dokument die "ENTER" Taste verwende (bei "Shift"+"Enter" kein Problem). Dann wird beim Übertragen ins docKontakt alles nach dem "Enter" weggelassen und sogar der alte Inhalt aus dem docKontakt wird nicht mehr übernommen. Siehe Bilder docGespr, KundenkontaktOhneEnter und KundenkontaktMitEnter.
Hier noch mein Code aus der Schaltfläche, welcher die RichTextFelder übertragen sollten
Sub RichTextFeldÜbertragen (Betreff As String)
%REM
Deklaration aus (Declarations) von (Globals) aus der Maske docGespr
Dim docKontakt As NotesDocument -> Dokument für Kundenkontakte
Dim testValue As Variant
Dim docGespr As NotesDocument -> Dokument fürs Jahresgespräch
Dim rtitemG As Variant
Dim rtitemKold As Variant
Dim rtitemKnew As Variant
Dim rtitemBericht As notesrichtextitem
Dim rtitemBerichtK As Variant
Dim item As NotesItem
%END REM
If docGespr.HasItem(Betreff) Then 'es gibt das Betreff Feld im Gesprächsdokument
testValue=docGespr.GetItemValue(Betreff)
strBericht=testValue(0)
If strBericht <> "" Then ' ist Feld gefüllt?
strBereich= lstBereich(Betreff) ' Bereff auslesen
strInfo="> " +strDatum + " " + user + " Intensivierungsgespräch:" + Chr(10)
strKey=uidocIn.FieldGetText("Ndg")+strBereich
Set rtitemG=docGespr.GetFirstItem(Betreff) 'Richtextitem aus Gespäch holen
Set docKontakt=view.getDocumentbyKey(strKey,True) ' Gibt es ein Kontaktdokument zu diesem Thema/Betreff
If docKontakt Is Nothing Then 'diesen Kontakt gibt es nicht -> neuen Kontakt erstellen
Dim docNew As NotesDocument
Set docNew=New NotesDocument(db)
docNew.Form="Bericht"
docNew.Ndg=uidocIn.FieldGetText("Ndg")
docNew.BetreffBericht=strBereich
Set rtitemBericht=docNew.createrichtextitem("Bericht")
richStyle.NotesColor=COLOR_DARK_RED
Call rtitemBericht.AppendStyle(richStyle)
Call rtitemBericht.AppendText(strInfo)
richStyle.NotesColor=COLOR_DARK
Call rtitemBericht.AppendStyle(richStyle)
Call rtitemBericht.AppendRTItem(rtitemG)
Call rtitemBericht.AddNewline(2,False)
Call docNew.save(True,False)
Else 'If docKontakt Is Nothing -> Kontakt gibt es bereits
Set rtitemKold=docKontakt.getfirstitem("Bericht") 'richextfeld aus Kundenkontakt holen
Set item=docKontakt.getfirstitem("Bericht") 'zusätzlich in ein Item schreiben um copyitem zu nutzen
Call docGespr.CopyItem(item,"BerichtG") 'Wert aus Kundenkontakt in docGespr zwischenspeichern
Call docGespr.Save(True,False)
Set rtitemBerichtK = docGespr.GetFirstItem("BerichtG")
Call docKontakt.removeitem("Bericht") 'RichtextFeld im Kundenkontakt löschen um neu zu erstellen
Call docKontakt.Save (True,False)
Set rtitemBericht=docKontakt.createrichtextitem("Bericht")
richStyle.NotesColor=COLOR_DARK_RED
Call rtitemBericht.AppendStyle(richStyle)
Call rtitemBericht.AppendText(strInfo)
richStyle.NotesColor=COLOR_DARK
Call rtitemBericht.AppendStyle(richStyle)
Call rtitemBericht.AppendRTItem(rtitemG) 'zuerst den neuen inhalt einfügen
Call rtitemBericht.AddNewline(2,False)
Call rtitemBericht.AppendRTItem(rtitemBerichtK) 'dann den alten hinzufügen
Call rtitemBericht.AddNewline(2,False)
Call docKontakt.save(True,False)
Call docGespr.RemoveItem("BerichtG") ' Feld löschen, falls zu mehrern Themen gesprochen wurde
Call docGespr.Save(True,False)
End If 'Ende If docKontakt Is Nothing
Else 'If strBericht <> ""
End If 'Ende if strBericht <> ""
Else ' if docGespr.HasItem
' Msgbox "Nein"
End If 'Ende if docGespr.HasItem
End Sub
Schon mal Danke für jeden Ratschlag.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Edit 28.01.2015: Mir ist klar dass meine Fragestellung viel (wahrscheinlich zu viel) Text und Code beinhaltet. Wollte halt ausführlich mein Problem und den dazugehörigen Code darstellen. Werde in den nächsten Tagen noch mal versuchen das Problem mit den wesentlichen Punkten und betreffenden Codezeilen in einem neuen Thread dar zu stellen. Inzwischen schließe ich diesen Thread
Habe die Frage neu formuliert und einen neuen Thread erstellt
http://atnotes.de/index.php/topic,58614.0.html