2010年1月23日土曜日

NotesDirectory クラスをさわってみた

先日の投稿に関連して、ディレクトリアシスタントを使った(複数のアドレス帳で認証する)環境でもグループ検索を可能にするものはないかとDesigner ヘルプを開いたところ、8 から追加された Lotus Script のクラスに NotesDirectory なるものがありました。

これについて学ぼうと記述例なんぞを探してみたのですが、関連するプロパティやメソッドの文書の例の多くが、本文に TBD (= to be determined:将来決定する、未使用)と書かれているだけでした...orz

もっとひどいのは NotesDirectoryNavigator クラスで、プロパティやメソッドの記述例の文書がひとつもありゃしない...

ここはテストして学ぶしかないかぁ~

というわけで、以下、テストの結果です。Notes(Basic)8.0.1で実験してます。

テスト用に作成したエージェント
Dim ss As New NotesSession
Dim nd As NotesDirectory
Dim ndnav As NotesDirectoryNavigator
Dim strServer$, strView$
Dim strName as String
Dim strItem as String

strServer = "server1/org"
strView = "$NamesFieldLookup"
strName = "hoge hoge1/org"
strItem = "FullName"

Set nd = ss.GetDirectory(strServer)
Set ndnav = nd.LookupNames(strView, strName, strItem, False)

If ndnav.NameLocated Then
 If ndnav.MatchLocated Then
  Print "登録済み"
 Else
  Print "未登録"
 End If
End If

NotesSession.GetDirectory
指定したサーバーが存在しなくても NotesDirectory オブジェクトはできますが、その後
NotesDirectory.LookupNames を実行すると、サーバーを検索した後、次のように最後が文字化けしたようなメッセージが表示されました...orz

----------------------
LookupNames が失敗しました:
サーバーへのパスが見つかりません。ネットワーク接続を確認してください。
接続に問題がなければ、[プリファレンス] - [Notes のポート] - [トレース]をクリックして、問題を特定してく■
----------------------

NotesDirectory.LookupNames("ビュー名", 検索する名前, アイテム名, 部分一致)
"検索する名前"と"アイテム名"は単一の文字列、または配列です。一度に複数の名前を検索することができ、複数のアイテム値を戻すことができます。

指定したビューが存在しない場合も NotesDirectoryNavigator オブジェクトが作成されました。
隠しビュー(ビュー名が括弧でかこまれたビュー)は括弧をつけなくても機能しました。

一致する名前が見つかると次のようになりました
MatchLocated が True (みつからないと False)
CurrentMatches が 1以上の値 (みつからないと 0)
CurrentMatch は見つかるかどうかにかかわらず 1 (よくわからん...)

当方ではディレクトリアシスタントを利用して2つのドミノディレクトリで運用していますが、どちらのドミノディレクトリからも検索できました。
どちらのドミノディレクトリにもある名前で検索してみたところ、検索結果が複数になり、NotesDirectoryNavigator のメソッドで読み出すことができました。

詳しくは後日、今日はココでご勘弁ください m(_ _)m

0 件のコメント:

コメントを投稿