2022/03/13

どのサーバーにあるデータベース?

フィールドの種類を「ダイアログリスト」にしてプロパティボックスの「制御」タブにある「選択」で "[ビュー] ダイアログから選択" を選ぶと、データベースのリストが表示されます(下図)。


このデータベースのリストは開発者のノーツのワークスペースにあるデータベースがリストされている(と思っている)のですが、ワークスペースにレプリカが複数あるデータベースは、このリストにも複数表示されます。上の図では、リストに4つの Monitoring Configuration が並んでいいますが、このリストにはサーバー名は表示されません。

これではサーバーにあるデータベースをリストから選びたかったのに、実際はローカルのものを選んでいた、なんてこともあるように思います。まあどれを選んでもノーツ君がうまいことアクセス可能なデータベースに自動で切り替えてくれるんじゃないか、と期待してますが、なんだかモヤモヤします。

私はこのモヤモヤを解消するために、次のようなコードを使ってフォームの設計をファイルへ書き出し、選んだデータベースがどこにあるものなのかを調べることがあります。

Sub Initialize
	Dim ss As New NotesSession
	Dim stream As NotesStream
	Dim nc As NotesNoteCollection
	Dim exporter As NotesDXLExporter
	Dim filename As String
	filename = "c:\temp\exportform.txt"

	'ファイルの関連付け
	Set stream = ss.Createstream()
	If Not stream.open( filename ) Then Exit Sub
	Call stream.Truncate()

	'出力するノートの選択
	Set nc = ss.Currentdatabase.Createnotecollection(False)
	nc.Selectforms = True
	Call nc.Buildcollection()

	'DXLの出力
	Set exporter = ss.Createdxlexporter(nc, stream)
	Call exporter.Process()
End Sub

下は、書き出したファイル(DXL形式)をフィールド名で検索し、field タグの内容を抽出したものです。

<field choicesdialog='view' viewdatabase='CN=xps13/O=v10!!MealReservation' view='Menu' viewcolumn='1' lookupeachchar='false' lookupaddressonrefresh='false'  type='keyword' kind='editable' name='categories'><keywords columns='1' ui='dialoglist'/></field>

黄色の背景色を付けた箇所に "CN=xps13/O=v10" とありますが、これがサーバー名です。ローカルにあるデータベースを選んでいた場合はこの部分が次のようになります。

viewdatabase='MealReservation'

ローカルの場合はサーバー名とそのすぐ右側にあった「!!」がありません。

もっとスマートに調べる方法をご存知でしたら教えてくださると嬉しいです。


0 件のコメント:

コメントを投稿