Autor Thema: Probleme mit kopieren von RichTextFeldern  (Gelesen 2135 mal)

Offline RunRevilo

  • Junior Mitglied
  • **
  • Beiträge: 51
  • Geschlecht: Männlich
Probleme mit kopieren von RichTextFeldern
« am: 26.01.15 - 10:17:41 »
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
Code
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
« Letzte Änderung: 29.01.15 - 10:02:56 von RunRevilo »
Grüße aus dem schönen Südtirol
Oliver C

Es gibt keine dummen Fragen, sondern nur dumme Antworten

Laufen ist der ideale Ausgleich zu jeglicher Arbeit, denn beim Laufen muss man nicht Denken.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz