2006年09月26日

DocumentDiffer クラス (4)

DocumentDiffer クラス (3) に引き続き、コードをご紹介します。

まずはベタですが、チェック対象のフィールドを追加したり外したりする add/removeItem() 関数。 例えば更新履歴のフィールドなど、removeItem("updateHistory") などと外しておくのがお勧めデス。
Sub addItem(doc As NotesDocument, itemName$)
Dim tmpItem As NotesItem

Set tmpItem = doc.getFirstItem(itemName$)
If Not(tmpItem Is Nothing) Then
Call tmpItem.CopyItemToDocument(Me.oldDoc, itemName$)
End If
End Sub

Sub removeItem(itemName$)
Call Me.oldDoc.removeItem(itemName$)
End Sub

続きましては、更新されたフィールドの以前の値を得るための getOldValue() 関数です。 あると意外と便利なのと、内部の仕組みをあるていど隠蔽するために実装してみたり。
Function getOldValue(itemName$) As String
Dim tmpItem As NotesItem

Set tmpItem = Me.oldDoc.getFirstItem(itemName$)
If Not(tmpItem Is Nothing) Then
getOldValue = tmpItem.Text
End If
End Function

そしてデバッグに便利な toString() 関数です。
Function toString() As String
toString = ""
If Me.diffDoc Is Nothing Then
Exit Function
End If

Forall item In Me.diffDoc.Items
toString = toString & item.Name & ": " &
Me.getOldValue(item.Name) & " -> " &
item.Text & Chr(10)
End Forall
End Function

とりあえずこれで最低限のコードはご紹介しました。 次回はお遊びコードを追加してみましょう。
posted by yamachan at 23:51| Comment(0) | TrackBack(0) | my設計パターン
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/1330919

この記事へのトラックバック