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

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

2011年1月13日木曜日

ビューの列の値を取得する

2011年です。アナログ放送が終わり、地デジになってしまいます。
先日、電気屋さんに行ったら、46型の液晶テレビが12万円で売っていました。筆者はその倍近くの値段で買ったのに・・・
ひどい、ひどすぎる。

ということで?今年1回目のお届けです。


ボタンをクリックしてから読むと、きっと良いことがあります。
にほんブログ村 IT技術ブログへ


今回はLotus Notes/Domino 8.0からの新機能についてです。
デザイナーヘルプには記載されていないものなので、見落としがちなのとどう使えば良いか分からないと困るので掲載しておきます。
っていうか、IBMさん、ヘルプに載せてください。

NotesViewクラスにGetColumnValuesというメソッドが追加されています。
この事は評価ガイド等を見れば書いてあることなので、たいした話ではないかと思います。
問題なのは、前述したとおり、ヘルプに記載がないのです。
つまり、どうやって使えば良いのか、構文はどうなっているのか?等の情報がないのです。

ただし、オートコンプリートの設定を有効にしておく(下図)と、メンバが自動的に表示されます。
さらに、構文のパラメタも自動的に表示してくれます。


さて、ではこの新しいGetColumnValuesメソッドの構文はどうなっているのかを見てみましょう。
どうも、列番号を指定すれば良いようです。
しかし、戻り値が分かりません。こればっかりは試してみないと分かりません。

まずは列番号から。
0から始まるのか、1から始まるのかのどちらかでしょうが、Integer型なので0~32767までの数値というのが妥当でしょう。
また、ビューに存在する列以上の数値は指定できないでしょう。

戻り値ですが、列の値を取得するようなメソッドなので、Variant型の配列が返ってくることが予想できます。

ということを踏まえて、サンプルを作ってみました。
単純に指定したビューの最初の列の値をダイアログとして表示するだけです。

Sub Click(Source As Button)
 Dim session As New NotesSession
 Dim db As NotesDatabase
 Dim view As NotesView
 Dim ret As String
 Dim titlenum As Integer
 
 Set db = session.CurrentDatabase
 Set view = db.GetView( "ByCategories" )
 
 titlenum = 0
 Forall x In view.GetColumnValues(titlenum)
  If ret = "" Then
   ret = x
  Else
   ret = ret & Chr$(10) & x
  End If
 End Forall
 Msgbox ret, 0, Cstr(titlenum)
End Sub

このメソッドを使うときに気をつけて欲しいことが1つあります。
@DocNumber関数や@DocChildren関数など、テキストや数値に表せないデータが指定されている列はカウントされないと言うことです。
また、列式に「"ここは固定値です"」など固定値の文字列、数値等を設定した場合にもカウントされません。

1列目が@Created
2列目が@DocNumber
3列目が@Text(@DocumentUniqueID
と言う場合、3列目の値を取得したい場合は、view.GetColumnValues(1)とする必要があります。



では、今年も本ブログをご愛顧のほど、よろしくお願いします。




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

0 件のコメント: