Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

201910 のの会@関数Talk 16th

36 Aufrufe

Veröffentlicht am

Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第16回は引き続き@DbColumと@DbLookupについて。
併せて@IsErrorについて

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

201910 のの会@関数Talk 16th

  1. 1. @ @ -notes knows community- 2019/10/16 ネオアクシス株式会社 阿部覚 (tw:) @abesat @関数Talk 第16回 公開版
  2. 2. @ @ 前回に引き続き、 @DbColumn, @DbLookupを お話ししたいと思います まずは前回のおさらい… 👉 https://www.slideshare.net/abesat/201908-talk-15th
  3. 3. @ @ 前回、使用したサンプルフォームを 引き続き説明に用います 前回に引き続き、 @DbColumn, @DbLookupを お話ししたいと思います @DbColumnや@DbLookupを使った式 式の結果を表示する 表示用の計算結果フィールド
  4. 4. @ @ @DbColumn, @DbLookupの 引数について駆け足で触れましたが 前回残していた@DbLookupの keywords部分について軽く確認 でも、その前に予備知識として… @DbColumn ( class : cache ; server : database ; view ; columnNumber ) @DbLookup ( class : cache ; server : database ; view ; key ; columnNumber または fieldName ; keywords )
  5. 5. @ @ @IsError の雑談
  6. 6. @ @ そのまま「エラーだよ」関数と 覚えていただければよいのではないか @If(@IsError(~); ~; ~) @IsErrorに限らず、「@Is~」形式の@関数は、 ● 戻り値は1か0。TrueかFalse、ないしはYesかNo ● @Ifとセットで使用することが多いと思います  @If(@Is~(~); ~; ~)
  7. 7. @ @ 「エラー」って、具体的にはどういう状態? @DBColumn、@DbLookupでも、 呼び方によっては「エラー」を返します ここではあまり深く立ち入らないようにしますが 興味のある方はこちらをご参照 「(参考)@DBLookup および @DBColumn で出力される エラーのリスト」 https://www.ibm.com/support/pages/(参考)dblookup-および- dbcolumn-で出力されるエラーのリスト ※現時点でまだIBMさんのページですので、近い将来変わる可能性があります
  8. 8. @ @ 「エラー」って、具体的にはどういう状態? まずは「式が適切な戻り値を返せない状態」と考えましょう たとえば、エラーが発生すると、 式がこんな戻り値になってユーザーさんが困惑します 生のエラー戻り値を表示せずに済ませたい場合に 前述の @If(@IsError(~); ~; ~) を使って対策します
  9. 9. @ @ @If(@IsError(~); ~; ~) “もし、   式がエラーの時には     エラーの代わりにこの値を返して       エラーがなければ普通の値を返して” すなおに適用するとこうなります 一応動作しますが、あまりよくない例です
  10. 10. @ @ @If(@IsError(~); ~; ~) “もし、   式がエラーの時には     エラーの代わりにこの値を返して       エラーがなければ普通の値を返して” @DbColumnが2回動くムダを防ぎます
  11. 11. @ @ と、前座的に @IsErrorに触れたところで 少し趣向の違うことを お話ししたいと思います
  12. 12. @ @ @DbColumn @DbLookUp で、私が引っかかってることを とりあえず話してみる篇
  13. 13. @ @ ここで、私にとってのキーワードは 楔楔 柵柵 ないしは です くさび しがらみ
  14. 14. @ @ @DBColumn,@DbLookupについて 私が一番気にしていること とくにDBアプリ間で使用することで 「くさびを打ってしまう」こと 「しがらみを作ってしまう」と言い換えてもよい B A @DbLookup(“”; B ...
  15. 15. @ @ ひとたび他所のDBアプリから@DBColumnされると ビューの列順などをうっかりいじれなくなる ひとたび他所のDBアプリから@DBLookupされると ビューのソート順、列順などをうっかりいじれなくなる あるいは、要らなくなったからといって うっかりビューを消せなくなる あるいは、要らなくなったからといって うっかりアプリを消せなくなる
  16. 16. @ @ もしいじったり、消してしまうと… こちらの DBアプリ こちらの DBアプリ ちわーっす @DbLookupしたいんすけど XXビューさん いらっしゃいますかね? 他所の DBアプリ 他所の DBアプリ え?、XXは もう、居りませんけど ERROR ええーっつ! (泣)
  17. 17. @ @ 一番「他所のDBアプリから参照されそうな」存在 ドミノディレクトリには大量のビューがあります
  18. 18. @ @ 一番「他所のDBアプリから参照されそうな」存在 ドミノディレクトリには大量のビューがあります バージョンを重ねるうちに追加されてきた これらのビューで将来、列が変動したり、 ビューが削除されることは、ほとんどないのでは どのユーザーがどんなアプリから 参照しているか、わからないから しかし、マスターである(参照されることが使命である) アプリであれば、それでも良いのかも
  19. 19. @ @ @DbColumn, @DbLookup で 既存のビューを参照するときには 相手先のビューのことも考えて 設定してあげることが必要と思います (特に、他DBアプリに対して行うとき) 逆に言うと、マスター側のDBアプリでは あらかじめ計画し、汎用的に使える適切なビューを 用意しておけばよいと思います
  20. 20. @ @ こうした、 「しがらみをつくる」 「くさびをうつ」 性格を持つ関数 簡易言語である式言語では @DbColumn, @DbLookup が唯一に近い 代表格かと思います (スクリプト系には他にもありますが…) 使い込まれたNotes/Dominoが敬遠される けっこう大きな要因の一つではないかと この2つの関数や、 参照先のビューの設計・利用には ある程度のプランが要るなと 感じる次第です ご利用は計画的にご利用は計画的に♥ご利用は計画的にご利用は計画的に♥
  21. 21. @ @ さて、当初のお話に戻ります 前回残していた@DbLookupの keywords部分について @DbColumn ( class : cache ; server : database ; view ; columnNumber ) @DbLookup ( class : cache ; server : database ; view ; key ; columnNumber または fieldName ; keywords )
  22. 22. @ @ 3種類ほどあるようですが ポピュラーなのは[FAILSILENT]です これを使うと
  23. 23. @ @ 本来ならエラーになる式に [FAILSILENT]がつくと、エラーは出なくなります
  24. 24. @ @ ゆえに「@IsErrorを使った式の代わりになる」と 思っていませんか(私もそう思っていました) 同じ?同じ?
  25. 25. @ @ しかし、よくよく確認すると、 [FAILSILENT]では、 すべてのエラーが消えるわけではありませんでした ビューが存在しないためにエラー DBアプリが存在しないためにエラー
  26. 26. @ @ エラーが隠れるのは あくまで 探索のキー値が見つからないとき 他のエラーは、状況により、むしろ表示すべきなのかも だって、エラーを隠してしまうということは 前掲のような 「DBが無くなった」「ビューがなくなった」 という障害が発覚しないことを意味しますから @IsErrorを使う式(すべてのエラーを帳消し)と、 うまく使い分けていただけたらと思います
  27. 27. @ @ ご清聴ありがとう ございました!

×