我想跟随肯的建议。所以我只想知道如果原始和上次保存的值相同,我是否至少可以弹出一个消息框。以下是我设置的内容。
Global declaration
Dim originalValues(2) As Variant
Dim lastValues(2) As Variant
然后在queryopen上:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
' Current document
Dim doc As NotesDocument
Set doc = Source.Document
' Array containing original value
originalValues(0) = doc.QCR_No
originalValues(1) = doc.QCR_Mobile_Item_No
originalValues(2) = doc.QCR_Qty
End Sub
PostSave
Sub Postsave(Source As Notesuidocument)
' Current document
Dim doc As NotesDocument
Set doc = Source.Document
' Load fields value to the array
lastValues(0) = doc.QCR_No
lastValues(1) = doc.QCR_Mobile_Item_No
lastValues(2) = doc.QCR_Qty
' 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
Messagebox "Same", MB_OK
End If
Next
End Sub
现在谈到这一行
如果lastValues(i)= originalValues(i)那么
我收到错误'Type Mismatch',我不明白为什么。我调试了代码,数组中的值都是一样的。该数组也具有Variant数据类型。我在这做错了什么?
答案 0 :(得分:5)
使用便捷属性(即doc.ItemName)访问项目时,实际上是在访问一组值。 99%的时间只想获得该数组中的第一个值,因此您需要将其指定为doc.ItemName(0),例如:
originalValues(0) = doc.QCR_No(0)
originalValues(1) = doc.QCR_Mobile_Item_No(0)
originalValues(2) = doc.QCR_Qty(0)
和
lastValues(0) = doc.QCR_No(0)
lastValues(1) = doc.QCR_Mobile_Item_No(0)
lastValues(2) = doc.QCR_Qty(0)
然后你应该在PostSave中进行比较时比较相似的类型