Autor Thema: Tabelle in RichTextItem aus Vorlage kopieren und Werte einfügen  (Gelesen 5535 mal)

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Hallo zusammen,

Ich habe aktuell ein Thema bei dem ich in einem NotesRichTextItem eine Tabelle benötige und diese dann noch an bestimmten Stellen befüllt werden muss. D.h. ich habe eine 2-spaltige Vorlage, bei der auf der linken Seite immer die gleichen Titel stehen (z.B. ID). Auf der rechten Seite muss ich eben jetzt, je nach aktuellem Datensatz, die Daten reinschreiben.

Das ganze soll später als Agent im Hintergrund laufen. Ich habe dazu schon etwas Code ausprobiert:

Code
Sub Click(Source As Button)
    Dim s As New NotesSession
    Dim db As Notesdatabase
    Dim Doc As Notesdocument
    Dim rt As NotesRichTextItem
    Dim viewTB As NotesView
    Dim rtTB As NotesRichTextItem
    Dim docTB As Notesdocument
    Dim rtnav As NotesRichTextNavigator
    Dim rttable As NotesRichTextTable
    
    Set db = s.CurrentDatabase
    Set doc =  db.CreateDocument
    
    doc.Form = "SB" 'Legt Form fest
    
    Call doc.CreateRichTextItem("Body")
    Set rt=doc.getFirstItem("Body")
    
    'Greift auf die Textbausteine zu und holt sich den entsprechenden (in diesem Fall ein RichText-Feld mit einer Tablle (nur einer Tabelle da ist sonst nichts anderes)
    Set viewTB=db.GetView("Textbausteine")
    Set docTB=viewTB.GetDocumentByKey("SB-Test")
    
    Set rtTB=docTB.GetFirstItem("Text")
    Call rt.AppendRTItem(rtTB)
    
    Set rtnav = rt.CreateNavigator 'Navigator um durch die einzelnen Zellen der Tabelle laufen zu können - Aber genau hier gibts Probleme! Er erstellt mir an dieser Stelle keinen Navigator (zumindest nicht im Debugger sichtbar)
    Set rttable = rtnav.GetFirstElement(RTELEM_TYPE_TABLE) 'damit scheitert er auch an dieser Stelle, was ich aber unbedingt brauche um auf einzelne Zellen zugreifen zu können
    
    If rttable Is Nothing Then
        Msgbox "Keine Tabelle enthalten"
    End If
    
    Call doc.Save(True, False)
End Sub

Ist daran etwas falsch? oder gibt es gar eine andere Lösung für das Problem?

Ich bin für Hilfe sehr dankbar!

Grüße,
Mathias

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Wenn Du jetzt noch Dein Problem schildern würdest wäre das nett.

P.S. RTF sind böseböseböse  >:D

Wichtig zu wissen ist, das RTF erst nach dem speichern und einem Re-Open, es gibt da eine sehr schöne Funktion von ata - Anton Tauscher , weiß, das es ein RTF ist.
« Letzte Änderung: 03.06.08 - 08:31:12 von DerAndre »
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Mein Problem ist genau das, dass (wie in dem Code vllt. nicht sehr übersichtlich beschrieben) dieser Befehl "Set rtnav = rt.CreateNavigator " nicht funktioniert. Ich sehe im Debugger nach diesem Befehl nicht, dass rtnav irgendwie befüllt wäre. Im Grunde checkt er eigentlich ned, dass er ein RichTextItem ist - genau wie du meintest speicher - reopen - und kann mir deshalb auch nicht die Tabelle liefern zum navigieren.

Ich brauche im Grunde einfach eine Tabelle die ich variabel befüllen kann. Normalerweise wird diese Tabelle manuell befüllt, aber das soll jetzt teilweise auch automatisch passieren eben durch den Agenten.

Erst nach dem Speichern und re-open? Hm... mal probieren

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Jepp

Hier ist die Funcion, allerdings nicht das Original von Anton, das finde ich gerade nicht

ReOpen
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Hm bringt leider auch nichts. Ich krieg dann (wie im Code eingebaut) die Meldung "Keine Tabelle enthalten". Aber wenn ich mir das Feld anschaue is da definitiv eine Tabelle drin, ich mein ich seh die ja. Auch nach manuellem Schließen und wieder öffnen bringt er mir bei der Abfrage ob in dem RichText-Feld eine Tabelle drin ist die Meldung, dass keine enthalten ist.

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Lies mal diesen Fred
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Ok danke! :) Habe die Tabelle jetzt drin :)

Jetzt noch eine Frage dazu:

Ich habe in der Tabelle im RichText eine Textstelle stehen z.B. "XX1". Ich will jetzt das RichTextItem durchlaufen und nach dieser Stelle suchen. Habe ich sie gefunden soll er mir das "XX1" durch "Programm" ersetzen, ohne aber dabei die Tabelle im RichText zu zerstören.

Ich habe es leider bisher immer nur so geschafft, dass er mir die Tabelle zerlegt hat, weil ich aus dem RichText den unformatierten Text geholt habe.

Wie setze ich im Grunde die "Suchen und Ersetzen"-Funktion um?

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Lösung:

Code
Set rtrange = rtitem.CreateRange
count& = rtrange.FindandReplace("XX1", "Test")

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Ok wie ich da nun Text ersetzen kann ist klar. Aber wenn ich an der gefundenen Stelle ein RichtTextItem einfügen will? Wie krieg ich denn das hin?

Offline DaHias

  • Aktives Mitglied
  • ***
  • Beiträge: 132
Code
If rtnav.FindFirstString("XX9") Then
  Call rtrange.SetBegin(rtnav)
  Call rtAd.BeginInsert(rtnav, False)
  Call rtAd.AppendRTItem(rtAnforderungen)
End If

Mit diesem Befehl wäre ich also nun an der Stelle, an der ich mein RichTextItem einfügen will. Aber ich bekomme dabei leider eine Fehlermeldung "Method ist not available" in der Zeile, wo er das RichTextItem anhängen soll.
Kann man an dieser Stelle keine RichTextItems anhängen?

Offline haessler

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Männlich
    • Leonso GmbH
Richtext in Richtext einzufügen? Ich hab ein Script dafür da.

Das hatte ich bei meiner letzten DNUG-Session als Beispiel vorgestellt:

www.nappz.de/xfl/de/download.htm#rt

Mit dem Richtextnavigator bin ich ziemlich schnell an die Grenzen des Machbaren gestoßen. Deshalb basiert das Beispiel hier auf DXL-Import/Export.

Bert

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Zitat
Richtext in Richtext einzufügen? Ich hab ein Script dafür da.
Danke, interessante Sache

Zitat
bin ich ziemlich schnell an die Grenzen des Machbaren gestoßen
Bei Attachments funktioniert es dann aber nicht mehr.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz