Autor Thema: Zwei Items mit mehreren Werten auslesen (Array notwendig? Index?)  (Gelesen 3203 mal)

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
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?
« Letzte Änderung: 08.06.16 - 12:25:01 von Frank_B »
Gruß Frank

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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
« Letzte Änderung: 08.06.16 - 11:02:13 von koehlerbv »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
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

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
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.
Gruß Frank

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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.

Offline AlexZX

  • Frischling
  • *
  • Beiträge: 35
Code
wert = NotesDocument.Abmessungen(ArrayGetIndex(NotesDocument.Typ, "Regal3", 0))
« Letzte Änderung: 08.06.16 - 11:23:11 von AlexZX »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
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

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
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
Gruß Frank

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline Frank_B

  • Senior Mitglied
  • ****
  • Beiträge: 275
  • Geschlecht: Männlich
...ooops, wie recht du hast  :)
Gruß Frank

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz