我不知道这是否可能。我想创建一组数组,每个数组都以另一个数组中的值命名。即: cat(0)" TRENDS" 猫(1)"机遇" cat(2)" TARGET ACCOUNTS" 猫(3)'成就" cat(4)" LOST SALES"" cat(5)" QUOTES"
基于此返回,我想为上面的每个值创建数组。即: TRENDS(0) 机会(0) TARGETACCOUNTS(0) 成绩(0) LOSTSALES(0) 报价(0)
请注意,cat数组中返回的值可能会更改,因此硬编码数组名称不可行。
我已经搜索过代码来执行此操作无济于事。任何人都有任何想法或代码如何做到这一点。
提前致谢。
麦克
答案 0 :(得分:1)
您实际上可以使用NotesItem类。例如,您创建一个虚拟NotesDocument并将其用作数组的容器,如下所示:
dim s as new NotesSession
dim myArrays as NotesDocument
dim item as NotesItem
set myArrays = new NotesDocument(s.currentDatabase)
ForAll name in cat
set item = new NotesItem(myArrays,name,"")
end ForAll
假设您在问题文本中的cat()数组中的值,您现在可以使用简写表示法通过NotesDocument和NotesItems访问这些数组:
' get the nth element
dim x as string
x = myArrays.Trends(n)
' set the nth element
myArrays.Opportunities(n) = "some value"
' assign the entire array
dim someArray(50) as integer
' code to initialize someArray here
myArrays.TargetAccounts = myArray
' loop through the array
For i = 0 to ( ubound(myArrays.Quotes) - 1)
x = myArrays.Quotes(i)
Next
etc.
etc.
您永远不必保存myArrays文档。只要它在代码中保留在范围内,它及其包含的项目就会很好。
您还可以使用NotesItem的AppentToTextList方法以及GetItemValue和SetItemValue方法,而不是使用LotusScript简写表示法。
另外,请注意我的示例代码中的New方法仅设置每个数组的zero-eth元素。如果需要,您可以更改它以从已加载到内存中的临时数组中设置整个值数组。
当然,您必须小心数据类型。我在调用contructor时使用的value参数在所有情况下都是一个字符串。您可以轻松使用其他类型,如NotesItem的文档中所示。
最后的警告:这并不像使用本机LotusScript数组那样高效,但在大多数情况下,这可能不是一个大问题。
答案 1 :(得分:0)
不,变量名在编译时设置。最好的办法是使用一个关联数组,在LotusScript中称为List。