Autor Thema: Protokoll nach Vergleich erstellen  (Gelesen 2722 mal)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Protokoll nach Vergleich erstellen
« am: 25.02.15 - 13:41:35 »
Hallo zusammen,

ich mal wieder.......
Ich suche einen Lösung, für folgendes Problem:

In einer Maske sind 9 mal 2 Felder, die miteinander verglichen werden sollen und das Ergebnis soll in einem neuen Dokument gespeichert werden.
Die Felder sind Mehrfachfelder.
Vergleiche Feld 1.1 mit 1.2 per ArrayReplace
Vergleiche Feld 1.2 mit 1.1 per ArrayReplace
Vergleiche Feld 2.1 mit 2.1 per ArrayReplace
Vergleiche Feld 2.2 mit 2.1 per ArrayReplace
usw.

Die Vergleiche schreibe ich in ein Variant-Array (wobei man dies auch diskutieren könnte).

Ich erstelle ein neues Dokument, in dem sich ein RichTextFeld befindet.
In das Feld schreibe ich einige erläuternde Worte und will dann die einzelnen Array-Inhalte in das RichTextFeld einfügen. Und an dieser Stelle läuft der Agent auf einen Fehler.

Set rti = docProto.CreateRichtextItem("Protokoll_Text")
rti.AppendText(vArray(1,2))

Kann mir jemand einen besseren Ansatz nennen?
Oder mir sagen, warum das nicht funktioniert?

Danke schon einmal

Gruß
Markus
« Letzte Änderung: 25.02.15 - 16:58:19 von MarkusL »
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Protokoll nach Vergleich erstellen
« Antwort #1 am: 25.02.15 - 14:31:02 »
Hallo Markus,

prinzipiell gilt: wie lautet denn der Fehler? Ist "rti" und das Array "vArray" richtig deklariert?
Die Noteshilfe sagt zu AppendText übrigens:

Zitat
Inserts text in a rich text item. The text is rendered with the current style of the item (such as bold or italics).
Defined in
NotesRichTextItem
Syntax
Call notesRichTextItem.AppendText( text$ )

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Protokoll nach Vergleich erstellen
« Antwort #2 am: 25.02.15 - 14:54:35 »
Deine zwei Zeilen Code sind syntaktisch korrekt, mit Deinen Informationen kann man also leider keine Hilfe geben.

Ob Dein "Vorgehen" sinnvoll ist, kann ich nicht beurteilen, aber "läuft der Agent auf einen Fehler" ist natürlich nicht wirklich eine hilfreiche Fehlerbeschreibung.

Das ist so, wie wenn Du in der Werkstatt anrufst und sagst "Mein Auto fährt nicht, können Sie mir sagen warum nicht?"

- Welcher Fehler kommt EXAKT
- Wie sind die Variablen deklariert
- Ist Dein vArray WIRKLICH 2- dimensional?
- Hast Du denn ein ErrorHandling (wenn nein: warum nicht?)

Mehr Input, mehr output...

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
Re: Protokoll nach Vergleich erstellen
« Antwort #3 am: 25.02.15 - 14:57:05 »
NotesRichtextItem.AppendText erwartet als Parameter einen String, evtl. hilft schon ein

rti.AppendText(CStr (vArray(1,2)))


Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Protokoll nach Vergleich erstellen
« Antwort #4 am: 25.02.15 - 14:59:25 »
Hallo Chris,

das Array ist als Variant deklariert: Dim vArray(1 To 9, 1 To 5) As Variant
Allerdings gibt es in einigen Bereichen des Array Mehrfachwerte - und die machen die Probleme.

Wenn ich das Array an das Feld übergeben, kommt der Fehler: Arrays of Arrays not supported

Dim vArray(1 To 9, 1 To 5) As Variant
Dim rti As NotesRichTextItem

...

vArray(1,1) = "Text"
vArray(1,2) = "Text 2"
vArray(1,3) = FullTrim(ArrayReplace(vFeldIst,vFeldSoll,vArray(1,3)))

....

docProto.Protokoll_Text = vArray

Fehler: Arrays of Arrays not supported

Wenn ich die Bereiche des Arrays einzeln übergebe, klappt das mit den einfachen Texten, aber nicht mehr mit den Mehrfach-Inhalten.

War das jetzt verständlich, oder benötigst du weitere Infos?

Gruß Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Protokoll nach Vergleich erstellen
« Antwort #5 am: 25.02.15 - 15:00:22 »
Hallo Peter,

ich glaube, es liegt an dem String.
Das teste ich jetzt direkt mal.
Danke.
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Protokoll nach Vergleich erstellen
« Antwort #6 am: 25.02.15 - 16:07:30 »
Wenn Du mit Mehrfachwerten arbeitest, also so, dass die einzelnen Arrayelemente selbst Mehrfachwerte sein können, solltest du diese beim Schreiben in das Richtextitem mit Join zu einem Einfachwert umwandeln.

Außerdem musst Du durch die Arrays durchlaufen und die einzelnen Elemente heraussuchen, anstatt den ganzen Datensalat irgendwie an den Richtext zu übergeben, das wird nix. Sinngemäß vielleicht so

For i = 1 To 9
   For j = 1 To 5
      rti.AppendText (Join (vArray (i, j), Chr (13) & Chr (10)))
   Next j
Next i

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Protokoll nach Vergleich erstellen
« Antwort #7 am: 25.02.15 - 16:58:09 »
Hallo Peter,

dass ich das Array durchlaufen muss, habe ich dann auch bei der Suche hier im Forum festgestellt.
Ich übergebe die Vergleichswerte jetzt direkt an das RichTextfeld als String.

vVergleich = FullTrim(ArrayReplace(vFeldSoll,vFeldIst,vVergleich))
For i = LBound(vVergleich) To UBound(vVergleich)
   rti.Appendtext(vVergleich(i))
   rti.AddNewLine(1)
Next i

Der Hinweis von Tode, ob das Array 2-dimensional ist, hat mich auf die Idee gebracht, das Ganze ohne Array umzusetzen.

Wie immer war diese Forum hilfreich und ihr seid spitze.

Danke euch allen.

Gruß
Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz