AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
24.08.19 - 11:29:48
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  FindFirstElement(RTELEM_TYPE_TABLE)
« vorheriges nächstes »
Seiten: [1] 2 Nach unten Drucken
Autor Thema: FindFirstElement(RTELEM_TYPE_TABLE)  (Gelesen 2426 mal)
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« 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
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #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 » Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #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 Wink
« Letzte Änderung: 11.02.19 - 21:26:16 von jBubbleBoy » Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #4 am: 11.02.19 - 21:29:36 »

Ein schönes Dunkles ist immer lecker  Grin

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.
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #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 Wink
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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?
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #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?
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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.
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #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 Cool
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #10 am: 11.02.19 - 22:33:53 »

Oder du speicherst die Daten parallel zur Tabelle Cool
aber das geht ja nicht wegen der manuellen Eingabe ...  Huh
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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.

Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2601



« Antworten #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
Gespeichert
Bastel123
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 293


« Antworten #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".
Gespeichert

Kaum macht man's richtig, schon funktioniert's.
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2601



« Antworten #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.
Gespeichert
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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  Ahnungslos
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1118



« Antworten #17 am: 12.02.19 - 17:02:04 »

zum Glück habe ich die Funktion "FindFirstElement(RTELEM_TYPE_TABLE)" noch nie wirklich benötigt  Grin 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?
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.6
--
Nur ein toter Bug, ist ein guter Bug!
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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.
Gespeichert
bredemeier
Frischling
*
Offline Offline

Beiträge: 49


« Antworten #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.
Gespeichert
Seiten: [1] 2 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: