[Notes/Domino] NotesView の EntryCount と AllEntries.Count の違い
NotesView.EntryCount と NotesView.AllEntries.Count は、ビューの文書全部に対して処理を行うときなどに、ステータス表示をするためによく使うと思います。どちらもビューのエントリ(文書)数を返しますが、動作はかなり異なります。先日自分がちょっとハマったので、自戒をこめてエントリ。
動作の違いをまとめると、以下の表のようになります。
区分 | EntryCount | AllEntries.Count |
---|---|---|
処理速度 | 速い | 遅い |
参照権限 | 計算しない | 計算する |
複数値(※) | 影響なし | 影響あり |
(※:複数値を別のエントリで表示している場合。参考→「NotesViewEntryCollection が間違ったコレクションを返すケースについて」)
EntryCount は処理速度がすごく速いですが、常に全体の件数を返してしまうので、読者名フィールドによって見られる文書が制限されている人が処理を行うと、実際に表示されている文書数とは異なる値が返ってしまいます(10文書しか見えていないのに、1,000件(=全体の件数)が返ってしまう、など)。
AllEntries.Count は、基本的には実際に見えている文書数を返しますが、いったんコレクションを返すため、EntryCount に比べると処理速度が遅いのと、複数値を別のエントリで表示しているビューでは誤った値が返る場合があります。うーん、どっちもどっち、という感じですね(´~`)
ちなみに、NotesViewNavigator.Count は、見えているエントリを正確にカウントしますが、カテゴリや合計行もカウントしてしまいますし、複数値を別のエントリで表示しているビューでは、同一文書も複数カウントしてしまします。文書数のカウントが欲しい場合は、あまり使えないですね。(複数値が無く、カテゴリが1つなら、NotesViewNavigator.Count - NotesView.TopLevelEntryCount という手もありますが……。)
いずれにしても、それぞれの特性を理解した上で、状況に応じて使い分けるのがベストかもしれませんね。
コメント
ちょっとしたことですがすごく参考になりました。
でも、いまどきR5での開発がまだあり、R5にもEntryCountプロパティがほしいと思う、時代遅れ者です。 😉
Posted at 2011/08/17 12:41 PM by なっから
ををををを! なっからさんだ! 😯
こんな僻地までご訪問いただき、ありがとうございます!m(_ _)m
R5は……最後に触ったのは何年前かなぁ。
デザイナー起動しているときにID切り替えるとおかしくなる罠に
はまりまくっていたのが懐かしい思い出です(涙
Posted at 2011/08/17 10:11 PM by takenoff
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。