投稿

2月, 2011の投稿を表示しています

GetItemValue使用時の注意点

イメージ
花粉が舞う季節になりました。筆者の身体は、徐々に反応してきています。薬で抑えているとはいえ、やはり辛いです。なんとかしないと・・・

と、筆者の花粉症が少しでも良くなるように願いつつ、このボタンをクリックしてください。





さて、今回は、NotesDocumentクラスのGetItemValueメソッドを使用する際の注意点についてです。
何を今更・・・という感じではありますが、再確認してみましょう。

GetItemValueメソッドは、指定した文書のアイテム値を取得するものです。
この時、アイテムは「テキスト」だったり「数値」だったりするため、Variant型で戻されます。
また、アイテムは複数値の場合もあるため、配列として返ってきます。

これを複数値として認識するのではなく、単なる文字列として扱いたい場合は、NotesItemクラスのTextプロパティを使うと良いです。

サンプルは、GetItemValueとTextの違いを比較するためのものです。
textListFというアイテム(フィールド値)には複数の値が格納されているものとします。

Sub Click(Source As Button)     Dim uiws  As New NotesUIWorkspace     Dim uidoc As NotesUIDocument     Dim udoc  As NotesDocument     Dim item  As NotesItem         Set uidoc = uiws.CurrentDocument     Set udoc  = uidoc.Document     Set item  = udoc.GetFirstItem( "textListF" )         MsgBox _     "GetItemValue(0)の値" & Chr$(9) & udoc.textListF(0) & Chr$(10) _     "Text           の値" & Chr$(9) & item.Text, _     MB_OK + MB_ICONINFORMATION, "各プロパティの違い" End Sub


文書リンクの削除

イメージ
今日(2011/02/08)は、夜に雪が降るらしいです。前日は暖かかっただけに、体調を崩しやすくなります。気をつけましょうね。


ということで、今日もボタンをクリックして、体調管理を万全にしましょう!



今回は、NotesRichtextDocLinkクラスの新機能についてです。
RemoveLinkageメソッドですね。
このメソッドですが、デザイナヘルプを読むと、
「8.5の新機能」の文書では、「8.5で追加された新規メソッドです。」と書いてあるのですが、
実際のメソッドの説明文書を読むと、「8.0.2で追加されました。」と書いてあります。
さすがです!
もう、マニュアルについては突っ込みません!!
みなさん、自分で検証しましょう!!


とまぁ、どのバージョンから使えるのかはさておき(8.5では間違いなく動きます)、サンプルを見てみましょう。
ビュー上で動かすようにしてあります。
選択した文書の「Body」フィールドに文書リンクがあれば、問答無用で削除してしまうというものです。
文書リンクが見つからない場合は、その旨のダイアログメッセージを表示しています。

ポイントは、24行目です。ここで、リッチテキスト内に文書リンクがあるかどうかの検索を行っています。
というのも、RemoveLinkageメソッドは引数を持たず、戻り値もないので、文書リンクを見つけられるかどうかにかかっているためです。

サンプルをそのまま実行すると、文書リンクを削除して、文書を上書き保存してしまうので、くれぐれも注意してください。

Sub Initialize     Dim session As New NotesSession     Dim db      As     NotesDatabase     Dim docs    As     NotesDocumentCollection     Dim doc     As     NotesDocument     Dim ritem   As     NotesRichTextItem     Dim rnavi   As     NotesRichTextNavigator     Dim rlink   As     NotesRichTextDocLink         ' カレントDBの取得     Set db …

StampAllMultiメソッドについて

イメージ
今日は8.5のアップデート試験を受験してきました。結果はなんとか合格でした。良かった良かった。

ところで、IBM技術者認定制度のページを見たら、7関連の試験はすべて配信を終了したようですね。1月にはまだ配信されていたはずなので、2月になって終了したと言うことでしょうか。
7.xは2011年の4月末でサポートも切れますし、もはや過去のものですね(でも、7.xユーザは多いですよね・・・)

ということで、今日も下のボタンをクリックして、筆者に貢献してください。

ありがとうございます!!


さてさて、今日は、Lotus Notes/Domino 8.5で追加されたメソッド「StampAllMulti」についてです。
NotesDocumentCollectionクラスとNotesViewEntryCollectionクラスにこのメソッドがありますが、処理対象の文書が違うだけで、動作そのものは同じです。

選択した文書(コレクション)を、指定した文書の内容で置き換えるというものです。
この時、指定した文書にしかないアイテムは追加されます。また、指定した文書にないアイテムはそのまま残ります。
表にまとめると以下のようになります。


では、いつものようにサンプルを提示します。
このサンプルは、自DBのビューで選択した文書(コレクション)を、別のDBにある文書の内容で、置換するというものです。
Sub Click(Source As Button)     Dim session As New NotesSession     Dim curdb As NotesDatabase     Dim docs As NotesDocumentCollection     Dim copyDB As NotesDatabase     Dim copyDoc As NotesDocument     Dim uiws As New NotesUIWorkspace         ' 変更するドキュメントコレクションの取得     Set curdb = session.CurrentDatabase     Set docs = curdb.UnprocessedDocuments         ' 変更元の文書を取得     Set copyDB = session…

NameLookup関数について

イメージ
今日は節分です。
季節の分かれ目ということで、立春、立夏、立秋、立冬の日付であるというのはなんとなく知っていました。でも、知ったのは割と最近の話です。いかんですな。反省・・・

家で邪気払いをする前に、下のボタンをクリックして、筆者のために邪気払いをしてください。



さてさて・・・
ドミノディレクトリ(アドレス帳)のユーザ文書を検索するための関数として、@NameLookup関数がR5から追加されています。
しかし筆者は、@DbLookup関数で間に合わせていたので、この関数を使ったことがありませんでした。
ということで、今回はこの@NameLookup関数について、簡単に検証してみましょう。

もちろん、Lotus Notes/Dominoは8.5を利用します。


早速、サンプルを提示します。
今回は、@DbLookupとの比較を行うと言うことで、2種類載せてあります。

--------------------------------------------------------------
【@DbLookupを使った場合】
dbname := @Subset(@DbName;1):"names.nsf"; vname := "($Users)"; uname := @UserName; rvalue := "Department"; ret := @DbLookup("Notes":"NoCache";dbname;vname;uname;rvalue); @Prompt([Ok];"ユーザの部署名";ret)

【@NameLookupを使った場合】
uname := @UserName; rvalue := "Department"; ret := @NameLookup([NoUpdate];uname;rvalue); @Prompt([Ok];"ユーザの部署名";ret)

いずれもユーザ文書にある「Department」フィールドの内容を表示する、というものです。

大きな違いは、以下のようになります。
1.@DbLookup関数は指定したビューがなかったり、検索結果がないと、「エントリが索引に見つかりま…