Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

getAllEntriesByKey vs createViewNavFromKey

701 views

Published on

Domino Designer 9.0.1 FP8 で NotesView クラスに createViewNavFromKey メソッドが追加されました。
FP8 の What's New に記載があるだけでオンラインヘルプに記載のないメソッドです。これまでビューからエントリを取得するために使用していた getAllEntriesByKey との違いについてまとめました。

Published in: Software
  • Be the first to comment

  • Be the first to like this

getAllEntriesByKey vs createViewNavFromKey

  1. 1. 知らない間に欲しい機能が ついてた件 9.0.1 FP8 の新機能 中野晴幸 @harunakano
  2. 2. View.createViewNavFromKey What's new in IBM Domino Designer 9.0.1 Social Edition Feature Pack 8? https://ibm.co/2OUcJ5J
  3. 3. View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。
  4. 4. View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。 ① ②
  5. 5. メソッド getAllEntriesByKey createViewNavFromKey 返すモノ ViewEntryCollection ViewNavigator ① 返すモノが違う ビューエントリの 集合 ビューエントリの 位置
  6. 6. View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。 ① ②
  7. 7. メソッド getAllEntriesByKey createViewNavFromKey 返すモノ ViewEntryCollection ViewNavigator ② 繰り返しエントリ 許可しない 許可する
  8. 8. ② 繰り返しエントリ ビューの「複数値を別のエントリとして表示」を 有効にした列で、別エントリに分かれて表示さ れている値、のこと?
  9. 9. 確かめてみた 「繰り返しエントリを許可しません」ってどういうこと?
  10. 10. フォーム
  11. 11. “果物#1”が2文書
  12. 12. Subject を「カテゴリ別」にしたビュー
  13. 13. getAllEntriesByKey Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim ec As NotesViewEntryCollection Dim entry As NotesViewEntry Dim keys$( 0 ) Dim tmp As Variant Set db = ss.Currentdatabase Set vw = db.Getview( "byTitle“ ) vw.Refresh vw.Autoupdate = False keys( 0 ) = "果物#1“ Set ec = vw.getAllEntriesByKey( keys, True ) Set entry = ec.Getfirstentry() While Not entry Is Nothing tmp = entry.Columnvalues( 1 ) If IsArray( tmp ) Then Print Join( tmp, “,” ) Else Print tmp End If Set entry = ec.Getnextentry( entry ) Wend ビューエントリの 集合 一致する全ての エントリを取得 エントリから2列 目の値を出力 結果 いちご いちご びわ バナナ バナナ
  14. 14. getAllEntriesByKey Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim ec As NotesViewEntryCollection Dim entry As NotesViewEntry Dim keys$( 0 ) Dim tmp As Variant Set db = ss.Currentdatabase Set vw = db.Getview( "byTitle“ ) vw.Refresh vw.Autoupdate = False keys( 0 ) = "果物#1“ Set ec = vw.getAllEntriesByKey( keys, True ) Set entry = ec.Getfirstentry() While Not entry Is Nothing tmp = entry.Columnvalues( 1 ) If IsArray( tmp ) Then Print Join( tmp, “,” ) Else Print tmp End If Set entry = ec.Getnextentry( entry ) Wend 結果 いちご いちご びわ バナナ バナナ
  15. 15. View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。 ② こういうことね!
  16. 16. 結果 いちご バナナ びわ みかん りんご createViewNavFromKey Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim nav As NotesViewNavigator Dim entry As NotesViewEntry Dim keys$( 0 ) Dim tmp As Variant Set db = ss.Currentdatabase Set vw = db.Getview( "byTitle“ ) vw.Refresh vw.Autoupdate = False keys( 0 ) = "果物#1" Set nav = vw.createViewNavFromkey( keys, True ) Set entry = nav.Getfirst() While Not entry Is Nothing tmp = entry.Columnvalues( 1 ) If IsArray( tmp ) Then Print Join( tmp, “,” ) Else Print tmp End If Set entry = nav.Getnext( entry ) Wend ビューエントリの 位置 位置を決める エントリから2列 目の値を出力
  17. 17. じゃあ ビューの列を入れ替えてみると?
  18. 18. Categoriesを「カテゴリ別」にしたビュー
  19. 19. getAllEntriesByKey Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim ec As NotesViewEntryCollection Dim entry As NotesViewEntry Dim keys$( 0 ) Set db = ss.Currentdatabase Set vw = db.Getview( "byCategory“ ) vw.Refresh vw.Autoupdate = False keys( 0 ) = "バナナ“ Set ec = vw.getAllEntriesByKey( keys, True ) Set entry = ec.Getfirstentry() While Not entry Is Nothing Print entry.Columnvalues( 1 ) Set entry = ec.Getnextentry( entry ) Wend 結果 果物#1 果物#2 果物#3
  20. 20. createViewNavFromKey Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim nav As NotesViewNavigator Dim entry As NotesViewEntry Dim keys$( 0 ) Set db = ss.Currentdatabase Set vw = db.Getview( "byCategory“ ) vw.Refresh vw.Autoupdate = False keys( 0 ) = "バナナ" Set nav = vw.createViewNavFromKey( keys, True ) Set entry = nav.Getfirst() While Not entry Is Nothing Print entry.Columnvalues( 1 ) Set entry = nav.Getnext( entry ) Wend 結果 果物#1 果物#2 果物#3 果物#1 果物#1
  21. 21. createViewNavFromKey Dim ss As New NotesSession Dim db As NotesDatabase Dim vw As NotesView Dim nav As NotesViewNavigator Dim entry As NotesViewEntry Dim keys$( 0 ) Set db = ss.Currentdatabase Set vw = db.Getview( "byCategory“ ) vw.Refresh vw.Autoupdate = False keys( 0 ) = "バナナ" Set nav = vw.createViewNavFromKey( keys, True ) Set entry = nav.Getfirst() While Not entry Is Nothing Print entry.Columnvalues( 1 ) Set entry = nav.Getnext( entry ) Wend 結果 果物#1 果物#2 果物#3 果物#1 果物#1
  22. 22. まとめ キー列が単数値 取得する列が複数値 キー列が複数値 取得する列が単数値 getAllEntriesByKey createViewNavFromKey 【メモ】 1列目をカテゴリ表示しないビューではどうなる? → 結果は上の表と同じ結果 Categories の値が1つの場合はどうなる? → いずれも期待どおりの結果となった ビュー メソッド

×