Autor Thema: Inhalt von RichTextItem löschen  (Gelesen 2609 mal)

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Inhalt von RichTextItem löschen
« am: 21.08.12 - 13:57:00 »
Hallo zusammen,
habe hier eine kurze und knappe Frage. Wie kann ich den Inhalt eines RT-Items löschen?
Natürlich kann man mit doc.ReplaceItemValue("...", "") den Inhalt auf "" setzen, allerdings wird das Feld danach nicht mehr als RT-Item, sondern nur noch als normales "item" erkannt.  :-\

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Inhalt von RichTextItem löschen
« Antwort #1 am: 21.08.12 - 14:00:35 »
Ich würde es komplett aus dem Dockument löschen und ein neues, leeres Item anlegen
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Inhalt von RichTextItem löschen
« Antwort #2 am: 21.08.12 - 14:08:40 »
Beim Löschen aber folgende Besonderheit beachten: Ist ein RTI gross, so kann es aus mehreren Teilen bestehen. Es muss das RTI also solange instantiiert und gelöscht werden, bis es nicht mehr zu instantiieren geht.

HTH,
Bernhard

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Inhalt von RichTextItem löschen
« Antwort #3 am: 21.08.12 - 14:13:33 »
Danke, habe ich jetzt mal versucht. Einfacher geht das nicht? Scheint aber zu funktionieren. Habe jetzt jedoch ein neues Problem. Also ich führe den Code mit dem löschen/erstellen im QueryOpen einer Form aus. Also immer bevor das Dokument geöffnet wird. Wenn ich jetzt etwas editieren will bekomme ich einen Save Conflict, weil das Dokument angeblich auch gespeichert wurde...Hier mal mein Code:
Code
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim rtitemA As NotesRichTextItem
	Dim rtitemB As NotesRichTextItem
	Dim rtitemC As NotesRichTextItem
	Set db = session.CurrentDatabase
	Set view = db.GetView("Dashboard")
	Set doc = view.GetFirstDocument
	Set rtitemA = doc.GetFirstItem("field_read")
	Call rtitemA.remove
	Call doc.CreateRichTextItem("field_read")
	Set rtitemB = doc.GetFirstItem("field_read")
	Set rtitemC = doc.GetFirstItem("field_edit")
	Call rtitemB.AppendRTItem(rtitemC)
	Call doc.Save(True, True)
Weil ich das Doc im Back-End bearbeite vielleicht?
« Letzte Änderung: 21.08.12 - 14:19:18 von yannick »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Inhalt von RichTextItem löschen
« Antwort #4 am: 21.08.12 - 14:21:14 »
Nicht "vielleicht", sondern bestimmt. Und dann noch ein RTI, wovon das Frontend erstmal gar nichts mitbekommt. Das geht so nicht.

Bernhard

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Inhalt von RichTextItem löschen
« Antwort #5 am: 21.08.12 - 16:11:59 »
Wie kann ich denn ein RTI im BackEnd bei einem doc verändern, das ich gerade öffnen will?
Ich habe eine Art Anleitung gefunden: http://www-01.ibm.com/support/docview.wss?uid=swg21098273
Allerdings funktioniert das nicht!  :(
« Letzte Änderung: 21.08.12 - 16:23:49 von yannick »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Inhalt von RichTextItem löschen
« Antwort #6 am: 21.08.12 - 16:37:33 »
Unser Forenmitglied Anton (a.k.a. ata) hat dafür mal eine Funktion erstellt. Such hier mal nach Reopen.

Oder schau auch mal auf seiner Homepage -> http://www.anton-tauscher.de/LotusScript/startdyn.htm

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Inhalt von RichTextItem löschen
« Antwort #7 am: 22.08.12 - 09:38:47 »
Okay danke. Ich habe mir seine Funktion ReOpen kopiert.
Also ich hole mir im PostOpen das (BackEnd) Doc, mache meine Änderungen und rufe danach die Funktion ReOpen auf. Jetzt bekomme ich (wie auch teilweise bei meinen Versuchen) einen Stack Overflow. 10-20 Dokumente öffnen sich und werden sofort wieder geschlossen (Notes schiesst´s dabei manchmal auch ab!). Das ganze passiert jetzt in der Funktion ReOpen in der Zeile
->   Set docThis = uidoc.Document
Das ist die Funktion, die ich aufrufe, nachdem ich im BackEnd doc das RTI gelöscht und neu erstellt habe:
Code
    Function ReOpen(docThis As NotesDocument) As Integer 
        Dim ws As New NotesUIWorkspace 
        Dim uidoc As NotesUIDocument 
        Dim dbThis As NotesDatabase 
        Dim unid As String 
 
        ReOpen = 0 
        Set dbThis = docThis.ParentDatabase 
        Call docThis.Save(True , True) 
        unid = docThis.UniversalID 
        docThis.SaveOptions = "0" ' # ... Speicherabfrage vermeiden 
        Set uidoc = ws.CurrentDocument 
        Call uidoc.Close 
        Set docThis = dbThis.GetDocumentByUNID(unid) 
        Set uidoc = ws.EditDocument(True , docThis) 
--->  Set docThis = uidoc.Document 
        If docThis.HasItem("SaveOptions") Then  
            ' # ... das Feld SaveOptions wieder entfernen... 
            docThis.RemoveItem("SaveOptions") 
            Call docThis.Save( True , True ) 
        End If 
        ReOpen = 1 
        Print "Das Dokument wurde erneut geöffnet" 
    End Function 
« Letzte Änderung: 22.08.12 - 09:41:24 von yannick »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz