Autor Thema: Anstatt Werte im RichTextfeld anzuhängen wird es nochmals angelegt.  (Gelesen 4881 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hallo Experten,

ich habe ein echtes Verständnisproblem und da ich hier alleine für Notes zuständig bin habe ich leider keinen der meine Wissenslücke schließen kann.

Es gibt eine History mit einem Richtextfeld Namens "aenderungen_history".
Das Feld ist als RichText-Feld in der Maske hinterlegt.
Nun soll bei jedem Speichern das Feld erweitert werden, aber bei mir wird das gleiche Feld nochmal angelegt und ich weis überhaupt nicht warum!
Es gibt keine andere Stelle wo das Feld nochmals angesprochen oder befüllt wird, dass passiert nur im Ereignis QuerySave.

Hoffe jemand kann mir in meiner Verzweiflung einen Tipp geben woran das liegen könnte?
Oder hat jemand einen Tipp wie ich in dem Fall vorgehen sollte um raus zu finden, warum das zweite Feld angelegt wird?

Ich weis das der Fehler wahrscheinlich bei mir liegt, aber das bringt mich kein Stück weiter, weil ich es nicht verstehe, warum das so ist.
Die Feldbezeichnung habe ich überall wo sie vorhanden ist reinkopiert und nicht getippt.
Es befinden sich auch kein Leerzeichen vor oder nach der Feldbezeichnung.

Ich bin echt für jeden noch so kleinen Tipp dankbar.

Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim usename As Notesname
   Dim aenderungsvar As String
   Dim msg As String
   Dim rtitem As Notesrichtextitem
      
   Set db = s.Currentdatabase
   Set uidoc = ws.Currentdocument
   Set doc = uidoc.document
   Set usename = s.CreateName(s.UserName)
   Set rtitem = doc.Getfirstitem("aenderungen_history")
      
   'Füllen der Felder für die History
   'Alter Stand des Feldes übergeben
   aenderungsvar = Trim(CStr(doc.aenderungen_history))
   msg = usename.Common
   doc.ModifiedBy = Trim(CStr(Now)) + " Uhr " + msg + Chr(10) + "Aktion: " + doc.how_save(0) 'Feld "how_save" wird von gedrückten Button gefüllt

   'Speichert nur die History wenn das Feld auch noch ein RichText-Format ist
   If ( rtitem.Type = RICHTEXT ) Then
      Call rtitem.Appendtext(Trim(CStr(doc.ModifiedBy(0)))+ Chr(10)+ Trim(CStr(aenderungsvar)))   
      Call doc.Save(True, False)
   End If

Gruß Gerry (Lancelot)

Offline RunRevilo

  • Junior Mitglied
  • **
  • Beiträge: 51
  • Geschlecht: Männlich
Hallo,

ich bin zwar kein Experte, aber mir ist nur aufgefallen, dass beim Beispiel in der Note Hilfe das rtitem als Variant deklariert wird.
Kannst ja das mal versuchen.

Hier aus der Notes Hilfe:

This script adds two lines of text, separated by a carriage return, to the end of the Body item in a document.

Code
Dim doc As NotesDocument
Dim rtitem As Variant
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Call rtitem.AppendText( "Add text to the rich text item" )
  Call rtitem.AddNewLine( 1 )
  Call rtitem.AppendText("Add more text to rich text item")
  Call doc.Save( False, True )
End If

Grüße
Oliver
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.

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Danke Oliver für den schnellen Tipp.
Das habe ich schon versucht, hat aber leider am Problem nichts geändert.

Aber danke nochmals für den Tipp.
Gruß Gerry (Lancelot)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Hallo,

Ich habe ein kleines Verstaendnisproblem bei deinem Code.

In aenderungsvar hast du den bereits vorhandenen Inhalt des RT-Feldes.

Warum haengst du diesen jedesmal wieder mit an den neu zu schreibenden Eintrag
in diesem Feld an.

Call rtitem.Appendtext(Trim(CStr(doc.ModifiedBy(0)))+ Chr(10)+ Trim(CStr(aenderungsvar)))


Andreas

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hallo Andreas,

weil es gewünscht ist, dass der neuste Eintrag de Historie immer oben stehen muss um bei Bedarf nicht immer erst nach unten scrollen muss.

Ich darf die Historie z.B. nicht auf die letzten 50 Änderungen beschränken, die muss immer komplett und vollständig gehalten werden.
Deswegen habe ich mich auch für ein RichText-Feld entscheiden müssen, da ein Textfeld nicht größer als 32 KB werden kann. und diese Grenze wurde in der DB nämlich schon häufiger überschritten. 
Gruß Gerry (Lancelot)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Es ist aber nicht gewünscht, dass Du den neuen Eintrag und die alten Einträge an die alten Einträge anhängst (AppendText hängt Text an).

In Deinem Feld steht

"alter Text"

und daran hängst Du "neuer Text" und den bisherigen Inhalt an, das ergibt dann

"alter Text
neuer Text
alterText"

Du solltest das Richtextitem löschen und dann den neuen und den alten Text anhängen.
 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Warum wird für eine Textmeldungsliste überhaupt ein RTI verwendet?

Bernhard

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Warum wird für eine Textmeldungsliste überhaupt ein RTI verwendet?
Größenbeschränkung bei Textfeldern. Solche Histories kommen da ganz schnell an Grenzen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hallo Peter,

ich widerspreche Dir ungern, weil ich ja sehe was in der History steht.
Ich schreibe den alten Stand des Feldes in die Variabele, dann bau ich den neuen Eintrag auf und
schreibe den neuen Eintrag i das Feld und hänge den alten Stand des Feldes wiedre an.

Somit habe ich im Feld stehen
Neuer Wert
Alter Wert"

Aber ich glaube nciht das ein neues Feld mein problem lösen würde, denn das Richtext Feld wird egal wie ich speichere doppelt angelegt.
Gruß Gerry (Lancelot)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Die Größenbeschränkung von 32 KB bei Textfeldern haben mich dazu gezwungen.
Die Historie darf laut Anforderung nicht auf eine bestimmt Anzahl von Einträgen reduziert werden.

Glaubt mir es wäre mir anders auch viel lieber gewesen.
Gruß Gerry (Lancelot)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Notesitem.issummary=False ...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Notesitem.issummary=False ...
Das funktioniert m.W. nur im Backend, beim Speichern im Frontend wird es wieder zerstört

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Hallo Peter,

ich widerspreche Dir ungern, weil ich ja sehe was in der History steht.
Ich schreibe den alten Stand des Feldes in die Variabele, dann bau ich den neuen Eintrag auf und
schreibe den neuen Eintrag i das Feld und hänge den alten Stand des Feldes wiedre an.

Somit habe ich im Feld stehen
Neuer Wert
Alter Wert"

Aber ich glaube nciht das ein neues Feld mein problem lösen würde, denn das Richtext Feld wird egal wie ich speichere doppelt angelegt.

Also der Inhalt stimmt und Dich stört nur ein zweites Richtextfeld? In der Felderliste? Das kannst Du ignorieren. Oder wo ist Dein Problem.

In Deinem Code steht nirgendwo, dass Du den alten Inhalt löschst, bevor Du den neuen und den alten Inhalt anhängst

Driri

  • Gast
Was spricht gegen die Verwendung eines RichTextNavigators und BeginInsert ?

Dann bräuchte man nur noch an der durch BeginInsert definierten Stelle den neuen String einfügen und fertig.

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Zur Peters Tipp:
Es sind ja zwei Felder und das leere Feld stört uns bei der Anzeige der Historie. Die Historie wird über eine Dialogbox angezeigt und dort werden dann beide Felder vermischt.

Wie finde ich raus welches das leere der beiden Felder ist um es dann zu löschen?
Gruß Gerry (Lancelot)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Richtext in einer Dialogbox? Das funktioniert m.W. überhaupt nicht

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Notesitem.issummary=False ...
Und dann scheppert es halt bei 64 KB.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz