(現在 過去ログ81 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■12158 / inTopicNo.1)  指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
  
□投稿者/ せっちん -(2020/03/25(Wed) 14:17:35)
    2020/03/25(Wed) 14:18:20 編集(投稿者)
    2020/03/25(Wed) 14:18:11 編集(投稿者)
    2020/03/25(Wed) 14:18:05 編集(投稿者)

    いつもお世話になっております。また今回も素人のわかりにくい質問ではありますが、よろしくお願い致します。
    今回お聞きしたいのは例えばA・Bの列があったとして
    Aに100〜150の数字の範囲を設定して、110と入力して範囲内に当てはまった場合、Bに15と表示する、といったことは可能でしょうか。
    また、Aの欄に、50〜100ならBに10、101〜150ならBに15といったように、複数設定することはできるでしょうか。
    毎回わかりにくい質問で申し訳ないのですが、お知恵をお貸しいただけますと幸いです。
    ※桐のバージョンは10sです。
引用返信 [メール受信/OFF] 削除キー/
■12160 / inTopicNo.2)  Re[1]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ 通りすがり -(2020/03/25(Wed) 15:13:13)
    ( #INT( [A]/50 ) + 1 ) * 5
引用返信 [メール受信/OFF] 削除キー/
■12161 / inTopicNo.3)  Re[1]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/26(Thu) 01:31:31)
    2020/03/26(Thu) 01:59:29 編集(投稿者)

    > 今回お聞きしたいのは例えばA・Bの列があったとして
    > Aに100〜150の数字の範囲を設定して、110と入力して範囲内に当てはまった場合、Bに15と表示する、といったことは可能でしょうか。
    > また、Aの欄に、50〜100ならBに10、101〜150ならBに15といったように、複数設定することはできるでしょうか。

    に対して、[B]項目の項目計算式が ( #INT( [A]/50 ) + 1 ) * 5 の場合、

    [A]の値が、 0〜 49 ならば 5 が[B]の値
          50〜 99 ならば 10 が[B]の値
         100〜149 ならば 15 が[B]の値
         150〜199 ならば 20 が[B]の値

    となり、実にスマートな算法ではあります。

    しかし、これがお望みの結果と合致しているのか不明で、

    少なくとも「複数設定することはできるでしょうか。」という質問に対して微妙にズレているのかもしれません。

    > また、Aの欄に、50〜100ならBに10、101〜150ならBに15といったように、複数設定することはできるでしょうか。

    ↑を、そのまま愚直に表現すれば、項目[B]の項目計算式は以下の通り。

    #cond( [A]>=50 .and [A]<=100, 10, [A]>=101 .and [A]<=150, 15 ) ※#cond は #条件選択 の別名です。

    ↑従ってこの方が、質問に対して素直な回答になりますね。

    これは実に愚直な表現方法で(スマートさとか美意識からするとイマイチ)ですが、間違えなくお望みの答えが得られるはずですよ。

    追伸

    なお、表( .tbx )の列・欄は[項目]と呼びますので、今後は正しい用語で質問してください。

引用返信 [メール受信/OFF] 削除キー/
■12162 / inTopicNo.4)  (削除)
□投稿者/ -(2020/03/26(Thu) 02:15:57)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■12165 / inTopicNo.5)  Re[3]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ うにん -(2020/03/26(Thu) 09:40:33)

    > ↑この方が、
    >
    > ・全体に式が長くないので見やすい
    > ・値の範囲が分かり易い

    その通りなんですが、FileMakerに慣れると、計算式を改行できないのが辛く感じます^-)
引用返信 [メール受信/OFF] 削除キー/
■12166 / inTopicNo.6)  Re[2]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/26(Thu) 10:33:05)
    >>また、Aの欄に、50〜100ならBに10、101〜150ならBに15といったように、複数設定することはできるでしょうか。
    >
    > ↑を、そのまま愚直に表現すれば、項目[B]の項目計算式は以下の通り。
    >
    > #cond( [A]>=50 .and [A]<=100, 10, [A]>=101 .and [A]<=150, 15 ) ※#cond は #条件選択 の別名です。
    >
    > ↑従ってこの方が、質問に対して素直な回答になりますね。

     初級者には[比較式]と[条件式]の区別が難しいようです。

    念を入れて失敗例と成功例を示しておきます。


    失敗例: #cond( 50<=[A]<=100, 10, 101<=[A]<=150, 15 ) ※#cond は #条件選択 の別名です。

    成功例: #cond( [A]>=50 .and [A]<=100, 10, [A]>=101 .and [A]<=150, 15 ) ※#cond は #条件選択 の別名です。

    失敗例は、条件式を書くべきところに比較式を書いています。

    20<=[年齢]<=30 のような比較式は、そのままで条件式としても評価できるのでエラーにはなりません。

    しかし、希望どおりの判定にはなりせんので、書かないように心がけてください。

    このことは、桐のヘルプに書かれているで確認してください。

     【引用】「桐のヘルプ」の「データと式」→「条件式」→「条件式の基礎知識」
      ・つぎの式は比較式でのみ有効です。条件式では希望どおりの判定にはなりせんので、書かないように心がけてください。
      (誤)20<=[年齢]<=30
      (正)20<=[年齢] .and [年齢]<=30

      条件式で使用できる演算子
      条件式では、算術演算子以外に=や≧などの比較演算子、.and や .or などの論理演算子が使用できます。条件式で使用できる演算子と、演算子の優先順序はつぎのとおりです。

      種類 演算子     優先順位
      算術演算子
      ( )        1
      ^         2
      ×、*      3
      ÷、/      3
      %        3
      +、−      4
      比較演算子
      >        5
      <        5
      ≦、<=、=<    5
      ≧、>=、=>    5
      ≠、<>、><    5
      論理演算子
      .not       6
      .and       7
      .or        8

      ・括弧を 30 重まで入れ子にして、評価の優先順位を変更できます。
      ・論理演算子の前後は、かならず1文字以上の空白を入れてください。

引用返信 [メール受信/OFF] 削除キー/
■12167 / inTopicNo.7)  Re[3]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/26(Thu) 10:35:15)
    2020/03/26(Thu) 10:35:52 編集(投稿者)

    蛇足ではありますが、(^^ゞ

    #cond の条件式は、左から順番に評価していくので、   ※#cond は #条件選択 の別名です。

    次のように表現することも可能です。

    #cond( [A]<50, #u, [A]<=100, 10, [A]<=150, 15, "それ以外ならば", #u ) ※ "それ以外ならば" は 1(イチ)等の恒真式ならばなんでもOK

    ↑この方が、

    ・全体に式が長くないので見やすい
    ・値の範囲が分かり易い

    よって、誤りを発見し易い、かつ修正し易い。

    p.s.

    手前味噌ながら、条件式に関しては以下を参考にしてください。
     ↓
    30 論理と条件式|フォームアプリケーション教書 第2部
    http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section30


引用返信 [メール受信/OFF] 削除キー/
■12169 / inTopicNo.8)  Re[4]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/26(Thu) 11:00:41)
    2020/03/26(Thu) 11:20:34 編集(投稿者)

    > FileMakerに慣れると、計算式を改行できないのが辛く感じます

    式が多いと見難いですね。

    そういう場合、桐の[式入力]ダイアログの内容を[メモ帳]へコピペして、

    バンバン改行しながら #cond を書いて、改行したそのまんまを[式入力]ダイアログへ貼り付けていますよ。


引用返信 [メール受信/OFF] 削除キー/
■12171 / inTopicNo.9)  Re[4]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ せっちん -(2020/03/26(Thu) 16:17:43)
    詳しく教えて頂きありがとうございます!桐をちゃんと触り始めてまだ間もなく、プログラミングの知識もほぼない為、質問の仕方もうまくできておらず、申し訳ないです。ご教授頂きありがとうございます。
    詳しく教えて頂いたところでさらにわがままを言ってしまうのですが、先にお聞きした事と加えて
    Aの項目に50〜100の間の数字が入り、Bの項目に5〜10の間の数字が入った場合に、Cの項目に5と出るようにする
    といったような、2つの項目に範囲の指定をし、その二つの条件を満たした場合に項目に表示するといった事は可能でしょうか。
    こちらも#condで可能でしょうか?
    ※また何か間違えていたり、失礼な書き方をしていたら申し訳ないです。
引用返信 [メール受信/OFF] 削除キー/
■12172 / inTopicNo.10)  Re[5]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/26(Thu) 17:36:23)
    2020/03/26(Thu) 22:26:05 編集(投稿者)

    > Aの項目に50〜100の間の数字が入り、Bの項目に5〜10の間の数字が入った場合に、Cの項目に5と出るようにする
    > といったような、2つの項目に範囲の指定をし、その二つの条件を満たした場合に項目に表示するといった事は可能でしょうか。
    > こちらも#condで可能でしょうか?

    条件式1:Aの項目に50〜100の間の数字が入り → ( [A]>=50 .and [A]<=100 )

    条件式2:Bの項目に5〜10の間の数字が入った → ( [B]>=5 .and [B]<=10 )

    従って、

    条件式1 かつ 条件式2 → ( 条件式1 .and 条件式2 ) → ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 )

    よって[C]項目の項目計算式は次の通り。

     #cond( ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5 )   ※#cond は #条件選択 の別名です。

    ちなみに、すべて .and 演算子なので、以下のようにしてもOK ※ .or 演算子を含む場合には要注意

     #cond( [A]>=50 .and [A]<=100 .and [B]>=5 .and [B]<=10, 5 )   ※#cond は #条件選択 の別名です。

    p.s.

    使用する関数:#条件選択 #cond では、必ず条件式を記述します。

    特に複数の条件式を組み合わせる、つまり「かつ .and 」や「または .or 」で組み合わせる場合には、論理的な思考が必要になります。

    実際には慣れるしかないのですが、いずれにしてもご自身で桐のヘルプの関数の#条件選択と条件式の基礎を必ず読んで下さい。


引用返信 [メール受信/OFF] 削除キー/
■12173 / inTopicNo.11)  Re[6]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/27(Fri) 10:40:36)
    2020/03/27(Fri) 10:48:39 編集(投稿者)

    > 特に複数の条件式を組み合わせる、つまり「かつ .and 」や「または .or 」で組み合わせる場合には、論理的な思考が必要になります。
    >
    > 実際には慣れるしかないのですが、いずれにしてもご自身で桐のヘルプの関数の#条件選択と条件式の基礎を必ず読んで下さい。

    論理に関しては、高校数学の「ドモルガンの法則」を思い出してください。

    ネットを検索すればたくさん情報が見つかります。

    例)ドモルガンの法則の解説 | 高校数学の美しい物語
      https://mathtrain.jp/de

    なお、普通の論理は2値論理なので、真理値表も見慣れておいたほうがよいです。

    例)真理値表
      https://ja.wikipedia.org/wiki/%E7%9C%9F%E7%90%86%E5%80%A4%E8%A1%A8

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    以下は、フォームアプリケーション教書 第2部より

     <真理値表(Truth table)>
       桐の論理演算子の種類は3つあります。
      優先順位は高いほうから、.not、.and、.orの順です。
      カッコ"( )"を用いてグルーピングすることによってカッコ内を優先できます。
      桐の論理演算子は 演算子の前にドット(.)を付けます。
      p と q はそれぞれ条件式または論理値を表します。

    .not 否定
    p   .not p
    真(1) 偽(0)
    偽(0) 真(1) 参考:NOTは、否定(反転)の意味

    (a) 数値の0と1だけを返す関数
    (b) 未定義値と未定義値以外だけを返す関数
     にも利用可能です。

    (例) .not #終端行
     これは #終端行<>1 や #終端行=0 と同等です。


    .and 論理積
    p   q   p .and q
    真(1) 真(1) 真(1)
    真(1) 偽(0) 偽(0)
    偽(0) 真(1) 偽(0)
    偽(0) 偽(0) 偽(0) 参考:ANDは、「なおかつ」の意味

     p と q の両方とも真の時にだけ真になります。

    論理積は以下と同等です。
     1×1=1
     1×0=0
     0×1=0
     0×0=0


    .or 論理和
    p   q   p .or q
    真(1) 真(1) 真(1)
    真(1) 偽(0) 真(1)
    偽(0) 真(1) 真(1)
    偽(0) 偽(0) 偽(0) 参考:ORは、「または」の意味

     p と q のどちらか一方(両方を含む)が真の時に真になります。

    論理和は以下と同等です。
     1+1=1 注意:論理なので1になる
     1+0=1
     0+1=1
     0+0=0

       カッコ"( )"を用いてグルーピングすることによってカッコ内を優先できます。
      p .or q .and r  の場合ではand演算子が優先するので q .and r を先に評価します。
      これを代数的に表現すると p + q × r のようになります。
       ( p .or q ) .and r の場合では ( p .or q ) を先に評価します。
      これを代数的に表現すると (p + q) × r のようになります。

引用返信 [メール受信/OFF] 削除キー/
■12174 / inTopicNo.12)  Re[7]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ せっちん -(2020/03/27(Fri) 11:16:34)
    2020/03/27(Fri) 12:45:06 編集(投稿者)
    2020/03/27(Fri) 11:16:52 編集(投稿者)
    ※解決済としてしまったのですが、解決していませんでした。
    返信が遅くなり申し訳ありません。
    細かい解説ありがとうございます。ご迷惑をおかけしてしまい申し訳ないです。
    高校の頃から福祉の専門校に通い、介護福祉士の国家試験対策で一般強化を学ぶ時間を削る学校だったため、一般レベルの数学の教養がなく、ご迷惑をおかけしてしまいました。
    とても分かりやすい説明ありがとうございました。
    もう一つだけお聞きしたいのですが、同じ項目内に複数の条件を入れる場合はどう書いたらいいでしょうか。
    例えばA50〜100かつB5〜10の時Cが5、またはA101〜150かつB11〜15の時Cが10
    といった感じです。基礎知識を読んでみたり、貼って頂いたページを読みつつ書いてみたのですが、Cに1か0と表示されるようになりました。
    何度もお聞きして申し訳ないのですが、ご助力頂けますと幸いです。よろしくお願い致します。
引用返信 [メール受信/OFF] 削除キー/
■12175 / inTopicNo.13)  Re[8]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/27(Fri) 13:49:09)
    > もう一つだけお聞きしたいのですが、同じ項目内に複数の条件を入れる場合はどう書いたらいいでしょうか。
    > 例えばA50〜100かつB5〜10の時Cが5、またはA101〜150かつB11〜15の時Cが10
    > といった感じです。基礎知識を読んでみたり、貼って頂いたページを読みつつ書いてみたのですが、Cに1か0と表示されるようになりました。
    > 何度もお聞きして申し訳ないのですが、ご助力頂けますと幸いです。よろしくお願い致します。

                   条件、値 → 条件式,値

    [A]が50〜100 かつ [B]が 5〜10の時、5 → ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5

    [A]が101〜150 かつ [B]が11〜15の時、10 → ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10

    よって、

     #cond( ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5, ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10 )

    になります。

    いきなり、桐に入力しないで、まず紙に書くなりして、机上で論理を確認してください。

     ◇ ◇ ◇ ◇

    以下に、#cond関数で、多くの条件式と値を記述する時の私流のコツを伝授いたしましょう。(^^ゞ

    0.Windowsに付属している「メモ帳」を開きます。

    1.最初は、「メモ帳」に #cond( と ) だけを改行して入力します。

    #cond(
    )

    2.次に、条件式と値の組を #cond( ... ) の間に挿入します。改行はいくつあってもOKです。

    #cond(

    ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5,
    ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10

    )

    3.↑これを「メモ帳」において[すべて選択]して、[コピー]します。

    4.最後に、桐の表定義または項目属性変更状態で、[C]の[項目計算式]または[項目計算式]の[式入力]で[貼り付け]します。

      すると、改行が除かれた #cond( .... )が完成します。



引用返信 [メール受信/OFF] 削除キー/
■12176 / inTopicNo.14)  Re[9]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ せっちん -(2020/03/27(Fri) 14:00:52)
    No12175に返信(ONnojiさんの記事)

    > 以下に、#cond関数で、多くの条件式と値を記述する時の私流のコツを伝授いたしましょう。(^^ゞ

    おぉ…これはすごい極意を…!ありがとうございます!次からは必ずメモで書いたのちに試していこうと思います。
    そして早速試した所完璧に動作しました、本当にありがとうございます!
    細かい所迄本当にありがとうございます!
    もっと勉強していきたいと思います!
解決済み!
引用返信 [メール受信/OFF] 削除キー/
■12177 / inTopicNo.15)  Re[9]: 指定した数字の範囲に当てはまった場合に設定した数字を表示したい場合
□投稿者/ ONnoji -(2020/03/27(Fri) 14:02:09)
    >                条件、値 → 条件式,値
    >
    > [A]が50〜100 かつ [B]が 5〜10の時、5 → ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5
    >
    > [A]が101〜150 かつ [B]が11〜15の時、10 → ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10
    >
    > よって、
    >
    >  #cond( ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5, ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10 )
    >
    > になります。

    すべて .and 論理演算子なので、次のようにグルーピングのかっこ"( )"は省略できます。

    ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5  → ( [A]>=50 .and [A]<=100 .and [B]>=5 .and [B]<=10 ), 5

    ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10 → ( [A]>=101 .and [A]<=150 .and [B]>=11 .and [B]<=15 ), 10

    よって

    #cond( ( [A]>=50 .and [A]<=100 ) .and ( [B]>=5 .and [B]<=10 ), 5, ( [A]>=101 .and [A]<=150 ) .and ( [B]>=11 .and [B]<=15 ), 10 )

    は、次にように簡略に出来ます。

    #cond( ( [A]>=50 .and [A]<=100 .and [B]>=5 .and [B]<=10 ), 5, ( [A]>=101 .and [A]<=150 .and [B]>=11 .and [B]<=15 ), 10 )


    さらに、次のように簡略化できますが、

    #cond( [A]>=50 .and [A]<=100 .and [B]>=5 .and [B]<=10, 5, [A]>=101 .and [A]<=150 .and [B]>=11 .and [B]<=15, 10 )

    さずがに、目印のかっこ" ( ) "が無いと、何処までが条件式なのか目測がし難くなります。

    p.s.

    繰り返しますが、すべて .and 論理演算子なので、次のようにグルーピングのかっこ"( )"は省略できます。

    しかし、 .or 論理演算子 を含んでいるときには、こうなりませんので注意してください。


引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -