[Notes/Domino] 非表示式を共通化する方法
しばらく設計解析講座ばかり続いていたので、ちょっと別の話題でも。
表の行などに非表示式を書かなければいけない場合、基本的には同じ式なのに、行番号だけを変える必要があるため、行ごとに非表示式を延々設定するハメになった、なんてことはよくあると思います。1回だけならまだしも、非表示式の条件が変わると、また同じ作業を……。とっても面倒なので、これを解消する小ワザをご紹介しましょう。
1. 表示用の計算結果フィールド(たとえば D_HideFormula という名前にしておきます)を非表示で配置し、値の式を以下のようにします。
REM {(例)Test_# (# は行番号) というフィールドが "1" の場合に表示する、という場合};
{!(Test_%1 = "1")}
2. 各行に以下のような非表示式をセットします。
n := "1"; REM {←行ごとに番号を変える};
@Eval(@ReplaceSubstring(D_HideFormula; "%1"; n))
以上で完了です。
@ReplaceSubstring で、その行用の非表示式にしたうえで、@Eval で評価する、というわけですね。@Eval なのでパフォーマンスは悪いとは思いますが、数十行程度なら気にならないレベルです。
このようにしておくと、非表示式側はまず変更する必要がなく、表示用の計算結果フィールドの式だけ変更すればよいので、とってもラクです。興味を持たれた方は、ぜひ試してみてください。
コメント
こんばんは。
いつも読ませてもらっています。
非表示式の共通化は私もよく使ってます。
私がこの方法(表示用の計算結果)で非表示
式を使うのは複雑な非表示式のときが多い
いですね。
複雑だと非表示式を書くところでは見づらく
てこの方法を使うようになりました。
これからも面白い記事楽しみにしています。
Posted at 2010/10/14 10:51 PM by じぞう
じぞうさん、コメントありがとうございます! 😀
この方法、わりとポピュラーな方法だったんでしょうか(^^ゞ
みんな知ってることだったら、ちょっと恥ずかしかったかも(滝汗
Posted at 2010/10/14 11:14 PM by takenoff
>この方法、わりとポピュラーな方法だったんでしょうか(^^ゞ
そんなことないと思いますよ。
私もNotes開発を12年超やってますけど、行く
現場でそこのNotesのDB設計見ますがこの方法
を使っているのはみたことないですね。
かなりニッチな技法かと...。
それだけNotesを知ってるってことだと思い
ます。
Posted at 2010/10/16 9:00 AM by じぞう
> かなりニッチな技法かと...。
そうですか。安心しました(^^)
わたしも経験12年くらいですが、こういうコードは見たことはなかったです。
「終了時刻 - 開始時刻」の単純計算に、100行くらい費やしている
トンデモコードは見たことがありますが(^^;;;
これからも思いついた(思い出した)ことはどんどんログるつもりです
ので、よろしくお願いいたします! 😀
Posted at 2010/10/16 1:08 PM by takenoff
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。