2

我必须找到一种方法来存储一系列变量——MonthYear(键)和一个计数器。这样做的目的是跟踪按月和年处理的文档数量。我正在考虑一个列表,但我不确定如何保存数据,以便它可以读取并能够在以后显示在表格中。我考虑过使用多维数组 - someArray(1,0 to 1) 并在每次开始新的 MonthYear 时重新调整它,然后将其保存回文档上的一个字段,但不确定会如何播出。有谁知道我如何做到这一点?

第一个维度是 MonthYear(键),第二个维度是每次处理新文档时更新的计数器。

  1. 密钥将基于正在处理的文档上的字段。如何确保我正在更新正确的键/计数器组合?

  2. 如何从文档上的字段中检索现有计数器,更新计数器然后替换值?

我想过每次处理文档时只添加一个新元素(ReDim),而不是以某种方式将每个键的所有计数器相加并将其存储在一个数组中,但这看起来真的很混乱。必须有一个好的方法来做到这一点。

任何和所有的想法将不胜感激

4

1 回答 1

6

我能想到的最简单的结构是“列表”。这是一个快速示例,它使用列表将值“往返”到文档中并返回到列表中。剪切并粘贴到代理中进行测试(不要忘记将代理属性的“运行时”目标设置为“无”)

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

方便的方面是您可以根据需要声明每个新项目(无 Dim'ing)。您可以通过有意义的键(月份和年份或其他)访问任何值。您可以使用与键匹配的字段名称来加载或仅将值保留在多值字段中并使用示例中的特定分隔符。此外,当您递增时,您不必在数组中搜索要递增的正确值,您可以根据标签引用它,然后将其递增。我认为这很简单。

Domino 设计器帮助包含有关列表的大量信息。如果需要验证列表元素是否存在,请查看“isElement”函数。

于 2012-04-13T05:24:47.273 回答