2012-01-25 27 views
1

で値を比較する場合、この質問は、私はケンの提案に従うことをしようとしていますmy original question型の不一致LotusScriptの

に関連しています。だから私はちょうど元と最後に保存された値が同じ場合、私は少なくともメッセージボックスをポップアップできるかどうかを確認したい。ここに私が設定したことがあります。その後のQueryOpen上

Global declaration 
Dim originalValues(2) As Variant 
Dim lastValues(2) As Variant 

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)次に

「タイプミスマッチ」というエラーが表示され、その理由がわかりません。私はコードをデバッグし、配列の値はすべて同じです。配列にもVariantデータ型があります。私はここで何が間違っていますか?

答えて

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で比較をするときに同じタイプを比較する必要があります