将值与lotusscript进行比较时输入不匹配

Joh*_*wan 1 lotus-notes lotusscript

这个问题与我原来的问题有关

我想跟随肯的建议.所以我只想知道如果原始和上次保存的值相同,我是否至少可以弹出一个消息框.以下是我设置的内容.

Global declaration  
Dim originalValues(2) As Variant
Dim lastValues(2) As Variant
Run Code Online (Sandbox Code Playgroud)

然后在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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

现在谈到这条线

如果lastValues(i)= originalValues(i)那么

我收到错误'Type Mismatch',我不明白为什么.我调试了代码,数组中的值都是一样的.该数组也具有Variant数据类型.我在这做错了什么?

Ken*_*isa 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)
Run Code Online (Sandbox Code Playgroud)

lastValues(0) = doc.QCR_No(0)
lastValues(1) = doc.QCR_Mobile_Item_No(0)
lastValues(2) = doc.QCR_Qty(0)
Run Code Online (Sandbox Code Playgroud)

那么你应该在PostSave中进行比较时比较相似的类型