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

时间:2012-01-25 15:39:25

标签: lotus-notes lotusscript

此问题与my original question

有关

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

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数据类型。我在这做错了什么?

1 个答案:

答案 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中进行比较时比较相似的类型