在Lotus Notes中使用多个值字段

时间:2012-01-30 21:04:28

标签: lotus-notes lotus-domino lotusscript

我正在尝试为Lotus Notes中的表单编写日志记录系统,但我不知道如何附加有关日志字段中更改的字段的信息。有3个字段我使用Log_Date(日期),Log_User和Log_Actions(文本,允许多个值)。

我想如果我在日志字段中添加逗号,它会在显示表单时创建一个新行,但我仍然在案例2行上遇到类型不匹配。

如何将新值附加到日志字段?

Sub Querysave(Source As Notesuidocument, Continue As Variant)
    ' Compare the values in the form after it is saved with its original values when the document is not a new document.    
    Dim doc As NotesDocument
    Set doc = Source.Document

    Dim session As New NotesSession
    Dim user As String
    user = session.CommonUserName

    If newDoc Then
        doc.Log_Date = Now()    
        doc.Log_User = user
        doc.Log_Actions = "New document created."
    Else        
        ' Load fields value to the array
        lastValues(0) = doc.QCR_No(0)
        lastValues(1) = doc.QCR_Mobile_Item_No(0)
        lastValues(2) = doc.QCR_Qty(0)

    ' Compared each value in the array to see if there is any difference
        Dim i As Integer
        For i = 0 To 2
            If lastValues(i) <> originalValues(i) Then
                Select  Case i
                Case 2 : doc.Log_Actions = doc.Log_Actions & "," & "Field QCR_Qty is changed"
                End Select
            End If
        Next
    End If
End Sub

3 个答案:

答案 0 :(得分:2)

doc.Log_Actions返回notesitem。要访问您需要使用的值doc.Log_Actions(0)

答案 1 :(得分:2)

在LotusScript后端类(例如NotesDocument,NotesItem)中,多值字段由数组表示,每个元素的元素都有一个值。为了设置字段的值,doc.Log_Actions是简写(在Domino Designer帮助中称之为“扩展语法”),用于分配数组的第一个(即零下标)元素,但这不适用于获取值。要获得第一个值,您必须使用doc.Log_Actions(0)。要获取或设置第二个值,您必须使用doc.Log_Actions(1)。

因此,您的Case 2代码可能如下所示:

doc.Log_Actions(1) = "Field QCR_Qty is changed"

然而,我的猜测是,您确实希望每次运行此代码时能够不断追加到值列表的末尾。如果(出于任何原因!)Log_Actions项目在文档中不存在,您也希望您的代码能够健壮并且不会让您感到厌烦。为此,您将要执行此操作:

dim actionsItem as NotesItem
if doc.hasItem("Log_Actions") then
   set actionsItem = doc.getFirstItem("Log_Actions")
   call actionsItem.AppendToTextList("Field QCR_Qty is changed")
end if

答案 2 :(得分:1)

或者,

If (Not doc.HasItem("LogActions")) Then
  doc.LogActions = "Field QCR_Qty is changed"
Else
  doc.LogActions = ArrayAppend(doc.LogActions,"Field QCR_Qty is changed")
End If

这相当于NotesItem rhsatrhs方法,您使用的是优先选择。