Slide 1

Slide 1 text

知らない間に欲しい機能が ついてた件 9.0.1 FP8 の新機能 中野晴幸 @harunakano

Slide 2

Slide 2 text

View.createViewNavFromKey What's new in IBM Domino Designer 9.0.1 Social Edition Feature Pack 8? https://ibm.co/2OUcJ5J

Slide 3

Slide 3 text

View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。

Slide 4

Slide 4 text

View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。 ① ②

Slide 5

Slide 5 text

メソッド getAllEntriesByKey createViewNavFromKey 返すモノ ViewEntryCollection ViewNavigator ① 返すモノが違う ビューエントリの 集合 ビューエントリの 位置

Slide 6

Slide 6 text

View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。 ① ②

Slide 7

Slide 7 text

メソッド getAllEntriesByKey createViewNavFromKey 返すモノ ViewEntryCollection ViewNavigator ② 繰り返しエントリ 許可しない 許可する

Slide 8

Slide 8 text

② 繰り返しエントリ ビューの「複数値を別のエントリとして表示」を 有効にした列で、別エントリに分かれて表示さ れている値、のこと?

Slide 9

Slide 9 text

確かめてみた 「繰り返しエントリを許可しません」ってどういうこと?

Slide 10

Slide 10 text

フォーム

Slide 11

Slide 11 text

“果物#1”が2文書

Slide 12

Slide 12 text

Subject を「カテゴリ別」にしたビュー

Slide 13

Slide 13 text

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列 目の値を出力 結果 いちご いちご びわ バナナ バナナ

Slide 14

Slide 14 text

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 結果 いちご いちご びわ バナナ バナナ

Slide 15

Slide 15 text

View.createViewNavFromKey ViewEntryCollection の代わりに ViewNavigator を返す点を除き、View.getAllEntriesByKey と同じ 機能を果たします。ViewNavigator を ViewEntryCollection 上に使用する利点は、複 数の Category を持つビューに、ビューに2度表 示される文書がある可能性があることです。 残 念ながら、ViewEntryCollection は繰り返しエント リを許可しません。 ただし、ViewNavigator は表 示されたビューと繰り返される文書とを一致さ せます。 ② こういうことね!

Slide 16

Slide 16 text

結果 いちご バナナ びわ みかん りんご 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列 目の値を出力

Slide 17

Slide 17 text

じゃあ ビューの列を入れ替えてみると?

Slide 18

Slide 18 text

Categoriesを「カテゴリ別」にしたビュー

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

まとめ キー列が単数値 取得する列が複数値 キー列が複数値 取得する列が単数値 getAllEntriesByKey createViewNavFromKey 【メモ】 1列目をカテゴリ表示しないビューではどうなる? → 結果は上の表と同じ結果 Categories の値が1つの場合はどうなる? → いずれも期待どおりの結果となった ビュー メソッド