Lotus notes 尝试在LotusScript中使用多值数组时遇到了一些问题
我必须找到一种方法来存储一系列变量-MonthYear(键)和一个计数器。其目的是跟踪按月和按年处理的文档数量。我正在考虑一个列表,但我不知道如何保存数据,以便它可读,并能够在以后的日期显示在表中。我考虑过使用多维数组-someArray(1,0到1),每次我开始新的MonthYear时都重新编辑它,然后将它保存回文档上的一个字段,但不确定这将如何进行。有人知道我怎样才能做到这一点吗 第一个维度是MonthYear(键),第二个维度是计数器,每次处理新文档时都会更新计数器Lotus notes 尝试在LotusScript中使用多值数组时遇到了一些问题,lotus-notes,lotus,lotusscript,Lotus Notes,Lotus,Lotusscript,我必须找到一种方法来存储一系列变量-MonthYear(键)和一个计数器。其目的是跟踪按月和按年处理的文档数量。我正在考虑一个列表,但我不知道如何保存数据,以便它可读,并能够在以后的日期显示在表中。我考虑过使用多维数组-someArray(1,0到1),每次我开始新的MonthYear时都重新编辑它,然后将它保存回文档上的一个字段,但不确定这将如何进行。有人知道我怎样才能做到这一点吗 第一个维度是MonthYear(键),第二个维度是计数器,每次处理新文档时都会更新计数器 密钥将基于正在处理的文
任何和所有的想法都将受到极大的赞赏我能想到的最简单的结构就是“列表”。下面是一个快速的示例,“往返”将值与列表一起放在文档上并返回到列表中。剪切并粘贴到要测试的代理中(不要忘记将代理属性的“Runtime”目标设置为“None”) 方便的方面是,您可以根据需要声明每个新项目(无需标注)。您可以通过一个有意义的键(月、年或其他)访问任何值。您可以使用与要加载的键匹配的字段名,或者只将值保留在多值字段中,并使用特定的分隔符,如示例中所示。此外,当您递增时,您不必搜索一个数组来查找要递增的正确值,您可以根据标记引用它,然后只递增它。我认为这是最简单的
DominoDesigner帮助提供了关于列表的大量信息。如果需要验证列表元素是否存在,请查看“isElement”函数。谢谢。我会尝试一下,看看我能得到什么。在使用Notes和现在的XPages工作了20年之后,我很惭愧地说我以前从未使用过列表。多米诺骨牌就像一座冰堡,80%的骨牌都隐藏在表面之下。直到你遇到它,你才知道它。列表是很棒的东西。它们是关联数组,无需重新命名,您可以在其中填充任何内容(甚至对象)。不太方便的是,缺少从Notes文档加载或保存列表的简单方法,以及在使用值之前必须使用iElement。我们不得不问这样的问题,这让我非常讨厌LotusScript。它是一种半实现的语言。@iconoclast。你是真的吗?这类问题与语言无关,只是使用正确的工具来解决问题。所以,你也应该从思想上憎恨java。Java拥有的集合/列表/地图/树的数量是你所能看到的数倍。如果你也要研究这个问题的话,就很难确定什么是解决这个问题的正确工具。虽然LS不如java强大,但它比java更容易解决这个问题。算了吧,LS只是另一种语言,一旦你以这种方式看待技术,你就会平静下来。@giulio:我同意你对Java的批评,但我不确定你为什么反对指出一种语言的缺陷,因为你在批评Java。请记住,除了这两种语言之外,还有其他语言。我建议你学习一些,因为你可能会学会欣赏他们所提供的东西。LotusScript只是另一种语言,但并不是所有语言都是平等的。@iconclast我不反对你指出任何语言的缺陷,也不反对LS。如果你重读我写的东西,我会指出你的缺点,因为你对一项技术的使用方式一无所知,从而混淆了你的个人偏见(即“仇恨”)。但是如果你不明白这一点,那么我或你所知道的编程语言的数量是无关紧要的,因为这个论点现在已经有了回报迅速减少的所有迹象。
Sub Initialize
Dim session As New notesSession
Dim counter List As String
Dim sValue As String
Dim doc As notesDocument
Dim itCounters As NotesItem
Dim db As notesDatabase
Dim i As Integer
Dim vResult As Variant
Dim vValues As Variant
Set db = session.CurrentDatabase
Set doc = db.CreateDocument
Set itCounters = doc.ReplaceItemValue("counters","")
counter("201201") = 16
counter("201202") = 1
counter("201203") = 10
counter("201204") = 5
' print the tags
Forall k In counter
Print Listtag(k)
End Forall
' adding the values (and tags)
Forall k In counter
Print "[" + Listtag(k) + "]:" + counter(Listtag(k))
sValue = Listtag(k) + "!" + counter(Listtag(k))
itCounters.AppendToTextList(sValue)
End Forall
'retrieving
Erase counter
Set itCounters = doc.GetFirstItem("Counters")
vValues = itCounters.Values
For i = 0 To Ubound(vValues)
vResult = Split(vValues(i), "!")
counter(vResult(0)) = vResult(1)
Next
Forall k In counter
Print "[" + Listtag(k) + "]:" + counter(Listtag(k))
End Forall
End Sub