Search code examples
lotus-noteslotusscript

How to create array of lists in LotusScript


I have code like this:

    Dim MyACL As Variant
    Dim Person As List

    Redim MyACL(0)

    Person("Detail1") = "Something1"
    .
    .
    .
    Person(Detailx") = "Somethingx"

    ForAll name in names
       ReDim Preserve MyAcl(Ubound(MyACL)+1)
       Person("Name") = name
       MyACL = ArrayAppend(MyACL,Person)
   End ForAll

It throws error "Type Mismatch". Do you know, how to create an array of lists? Thank you.


Solution

  • If you explicitely declare a variable as Array (as you do in your Redim Statement), then it can not be "reassigned" using arrayappend.

    And it is NOT necessary to do it that way. just replace the line MyACL = ArrayAppend(MyACL,Person) with MyACL(Ubound(MyACL)) = Person

    Take care: With that example code you will never fill MyACL(0) as the first Element filled is MyACL(1)

    To begin filling the array with element 0 the code needs to be changed like this:

    Dim max As Integer
    max = 0
    ForAll thisName In names
        ReDim Preserve MyAcl(max)
        Person("Name") = thisName
        MyACL(max) = Person
        max = max + 1
    End ForAll
    

    BUT: I don't know, if this is a good idea, as you can not access the "Detail1- Property" of Person directly.

    Something like

    detail = MyACL(1)("Detail1")
    

    is not possible. You always have to have a temporary variable like this:

    person = MyACL(1)
    detail = person("Detail1")