2010年2月23日火曜日

アプリケーションのプロパティを変える

アプリケーション内では、データと同様に設計要素にも NoteID が割り当てられます。
通常、文書に割り振られる NoteID は、UNID とは違い、レプリカであっても同じ NoteID にはならないそうです。

しかしながら、アイコンの絵柄が保存される Note はどのアプリケーションにも同じ NoteID が割り振られ、

NotesDatabase.GetDocumentByID( "FFFF0010" )

とすることで NotesDocument オブジェクトとして取得できます。

ところで、この Note にはアイコンの図柄のほかにアプリケーションのプロパティの一部も保存されているのをご存知でしょうか。

アプリケーションのプロパティにあるラジオボタンやチェックボックスなどで選択された値の一部は $Flags というアイテムに英数字で保存されています。

もちろん、これらの値は変更できます。

下の Lotus Script では、プロパティにある5つのチェックボックスを無効にします。
Sub Initialize
    Dim ss As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim item As NotesItem

    Set db = ss.CurrentDatabase
    Set doc = db.GetDocumentByID( "FFFF0010" )
    Set item = doc.GetFirstItem( "$Flags" )
    Print item.Text
    Dim strFind( 4 ) As String
    Dim strReplace( 0 ) As String
    strFind( 0 ) = "N" '文書データの圧縮
    strFind( 1 ) = "q" 'データベース設計の圧縮
    strFind( 2 ) = "H" '返答スレッド履歴のサポート
    strFind( 3 ) = "7" 'データベースで多くのフィールドを許可
    strFind( 4 ) = "2" '文書テーブルマップの最適化
    strReplace( 0 ) = ""
    item.Values = Replace( item.Values, strFind, strReplace )
    Call doc.Save( True, False )
End Sub

それぞれのプロパティの項目とその値は下のサイトなどを参照ください。

(参考)プログラムを使用してデータベースプロパティを変更する方法
Programmatically change database properties

0 件のコメント:

コメントを投稿