当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2011年4月7日木曜日

設計情報の抽出

気がついたら4月です。
3月は、社会的にも個人的にも色々とありまして記事を書くことが出来ませんでした。
中には「あぁ。このブログももう終わりかぁ」なんて思った方もいらっしゃるかと思いますが、そんなことはありません!頑張って書いていきます!

ちなみに、当ブログもすでに4年目に突入しています!まだまだLotus Notes/Dominoで押していきますのでよろしくお願いします。

筆者を応援するためのボタンはこちら!
にほんブログ村 IT技術ブログへ



さて、今日は設計情報の抽出にチャレンジしてみましょう。

ノーツDBにはフォームやらビューやらエージェントやら、色々な設計情報があります。
LotusScriptのNotesNoteCollectionクラスを使うことにより、どんな設計情報があるのかを調べることが可能になります。

今回のサンプルは、ノーツDBの中に、何個のフォームがあり、それの名称および別名を取得して画面に表示するというものです。
Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db      As     NotesDatabase
    Dim ndocs   As     NotesNoteCollection
    Dim ndoc    As     NotesDocument
    Dim nid     As     String
    Dim i       As     Integer
    Dim ret     As     String
    Dim tmpData As     String
    
    Set db = session.CurrentDatabase
    ' フォームだけのコレクションとする
    Set ndocs = db.CreateNoteCollection( False )
    ndocs.SelectForms = True
    Call ndocs.BuildCollection()
    
    i = 1
    nid = ndocs.GetFirstNoteId()
    Do While nid <> ""
        Set ndoc = db.GetDocumentByID( nid )
        
        tmpData = ""
        ' フォーム名は$TITLEに格納されている
        ForAll x In ndoc.GetItemValue( "$TITLE" )
            If tmpData = "" Then
                tmpData = x
            Else
                tmpData = tmpData & "| " & x
            End If
        End ForAll
        
        ret = ret & CStr(i) & ". " & tmpData & Chr$(10)
        
        nid = ndocs.GetNextNoteId( nid )
        i = i + 1
    Loop
    MsgBox ret, 0, "全フォーム数: " & CStr(ndocs.Count)
End Sub



下図は、筆者のテスト用のノーツDBでの実行結果です。
別名が複数あっても取得できていることが分かりますでしょうか。


どうでしょう?割と簡単に行えることが分かっていただけたでしょうか?
色々と応用することが出来ますので、試してみてください。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: