Autor Thema: FindFirstElement(RTELEM_TYPE_TABLE)  (Gelesen 11723 mal)

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
FindFirstElement(RTELEM_TYPE_TABLE)
« am: 08.02.19 - 22:26:01 »
Hallo,

ich lese jetzt schon seit 5 Tagen, finde aber keine Lösung oder verstehe das Problem nicht.

Es wird eine Tabelle in ein Richtext-Feld programmatisch erstellt.
Öffnet man das Dokument, sieht alles aus, wie es soll. Nun will ich die Tabelle im backend auslesen und finde mit FindFirstElement(RTELEM_TYPE_TABLE) die Tabelle und kann auch die Tabelle ansprechen. Wenn ich aber das Dokument einmal im frontend ohne zu bearbeiten einmal abgespeichert habe, sieht die Tabelle an der gleichen Stelle immer noch gleich aus, aber mit FindFirstElement(RTELEM_TYPE_TABLE) kann ich die Tabelle nicht mehr finden.

Der Unterschied ist, dass das Feld nach dem Speichern Seq Num: 2 und Field Flags: (ist leer) vor dem Speichern Field Flags: SIGN SEAL

Kann mir bitte jemand sagen, woran es liegen kann?

Gruß, Volker

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #1 am: 11.02.19 - 12:15:03 »
Ist vielleicht beim Richtext die Eigenschaft "Inhalt als HTML und MIME speichern" aktiviert?
« Letzte Änderung: 11.02.19 - 12:17:55 von jBubbleBoy »
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #2 am: 11.02.19 - 20:45:16 »
Hallo Erik,

danke, dass du dir die Zeit genommen hast, zu antworten. Aber nein, das ist nicht aktiviert.

So lange das Dokument nicht bearbeitet wird, kann ich die Tabelle per Script auslesen, aber nach dem Speichern (obwohl das Feld ein computed Feld ist und nur auf sich selbst verweist) kann ich die Tabelle nicht mehr erreichen. Komischerweise ist die "Byte"-Größe des Richtext Feldes nach dem Speichern des Dokumentes ca. 10% kleiner. Optisch erkenne ich keinen Unterschied vor und nach dem Speichern im Frontend.

Ich hatte schon einmal einen Threat eines anderen Teilnehmers aus 2009 versucht zu reaktivieren, wo der Autor auch keine Antwort auf dieses Problem bekommen hat. Da hat Tode mir leider auch keine Hilfe gegeben, sondern mich lediglich gefragt, ob ich wirklich einen 10Jahre altes Thema wieder ausgrabe. Vielleicht ist das Problem ja auch zu trivial.

Gruß, Volker

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #3 am: 11.02.19 - 21:16:09 »
Hallo Volker,

du berechnest also eine Tabelle in ein auf sich selbst zeigendes RT-Feld. Hier würde ich neben der Tabelle ein Feld mit den Tabellendaten erzeugen.

Tode wird Dir dafür bestimmt ein Bier in der Bar ausgeben, wenn Du ihn triffst ;)
« Letzte Änderung: 11.02.19 - 21:26:16 von jBubbleBoy »
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #4 am: 11.02.19 - 21:29:36 »
Ein schönes Dunkles ist immer lecker  ;D

Ich erzeuge im Backend eine Tabelle in einem Richtext Feld in einem neuen Dokument. Öffne ich das Dokument im Bearbeitungsmodus und schließe es wieder ohne zu speichern, kann ich die Tabelle auslesen. Füge ich aber in irgend einem anderen Feld ein Zeichen hinzu und speichere das Dokument, findet FindFirstElement(RTELEM_TYPE_TABLE) die Tabelle nicht mehr.

In diesem Fall ist dann - rtnav.FindFirstElement(RTELEM_TYPE_TABLE) = False

Somit kann ich dann mit:
Set rtt = rtnav.GetFirstElement(RTELEM_TYPE_Table)
Messagebox "Column count = " & rtt.ColumnCount & Chr(13) & "Row count = " & rtt.RowCount,, "Table "
 - die Tabelle nicht mehr erreichen (Error)

Ich habe das Feld normalerweise als bearbeitbar. Obwohl in der Tabelle nicht gearbeitet werden soll. Das Problem ist das Gleiche. Erst später habe ich es als computed eingestellt, weil ich dachte, dass dann keine "äußere" Änderungen in die Tabelle kommen.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #5 am: 11.02.19 - 21:37:47 »
Was du machst ist doch pure Anzeige, Daten die in das Dokument gehören werden in einer Tabelle dargestellt, also würde ich vor dem Erstellen der Tabelle die Daten in ein Feld speichern.

Oder anders ausgedrückt, ein RT-Feld ist kein Ablageort für strukturierte Daten ;)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #6 am: 11.02.19 - 21:48:03 »

Grundsätzlich ist das so, wenn aber die Tabelle bearbeitbar bleiben soll, dann kann mal jemand eine Zelle ändern.

Die Frage, die sich mir nur stellt ist, warum ist das so, warum wird die Tabelle nicht mehr gefunden? Und in welches Feld sollte ich zweidimensionale Daten schreiben?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #7 am: 11.02.19 - 21:51:53 »
Bezogen auf Spalten und Zeilen, wie dynamisch muss denn die Tabelle werden? Und was für Daten werden erfasst?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #8 am: 11.02.19 - 22:06:08 »
"Kaum" dynamisch. Ich erzeuge anhand von im Prinzip Stundenerfassung (einzelne Dokumente) mtl. Stundennachweise mit ca. 5-20 Zeilen und ca. 6-8 Spalten. Nun sind aber auf manchen Nachweisen Spalten drauf, die bei einem zweiten Ausdruck nicht erscheinen dürfen. Die eigentlichen Dokumente sollen aber unverändert bleiben.

Ich lege also mit copyallitems eine Kopie an, lösche das RT Feld der Kopie, lese die sichtbaren (individuell) Spalten aus und schreibe die Werte in die neue Tabelle der Kopie. Die Dokumente werden in einen Ordner verschoben und im Abschluss der Ordner geöffnet. Wenn alles ausgedruckt ist, schließt der User den Ordner und dabei werden die Kopieen gelöscht.

Ich könnte die Daten auch in ein Feld (Zeilen als Textliste und Spalten mit Trennzeichen) schreiben und theoretisch die Tabelle beim öffnen generieren.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #9 am: 11.02.19 - 22:31:01 »
Hier würde ich eine richtige Tabelle verwenden, Zeilen können programmiertechnisch ausgeblendet werden - je nach bisherigen Eingaben, und wenn für die 2. Druckvariante ein einfaches "Verbergen-Wenn" nicht ausreicht, dann das über eine 2. Maske/Teilmaske regeln.
Das hat zudem den Vorteil das kein Anwender die Eingabestruktur ändern kann!

Oder du speicherst die Daten parallel zur Tabelle 8)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #10 am: 11.02.19 - 22:33:53 »
Oder du speicherst die Daten parallel zur Tabelle 8)
aber das geht ja nicht wegen der manuellen Eingabe ...  ???
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #11 am: 12.02.19 - 08:24:31 »

Die Tabellenvorlage muss von der Verwaltung veränderbar sein und der Rahmen soll nicht angezeigt werden.

Daher habe ich ein Dokument in dem mehrere Richtext Felder mit vordefinierten einzeiligen Tabellen liegen. Wenn ich dann einen neuen Stundennachweis erzeuge, hole ich mir die Tabelle (layouttechnisch fertig) mit copyitemtodocument aus dem entsprechenden Feld und hänge dann nur noch mit addrow Zeilen dran. So kann die Verwaltung die Vorlage verändern und die Textart, Schriftgröße, Ausrichtung und Rahmen ist individuell. Wenn ich die Tabelle aber nicht im Dokument speichere, sondern nur die Daten und jemand verändert die "Tabellenvorlage" ist der Stundennachweis nicht mehr "original". Ok, ich könnte die Tabellenzeile ja auch in ein anderes nicht sichtbares Feld in den Stundennachweis speichern und beim öffnen daraus neu erstellen, aber dann habe ich wahrscheinlich genau das oben beschriebene Problem, dass wenn das Dokument einmal bearbeitet wurde die Tabelle nicht mehr existiert.

Ich will keine Zeilen, sondern den Inhalt von Spalten ausblenden. Und die Tabelle muss nicht zwangsläufig manuell bearbeitbar sein. In den Zellen steht reiner Text. Das nützt mir aber alles nichts, wenn ich die Tabelle "nicht mehr erreiche".

Das kann doch nicht so schwer sein.

Anbei die Tabelle, die letzten beiden Spalten sollen beim Druck ausgeblendet werden.


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #12 am: 12.02.19 - 09:38:34 »
Hat es auch nicht funktioniert, als das Richtextfeld bearbeitbar war?

Ich würde das Richtextfeld auf Bearbeitbar stellen und keinerlei Berechnung eintragen (kein Vorgabewert usw.). Um das Feld herum dann einen zugriffsgesteuerten Abschnitt so, dass niemand den Abschnitt bearbeiten kann. (Zugriffsformel Berechnet zur Anzeige, Wert (" - ") ).

Muss nicht funktionieren, ist aber vielleicht einen Versuch wert

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #13 am: 12.02.19 - 10:10:26 »
Hast Du nach Änderungen am Rich-Text Feld immer ein neues Dokument erzeugt und damit gearbeitet und ausprobiert?

Rich-Text Felder verhalten sich da manchmal etwas "zäh".
Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #14 am: 12.02.19 - 10:33:22 »
Hallo Peter,

ja, das Feld war vorher bearbeitbar, gleiches Problem. Ich habe jetzt das Feld wieder auf bearbeitbar gesetzt. Anbei die Feldeigenschaften (gleiches Dokument) vor dem Speichern und nach dem Speichern, dabei wurde lediglich in einem anderen Feld eine Leerzeichen eingefügt, wieder entfernt und gespeichert. Es gibt keine "verbergen" Formel oder Security Einstellung, Store Content as HTML ist nicht angeschaltet.

Ich habe mir auch schon Dinge gebaut wie - ich erzeuge beim Öffnen des Stundennachweises ein Tempdoc, kopiere das Richtext hinein und im Queryclose kopiere ich das Feld aus dem Tempdoc zurück. So kann niemand das Feld bearbeitet haben, trotzdem gleiches Problem.

@Bastel123: Ja, ich kopiere mir aus der live-Datenbank immer wieder Originaldokumente rüber.

Gruß, Volker

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #15 am: 12.02.19 - 10:41:14 »
Ich würde mich mal auf die Flags konzentrieren. Habe mal stichprobenartig durch unsere Datenbanken geschaut, da haben die Richtextfelder keine Flags SIGN oder SEAL, nicht, dass da irgendwelche Verschlüsselungen oder Signaturen mitspielen.

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #16 am: 12.02.19 - 11:55:56 »

Das habe ich ja auch schon in meinem ersten Beitrag geschrieben. Nur woher kommen die Flags, bzw. wie bekomme ich die weg? Das RT-Feld ist in einer Teilmaske und jeder hat normales Schreibrecht. Ich habe jetzt einmal in das "Tabellendokument" geschaut, die Ursprungstabelle hat diese Flags nicht und die Stundennachweise werden mit lokalem User (kein Agent) per Script erzeugt.

Und wenn die Flags gesetzt sind, kann ich ja darauf zugreifen. Nach dem Speichern sind die Flags weg und die Tabelle wird nicht gefunden  :-:

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #17 am: 12.02.19 - 17:02:04 »
zum Glück habe ich die Funktion "FindFirstElement(RTELEM_TYPE_TABLE)" noch nie wirklich benötigt  ;D aber das 2. Beispiel von hier: https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_EXAMPLE_WORKING_WITH_TABLES_LOTUSSCRIPT.html
zeigt das es in der Theorie funktionieren muss - das konnte ich nachgestellt, dabei kann das Dokument auch verschlüsselt sein.

Welche der vielen Notes 9 Versionen habt ihr denn?
Und schon mal versucht, die Zellen-Eigenschaft "nicht drucken" in der Vorlage zu setzen?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #18 am: 13.02.19 - 08:48:12 »
Die Zelleneigenschaft kann ich nur verändern, wenn ich die Tabelle "erreichen" kann, also das gleiche Problem.

Zur Zeit nutze ich Notes 10, aber auch mit 9.1.7 ist das Problem. Da ich ja einen 10 Jahre alten Threat ausgegraben habe, scheint es auch in den 8er Version so zu sein.

Ich komme erst heute Abend dazu, dem Link zu folgen, werde berichten.

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE)
« Antwort #19 am: 13.02.19 - 14:58:04 »
OK, der Link hilft mir ja nicht sonderlich weiter, weil ja nur die Funktion genutzt wird, die ich schon benutze.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz