フィールドの種類を「ダイアログリスト」にしてプロパティボックスの「制御」タブにある「選択」で "[ビュー] ダイアログから選択" を選ぶと、データベースのリストが表示されます(下図)。
このデータベースのリストは開発者のノーツのワークスペースにあるデータベースがリストされている(と思っている)のですが、ワークスペースにレプリカが複数あるデータベースは、このリストにも複数表示されます。上の図では、リストに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 件のコメント:
コメントを投稿