Autor Thema: Lotus Script Verständnis Problem  (Gelesen 2648 mal)

TomLudwig

  • Gast
Lotus Script Verständnis Problem
« am: 10.10.03 - 10:45:46 »
Hi,
ich habe volgendes Code-Beispiel gefunden, kann es mir jemand erklären?

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim flag As Variant
   Dim sForm As String
   Dim autoHorzFit As Variant
   Dim autoVertFit As Variant
   Dim noCancel As Variant
   Dim noNewFields As Variant
   Dim noFieldUpdate As Variant
   Dim readOnly As Variant
   Dim title As String
   Dim doc As NotesDocument
   Dim sizeToTable As Variant
   Dim noOKCancel As Variant
   
   Dim value As Variant
   Dim docThis As NotesDocument
   Dim i As Integer
   Dim vResult As Variant
   Dim sCol1() As String
   Dim sCol2() As String
   
   sForm = "(AuswahlKundenIntern)"
   autoHorzFit = True
   autoVertFit = True
   noCancel = False
   noNewFields = True
   readOnly = False
   title = "Auswahl der internen Kunden"
   Set doc = Nothing
   sizeToTable = True
   noOKCancel = False
   flag = ws.DialogBox( sForm , autoHorzFit , autoVertFit  , noCancel  , noNewFields , noFieldUpdate , readOnly , title ,  , sizeToTable , noOkCancel  )

Bis hier ist alles in ordnung. Dann fangen meine Probleme an...
   If flag = True Then
      Set docThis = ws.CurrentDocument.Document
      value = docThis.Liste_Intern
      If value(0) <> "" Then
         Redim sCol1( Lbound(value) To Ubound(value))
         Redim sCol2( Lbound(value) To Ubound(value))
         For i = Lbound(value) To Ubound(value)
            vResult = Evaluate( |@Explode("| + value(i) + |" ; "#")| )
            sCol1(i) = vResult(0)
            sCol2(i) = vResult(1)
         Next
         docThis.Kunde_Intern_Nummer = sCol2
         docThis.Kunde_Intern_Name = sCol1
      End If      
   End If
End Sub

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Lotus Script Verständnis Problem
« Antwort #1 am: 10.10.03 - 10:52:56 »
du musst dir in der Designer Hilfe eignetlich nur die Hilfe zu den entsprechenden Funktionen anschauen - gibt auch nen deutlich besseren Lerneffekt, als wenn jemand den Code in natürliche Sprache übersetzt

schau einfach mal was Ubound und LBound machen
was Redim dann mit den gelieferten Ergebnissen macht
und was die @Explode-Funktion macht

dürfte kein Problem sein, wenn du den oberen Teil sowieso schon verstehst.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

TomLudwig

  • Gast
Re:Lotus Script Verständnis Problem
« Antwort #2 am: 10.10.03 - 10:56:46 »
Hab ich ja schon...

und genau mit diesen Funktionen hab ich des Problem. Der rest is dann wieder kein Problem mehr...

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Lotus Script Verständnis Problem
« Antwort #3 am: 10.10.03 - 11:19:53 »
ach so.
Ubound bzw. Lbound liefern dir die obere bzw. untere Grenze eines Arrays
z.B.
a(0)=1
a(1)=2
a(2)=3

Ubound liefert 2, Lbound liefert 0

Redim ändert die Größe eines Arrays
Redim a(0 to 2) erzeugt ein Array mit 3 Feldern (0, 1, 2)

@Explode macht eine Liste aus einem String, Trennzeichen zwischen Listenelementen kannst du definieren
@Explode("1+2+3"; "+") liefert dir
"1"
"2"
"3"
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

TomLudwig

  • Gast
Re:Lotus Script Verständnis Problem
« Antwort #4 am: 10.10.03 - 12:18:55 »
Also....

 If flag = True Then
      Set docThis = ws.CurrentDocument.Document Das ist dann die Maske die ich im Dialog aufrufe
      value = docThis.Liste_InternDas sind die Markierten Werte in einem Array ODER?
      If value(0) <> "" Then
         Redim sCol1( Lbound(value) To Ubound(value))Redim hab ich verstanden aber wie funktioniert Lbound und Ubound Zählt das die ArrayElemente in value? Dann müsste Lbound doch immer 0 zurückgeben
         Redim sCol2( Lbound(value) To Ubound(value))
         For i = Lbound(value) To Ubound(value)
            vResult = Evaluate( |@Explode("| + value(i) + |" ; "#")| )Explode hab ich verstanden....
            sCol1(i) = vResult(0)
            sCol2(i) = vResult(1)
         Next
         docThis.Kunde_Intern_Nummer = sCol2
         docThis.Kunde_Intern_Name = sCol1
      End If      
   End If



Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Lotus Script Verständnis Problem
« Antwort #5 am: 10.10.03 - 12:32:49 »
Also....

 If flag = True Then
      Set docThis = ws.CurrentDocument.Document Das ist dann die Maske die ich im Dialog aufrufe
jein. es ist das Dokument, das du gerade in der Dialogbox geöffnet hast
      value = docThis.Liste_InternDas sind die Markierten Werte in einem Array ODER?
das sind die Werte, die in dem Feld Liste_Intern stehen. Wahrscheinlich sind das dann auch die, die ausgewählt sind
      If value(0) <> "" Then
         Redim sCol1( Lbound(value) To Ubound(value))Redim hab ich verstanden aber wie funktioniert Lbound und Ubound Zählt das die ArrayElemente in value? Dann müsste Lbound doch immer 0 zurückgeben
Arrays können auch mit dem Index 1 beginnen. in deinem Fall gibts aber immer 0, das ist korrekt
         Redim sCol2( Lbound(value) To Ubound(value))
         For i = Lbound(value) To Ubound(value)
            vResult = Evaluate( |@Explode("| + value(i) + |" ; "#")| )Explode hab ich verstanden....
            sCol1(i) = vResult(0)
            sCol2(i) = vResult(1)
         Next
         docThis.Kunde_Intern_Nummer = sCol2
         docThis.Kunde_Intern_Name = sCol1
      End If      
   End If




so langsam wirds doch
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

TomLudwig

  • Gast
Re:Lotus Script Verständnis Problem
« Antwort #6 am: 10.10.03 - 12:38:41 »
Vielen Dank, ich habs kapiert....

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz