561 Views
November 15, 20
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第22回は@AllChildrenと@AllDescendantsについて。
@ -notes knows community- 2020/07/09 @関数Talk 第22回 公開版 @ 阿部 覚 (tw:) @abesat
@ 今回は Notes文書の「種類」と絡めて こちらの関数のおはなしをさせて頂こうと思います @
@ @AllChildren @AllDescendants @ を雑談
@ まずは予習として、Notesの文書を構成する「フォーム」の 種類について フォームには3つの種別があります ● ● 「文書」 ● ● 「返答」 ● ● 「返答への返答」 @ ふつうは「文書」を使用しますが 他の文書を親文書と認識するタイプの文書には 「返答」または「返答への返答」を使用します いつものように製品画面は英語版を使用しています
@ まずは予習として、フォームのタイプについて 「返答」「返答への返答」が 使用されているアプリケーション(DB)では、 ビューがこんな風にスレッド表示されています @ (ビューのプロパティで「返答文書の階層表示」が使用されています)
@ まずは予習として、フォームのタイプについて 「返答」は 作成時に選択中のスレッド内で、 常に先頭の「文書」に対する返答となります ←選択中の文書は これだけど @
@ まずは予習として、フォームのタイプについて 「返答」は 作成時に選択中のスレッド内で、 常に先頭の「文書」に対する返答となります 作成時に選択中の文書はこれだけど @ したがって階層表示の中で必ず2階層目の文書になります。 「常に親文書に対する"子"レベルの文書になる」 といえばわかりやすいでしょうか Mother !
@ まずは予習として、フォームのタイプについて 「返答への返答」は 作成時に、選択中の文書そのものに対する返答となります ←選択中の文書 @
@ まずは予習として、フォームのタイプについて 「返答への返答」は 作成時に、選択中の文書そのものに対する返答となります Mother ! @ 「返答への返答」という呼び方にだまされそうですが 「常に"孫"レベルの文書になる」というわけではなく、 選択中の文書次第で、 "子"にも "孫"にも "ひ孫"にも "やしゃご"…にも、なりえます
@ 予習の復習 @
@ 予習の復習(引用元は中野さんのブログ) https://harunakano.blogspot.com/2010/02/blog-post_17.html @
@ と、ここまで確認したところで やっと関数のお話です @
@AllChildrenと@AllDescendantsについて @ ビューの選択式で使用する関数です SELECT Form = "Main" | @AllChildren SELECT Form = "Main" | @AllDescendants @ 書式はほぼこの通り 先頭文書の条件 以外は、常にこの形で使うと考えてよいと思います (なお試してみた所、式の順番違いはOKみたい (なお試してみた所、式の順番違いはOKみたい SELECT SELECT @AllDescendants @AllDescendants || Form Form = = "Main" "Main" など) など)
@AllChildren @ SELECT Form = "Main" | @AllChildren 先頭文書(親文書)と、その子文書を表示します つまり親子レベルまでしかスレッド表示しないです @
@AllDescendants @ そもそもDescendantsとは 👇 SELECT Form = "Main" | @AllDescendants @ 先頭文書(親文書)と、連なるすべての子文書・孫文書…を表示します
@ 関数単体でのSELECTは… 条件部分を除いて 返答文書だけを表示 …はできません @ @AllDescendantsも同様 @AllDescendantsも同様 (詳しい方には念のため: ビューのプロパティで「返答文書の階層表示」を 解除しても表示されません)
@ ところで、中野さんはこうも書いていました @
@ 問題 もし、「文書」と「返答への返答」の2フォームだけで ディスカッションDBを実現した場合 SELECT Form = "Document" | @AllChildren この式を使ったビューはどうなるでしょうか? ("Document"は「文書」のフォーム名と仮定) @ 1.「返答の返答」は表示しない。「文書」だけ 2.「返答の返答」も「文書」の"子"なら表示 3.「返答の返答」もすべて表示
@ 確認しましょう ここを @AllChildrenに 変更すると: @
@ 答え: こうなります @
@ 答え: 1.「返答の返答」は表示しない。「文書」だけ 2.「返答の返答」も「文書」の"子"なら表示 3.「返答の返答」もすべて表示 @
@ 答え そもそも、フォームの種類 「返答」「返答への返答」の違いって、 文書を作成するときの動きの違いだけ、だと思われます つまりは 「おかあさんの決め方」 だけの違いです @ 生まれたときに ・スレッドの先頭文書 ・選択中の文書 どちらを見てるかの違い ですね
@ 答え @AllChildrenは 「返答」のフォームで 表示対象を判断してるのではなく 純粋に1階層目の返答(子文書) だけを拾っているようです @
@ ご参考ですが 手元にある環境(V10)で見る限り 標準のディスカッションテンプレートでは 「返答」フォームを使っていません Responseという名称の 「返答の返答」フォーム 「文書」と 「返答への返答」の 2つでディスカッションを実現 …しているようです @
@ おまけで… @
@ @IsResponseDoc をちょこっと雑談 @
@IsResponseDoc @ 現在の文書が「返答文書かどうか」を返す関数です 現在の文書が「返答文書かどうか」を返す関数です 返答文書なら1を返しそうでなければ0を返します 返答文書なら1を返しそうでなければ0を返します 通常は 「文書」フォームの文書なら0 「返答」「返答への返答」フォームの文書なら1です。 …ということは: @
@IsResponseDoc @ @AllDescendantsの代わりに使えてしまいます 「返答文書の階層表示」をしていれば、ですが… @
@ 今回ところどころで触れた 「返答文書の階層表示」 については ブログなどで フォローしたいと思います 今回もお付き合い ありがとうございました 😀 @