我正在尝试为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
答案 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
方法,您使用的是优先选择。