過去の桐井戸端BBS (桐ver.9)
20723 レポートのテキストオブジェクトのソース先を条件によって選択できるようになりますか hsakurai 2003/06/07-13:28
レポートのテキストオブジェクトのソース先を条件選択出来るようになりますか?
[種目1]が未定義の時は[種目2]を,[種目2]も未定義の時は[種目3]を,
すべて未定義の時はそのまま[種目1](未定義値)が入力できるようにしたいのですが?

宜しくお願い致します。
20725 Re:テキストのソース選択 悲しげ 2003/06/07-14:48
記事番号20723へのコメント
どもっ、hsakuraiさん

>[種目1]が未定義の時は[種目2]を,[種目2]も未定義の時は[種目3]
>を,すべて未定義の時はそのまま[種目1](未定義値)

「[種目2]も」の「も」の元となるものは何なのか、
「すべて未定義」の「全て」とは何か、さらに云えば
[種目1]が未定義でなければ[種目1]でよいのか、
あたりあやふやですが(^^;)、何となく想像で補うに

#条件選択([種目1],[種目1],[種目2],[種目2],[種目3],[種目3])

ではどうでしょう。

ps

#条件選択([種目1]<>"",[種目1],・・・・・

のように書いてもいいのですが、データ型が数値系だとしたらゼロの扱いをどうするかの問題もありますから、
上の方の書き方がつぶしが利きます。
「ゼロでも未定義でもなければ」と解釈されますから。
あと、そうでない時は自動的に未定義となりますから、式の最後に

・・・・,1,"")

も記述する必要はありません。

20730 Re:テキストのソース選択 うにん 2003/06/07-16:42
記事番号20725へのコメント
>#条件選択([種目1],[種目1],[種目2],[種目2],[種目3],[種目3])

でもいいですが、未定義値の場合ならそのものずばりの#NVLでしょう。
#未定義値変換([種目1],#未定義値変換([種目2],[種目3]))

20732 Re:テキストのソース選択 悲しげ 2003/06/07-17:04
記事番号20730へのコメント
うにんさん wrote

>#未定義値変換([種目1],#未定義値変換([種目2],[種目3]))

なるほど、これ、いかにも理科系って感じでいいですね。
私のは見るからに文科系だなぁ。(^^;)

20733 Re:テキストのソース選択 うにん 2003/06/07-17:24
記事番号20732へのコメント
>>#未定義値変換([種目1],#未定義値変換([種目2],[種目3]))
>
>なるほど、これ、いかにも理科系って感じでいいですね。
>私のは見るからに文科系だなぁ。(^^;)

あはは〜、理科系ですか(^^;
そういうことなら付け加えますと、この式だと「すべてが未定義のとき」は
[種目3]の値になりますが、[種目1]も同じ未定義値なので問題ありません。

20739 Re:テキストのソース選択 hsakurai 2003/06/07-21:43
記事番号20725へのコメント
>#条件選択([種目1],[種目1],[種目2],[種目2],[種目3],[種目3])

オブジェクト名が”種目1”のオブジェクトに[種目1]が未定義の時[種目2]の値を入れることが出来ました。
しかし,オブジェクト名が”種目2”のオブジェクトにも[種目2]の値が入ってしまいます。
そこは空欄にしたいのですが?わかりにくい文章ですみません。

あと,上記の式の意味がよくわかりません。どうして[種目1]が未定義の時[種目2]の値を入れることが出来るのですか?
[種目1]には[種目1]を入れると記述してあるようにしか理解できません。
基本が全く理解できていないのでしょうが”
20740 Re:テキストのソース選択 うにん 2003/06/07-22:29
記事番号20739へのコメント
今回の投稿で初めて2つめのテキストオブジェクトが出てきましたが、
実はオブジェクトは3つあって、[種目1]〜[種目3]の値を空欄がないように詰めて表示したいのではないかと思いましたが、どうでしょう?

それだと、2つめのオブジェクトは「[種目1]が未定義でなければ[種目2]を、未定義なら
([種目1]は1つめの方に表示しているので)[種目3]を表示」すればいいので、こうなります。
#条件選択([種目1]<>#未定義,[種目2],1,[種目3])
3つめは、[種目1][種目2]両方未定義でない場合だけ表示することになるので、
#条件選択([種目1]<>#未定義 .and [種目2]<>#未定義,[種目3])

ちなみに書いてあるとおり、[種目1]が未定義の場合に種目2は空欄にするなら
#条件選択([種目1]<>#未定義,[種目2])
ですね。

20742 Re:テキストのソース選択 悲しげ 2003/06/08-00:58
記事番号20739へのコメント
どもっ、hsakuraiさん
結局、どのようにしたいのかは、フリダシに戻ったの感がありますが(^^;)
それはさておき

>>#条件選択([種目1],[種目1],[種目2],[種目2],[種目3],[種目3])
>・・・・・
>あと,上記の式の意味がよくわかりません。どうして[種目1]が未定義の時[種目2]の値
>を入れることが出来るのですか?[種目1]には[種目1]を入れると記述してあるようにし
>か理解できません。

No20725にも念のために明記したとおり、これは

 #条件選択([種目1]<>"",[種目1],・・・・・

の一種の省略形なのです(省略形にしたメリットもNo20725に既述)。

その上で
 #条件選択([種目1],[種目1],[種目2],[種目2],[種目3],[種目3])
       (1a)  (1b)  (2a)  (2b)  (3a)  (3b)
の意味を言葉で云うと次のようになります。

1a [種目1]が未定義またはゼロでなければ
1b [種目1]を採用し
2a そうではなくて(つまり[種目1]が未定義またはゼロであって)
  [種目2]が未定義またはゼロでなければ
2b [種目2]を採用し
3a そうではなくて(つまり[種目1][種別2]ともに未定義または
  ゼロであって)[種目3]が未定義またはゼロでなければ
3b [種目3]を採用する


20743 Re:テキストのソース選択 悲しげ 2003/06/08-01:02
記事番号20742へのコメント
1a [種目1]が未定義またはゼロでなければ
          ↓次のように云い換えた方が判りやすいですね
1a [種目1]が未定義でもゼロでもなければ
あるいは
1a [種目1]が存在すれば

20745 Re:テキストのソース選択 hsakurai 2003/06/08-10:29
記事番号20743へのコメント
>1a [種目1]が存在すれば

どうしてそのような省略形が認められるのかよくわかりませんが便利ですね。
もしかしたら[種目1]それ自体が式なので,存在する値があれば式が成立する,
成立しなければ次の条件に移ると言うことなのでしょうか?


20746 Re:テキストのソース選択 hsakurai 2003/06/08-11:49
記事番号20740へのコメント
>それだと、2つめのオブジェクトは「[種目1]が未定義でなければ[種目2]を、未定義なら
>([種目1]は1つめの方に表示しているので)[種目3]を表示」すればいいので、こうなります。
>#条件選択([種目1]<>#未定義,[種目2],1,[種目3])
>3つめは、[種目1][種目2]両方未定義でない場合だけ表示することになるので、
>#条件選択([種目1]<>#未定義 .and [種目2]<>#未定義,[種目3])

そのまま使わせていただきました。
ありがとうございました。
また,ご指導宜しくお願い致します。
20747 Re:テキストのソース選択 うにん 2003/06/08-11:58
記事番号20746へのコメント
>>それだと、2つめのオブジェクトは「[種目1]が未定義でなければ[種目2]を、未定義なら
>>([種目1]は1つめの方に表示しているので)[種目3]を表示」すればいいので、こうなります。

([種目2]は1つめの方に表示している の間違いでした(^^;

>>#条件選択([種目1]<>#未定義,[種目2],1,[種目3])

>そのまま使わせていただきました。

ということは、推測が当たっていたようですね。

ちなみに判定する項目(この場合[種目1])が文字列の場合には、悲しげさんも書いておられるように
単に項目名を書くだけで「未定義でない」という条件になります。
#条件選択([種目1],[種目2],1,[種目3])
文字列の値を論理値として使う場合、""(=#未定義)のときのみ偽、それ以外は真という桐のルールがあるのでそうなるのです。

20749 Re:テキストのソース選択 hsakurai 2003/06/08-12:21
記事番号20747へのコメント
>#条件選択([種目1],[種目2],1,[種目3])
>文字列の値を論理値として使う場合、""(=#未定義)のときのみ偽、それ以外は真という桐のルールが
>あるのでそうなるのです。


たびたびありがとうございます。
聞くレベルが低すぎて申し訳ありません。
少しずつ疑問が解けて勉強になります。

戻る