1

この質問は私の元の質問に関連しています

私はケンの提案に従おうとしています。したがって、元の値と最後に保存された値が同じである場合に、少なくともメッセージボックスをポップアップできるかどうかを確認したいだけです。これが私が設定したものです。

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)の場合

理由がわからない「TypeMismatch」というエラーが発生しました。コードをデバッグしましたが、配列の値はすべて同じです。配列にはVariantデータ型もあります。ここで何を間違えますか?

4

1 に答える 1

6

コンビニエンスプロパティ(つまり、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で比較を行うときに、同様のタイプを比較する必要があります

于 2012-01-25T15:47:53.713 に答える