ある掲示板で誰がいつその文書を読んだのかという履歴を
とっておきたい場合があろうかと思います。
ここで紹介するのは、そんな場合に、その文書を読み込んだ時点で、
読込履歴を子文書に書き込んでしまおうという機能です。
というか、自分の部署では週報を1DBに登録・管理しているのですが、
上司からのレスが無い場合、本当に上司が読んでくれたの??
というのがこの機能を作った理由だったりします。(爆
[ここから作成方法]まず、読込履歴を溜め込む文書を表示させるフォームを作成します。
「readrecord」というフォームを作成し、フォームの種類を「返答」に。
SubjectフィールドとBodyフィールドを設置します。
Bodyフィールドはリッチテキストフィールドで。
次に、実際読込を行う文書を作成・読込するためのフォームの
QueryOpenに以下スクリプトを書き込みます。
一部、文書作成完了してるかどうかのフラグ制御している部分は
一例として残していますが、
読み込む文書の構成により変更若しくは削除してください。
※R6以降ではkai変数への代入はchr(13)にしたほうがいいらしいです。
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
'読込履歴情報をためる*****************
If source.IsNewDoc Then
Exit Sub
End If
Dim session As New NotesSession
Dim db As NotesDatabase
Dim Rdoc As NotesDocument
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set doc = Source.Document
'文書のフラグが作成完了でない場合は、履歴を保存しない
If doc.flag(0) <> "作成完了" Then
Exit Sub
End If
'文書作成者と読込者が同じ場合は、履歴を保存しない
NArray = Session.UserNameList
Dim user As String
user = session.UserName
If doc.From(0) = user Then
Exit Sub
End If
Dim collection As NotesDocumentCollection
Dim Cdoc As NotesDocument
Set collection = doc.Responses
Set Cdoc = collection.GetFirstDocument()
For j = 1 To collection.Count
If Cdoc.Form(0) = "readrecord" Then
'読込履歴があった場合
Gosub CHANGERECORD
End If
Set Cdoc = collection.GetNextDocument( Cdoc )
Next
'読込履歴が無かった場合
Set Rdoc = New NotesDocument ( db )
Call Rdoc.MakeResponse( doc )
Rdoc.Form = "readrecord"
Rdoc.Subject = "★ 読込履歴情報"
Rdoc.Body = NArray(0).common + " 日時:" _
+ Cstr(Now)
Call Rdoc.save(True, True)
Exit Sub
CHANGERECORD:
'読込履歴がある場合
kai = Chr(10)
naiyou = Cdoc.Body(0) + kai + _
NArray(0).common + " 日時:" + Cstr(Now)
Cdoc.Body = naiyou
Call Cdoc.save(False, True)
Exit Sub
End Sub
最後に、読込履歴(子文書)を表示できるように
現在使用されているビューに対し設計変更をしてください。
[1回]
PR
COMMENT
つい笑ってしまいました
実言うと、
実際に実装したときは裏ビューつくって、そこで監視してました(爆