2024/08/03

ロケーション文書の操作

ノーツクライアントの管理をしていると連絡先(names.nsf)の各種設定(文書)の確認や設定変更が必要となることがあります。このような作業は得てしてトラブル対応の場合に多く、時間的余裕がないことが多々あります。そんな状況に備えて、手順を整理しておきます。

先日、ロケーション文書の設定の確認が必要になりました。今回は、その際に利用したプログラムをサンプル化して保管しておきます。


ロケーション文書の取得

まずはすべてのロケーションを順に取得する方法です。

連絡先である names.nsf の Locations ビューに接続。順に文書を取得するだけの単純なプログラムです。下記のサンプルでは文書内の Name フィールドからロケーション名を取得して表示しているだけです。実際には、この部分を必要な処理に変えるだけですね。

Option Declare

Sub Initialize
   Dim ns As New NotesSession
   Dim ndb As NotesDatabase
   Dim nvLoc As NotesView
   Dim ndLoc As NotesDocument
   Dim s As String

   Set ndb = ns.GetDatabase("","names.nsf")

   'ロケーション文書を順に調査
   Set nvLoc = ndb.GetView("Locations")
   Set ndLoc = nvLoc.GetFirstDocument
   While Not (ndLoc Is Nothing)
      '発見
      'ロケーションに対する処理をここに記述

      s = ndLoc.GetItemValue("Name")(0)
      MsgBox s

      Set ndLoc = nvLoc.GetNextDocument(ndLoc)
   Wend
End Sub


現在のロケーションを取得

次は、現在使用中のロケーションだけを取得する方法です。

現在使用中のロケーション名は notes.ini の Location というエントリーに格納されています。NotesSession クラスの GetEnvironmentString メソッドで取得しています。

その値と各ロケーション文書の名称を比較して、現在使用中のロケーションを判断しています。

Option Declare

Sub Initialize
   Dim ns As New NotesSession
   Dim ndb As NotesDatabase
   Dim nvLoc As NotesView
   Dim ndLoc As NotesDocument
   Dim sCur As String
   Dim s As Variant

   Set ndb = ns.GetDatabase("","names.nsf")

   'notes.ini から現在のロケーション名を取得
   sCur = ns.GetEnvironmentString("Location", True)
   sCur = StrLeft (sCur, ",")


   'ロケーション文書を順に調査
   Set nvLoc = ndb.GetView("Locations")
   Set ndLoc = nvLoc.GetFirstDocument
   While Not (ndLoc Is Nothing)
      s = ndLoc.GetItemValue("Name")(0)
      If s = sCur Then

         '発見
         'ロケーションに対する処理をここに記述

         MsgBox s
      End If

      Set ndLoc = nvLoc.GetNextDocument(ndLoc)
   Wend
End Sub


0 件のコメント:

コメントを投稿