当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2010年3月19日金曜日

アクセス制御リストの変更履歴を取得する

今週最後のランキング協力お願いです
にほんブログ村 IT技術ブログへ


昨日に続き、アクセス制御リスト関連のネタです。
今日はアクセス制御リストの変更履歴を取得してみましょう。

まずは、下の画面を見てください。
とあるDBのアクセス制御リストのログ画面です。
ここには、ACLを変更した際の履歴が、過去20件に渡って記録されています(それを超えると、古いものから削除されていきます)。
この画面では、「日付時刻」と「アクション」の2つの列に分かれていることが分かります。


では、実際に取得してみましょう。
下のサンプルがそれです。

気になるのは、ログを取得するのがNotesACLクラスではなく、NotesDatabaseクラスのプロパティであること。
ACL情報だからNotesACLクラスだろう。というのは誤りだと言うことです。
また、ログは1件が1つの文字列として取得されると言うことです。
日付時刻やアクションという単位で分かれていないのです。
もし、日付時刻だけ取得したいと言う場合には注意が必要です。

ちなみに、下図が実行結果です。


Sub Click(Source As Button)
    Dim uiws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim udoc As NotesDocument
    Dim curdb As NotesDatabase
    Dim cnt As Integer
    Dim acllog As String
    
    '自DBの取得
    Set uidoc = uiws.CurrentDocument
    Set udoc = uidoc.Document
    Set curdb = udoc.ParentDatabase
    
    '変数の初期化
    acllog = "【変更の履歴】"
    cnt = 1
    
    'アクセス制御リストのログの取得(文字列の配列で返すので、Forallで取得する)
    Forall x In curdb.ACLActivityLog
        acllog = acllog & Chr$(10) & Format(Cstr(cnt), "00") & ": " & x
        cnt = cnt + 1
    End Forall
    
    '結果の表示
    Msgbox acllog, 0, "アクセス制御リスト: " & curdb.Title
End Sub



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: