Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Frank_B am 08.06.16 - 10:33:26

Titel: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: Frank_B am 08.06.16 - 10:33:26
Ich habe zwei items vom Typ "Text", welche inhaltlich zeilenweise Werte enthalten.

Bsp.:

Typ                 Abmessungen

Regal1            0,3~0,6
Regal2            0,5~1,0
Regal3            1,0~1,20

Wie kann ich per Lotusscript die items so auslesen, dass die Werte zueinander passen?
In Delphi kann ich in einem array einfach den Index auslesen. Ich weiss auch dass Lotusscript die Funktion hat "ArrayGetIndex" hat.

Gibt es sowas Ähnliches für "mehrzeilige" items" auch oder muss ich da zuerst alles in einen array übertragen?
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: koehlerbv am 08.06.16 - 11:00:31
Zum Auslesen kannst Du Iteminhalte (ausser RichText) wie Arrays behandeln und die Werte über ihren Index adressieren- wenn Du ihre Boundaries kennst. Ebenso sind Konstrukte wie Forall möglich.

In Deinem Beispiel sind Name und Maße von Regal 3 also
NotesDocument.Typ (2)
und
NotesDocument.Abmessungen (2)

HTH,
Bernhard
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: Peter Klett am 08.06.16 - 11:02:45
Code
If Ubound (doc.Typ) = Ubound (doc.Abmessungen) Then
   For i = 0 To Ubound (doc.Typ)
      print doc.Typ (i) & " = " & doc.Abmessungen (i)
   Next i
Endf If
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: Frank_B am 08.06.16 - 11:12:52
danke für die Antworten. dies ist mir soweit bekannt.

Ich meinte das eher so:

"Wenn in einem item der Wert "Regal3" steht, dann gib mir den Wert für die Abmessungen für das Regal3 zurück"

...dann muss ich die items zuerst in einen array übergeben und diesen dann "Absuchen" und den index dann nehmen um im zweiten array die Zuordnung zu kriegen.

Hintergrund: Ich bau mir ein Profildokument und benötige die Angaben beim Exiting eines Felds um dann "laufende Meter" eines Regals (je nach Typ) berechnen (mache ich dann mit nem "Split" an der Tilde) zu können.
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: koehlerbv am 08.06.16 - 11:16:16
Dann hast Du mit ArrayGetIndex in Bezug auf den Typ doch schon die Lösung genannt. Bekommst Du ein Ergebnis statt NULL, dann liest Du mit diesem die zugehörigen Abmessungen aus.
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: AlexZX am 08.06.16 - 11:21:39
Code
wert = NotesDocument.Abmessungen(ArrayGetIndex(NotesDocument.Typ, "Regal3", 0))
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: koehlerbv am 08.06.16 - 11:31:14
Das funktioniert aber nur dann, wenn man vorher sicher weiss, dass "Regal" im Item "Typ" vorhanden ist. Damit schliesst sich dies als alleiniger Code aus.
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: Peter Klett am 08.06.16 - 12:07:13
Ich nehme für sowas gerne Listen.

Code
'Liste einmalig aufbauen
Dim regale List As String
For i = 0 To Ubound (doc.Typ)
   regale (doc.Typ (i)) = doc.Abmessungen (i)
Next i

'Liste verwenden
If Iselement (regale ("Regal3")) Then
   wert = regale ("Regal3")
End If
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: Frank_B am 08.06.16 - 12:24:47
danke an alle hier.

U.a. die Tipps mit dem "Ubound" waren sehr hilfreich, da mir das ja auf einfachste Weise die Gesamtanzahl der Werte im Item zurückgibt (bei 0 beginnend, also -1) und mit ner for-Schleife kann ich ja dann suchen und finden.

In meiner Funktion fürs Exiting läufts nun:

const f5 = "r_art_"

     For i = 0 To UBound (pdoc.typ)
   if pdoc.typ(i) = uidoc.FieldGetText(f5+Cstr(val02)) Then
     Print pdoc.abmessungen(i)   '<- hier stehen die gesuchten Abmessungen
        End If
     Next i

Der "Ubound" war mir neu, noch nie verwendet  :D
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: koehlerbv am 08.06.16 - 13:33:40
Warum machst Du nach dem
       If pdoc.typ (i) = uidoc.FieldGetText (f5 + Cstr (val02))
noch weiter mit der Schleife? Hier kann doch mit Exit For leise Servus gesagt werden  ;)

Bernhard
Titel: Re: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)
Beitrag von: Frank_B am 08.06.16 - 14:24:00
...ooops, wie recht du hast  :)