初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2021-05-17 18:12:08

こまつ
Member

値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

値一覧でソート順がうまくいきません。
はい、いいえで回答した際、実際の値は0、1(項目によっては1、0)で入力されるようにしたいと思っています。
そこで、はい、いいえー0、1のテーブルと、はい、いいえー1、0のテーブルを作り、「最初のフィールドの値を使用」にコード(0、1)を選択し、「2番目のフィールドも表示」に回答(はい、いいえ)を選択し、「2番目のフィールドのみを表示」にチェックを入れました。
すると
どちらも
いいえ、はいの順に表示されますが、これを
はい、いいえの順に表示させたいのです。
ソートを降順にできれば問題ないのですが、過去のトピックから昇順しかできないとわかりました。

何か良い方法はないでしょうか?

Offline

#2 2021-05-18 08:41:07

himadanee
Guest

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

2値なら、値一覧は使わず、ボタンバーでフィールド設定するぐらいでもいいかも?

#3 2021-05-18 08:45:36

Shin
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

はい、いいえ を、Char(8203) & "はい"、Char(8204) & "いいえ" という計算フィールドへ変更し、フィールドの索引をunicodeへ変更するといいです。
サンプルです。項目数は8まで対応。
https://www.dropbox.com/s/79wnxbo8ubsn2 … 2.zip?dl=0

もっと簡易的には、表示にちょっと難を感じるかもしれませんが、はいの前に半角のスペースを入れておきます。

Last edited by Shin (2021-05-18 13:00:19)

Offline

#4 2021-05-18 09:01:48

himadanee
Guest

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

ボタンバーの設定が思ったより面倒だったので、自分の案ですが却下です。
「アクティブセグメント」の計算式が、番号やタイトルでなくオブジェクト名を指定しないといけないって、何なの?設定画面の選択肢に出てくるのはオブジェクト名でなくタイトルなのに...

#5 2021-05-19 17:56:11

こまつ
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

ありがとうございます!
Char(8203) というのは見えない文字のようなものなんですね。
で、unicodeでの検索はこの8203、8204の順で並び替えるということでしょうか。
勉強になりました!

Offline

#6 2021-05-19 18:21:39

Shin
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

Char ( 8203 ) 200B    『』    ZERO WIDTH SPACE.幅の無い空白。現在最も使用が推奨されているゼロ幅文字
Char ( 8204 ) 200C    『』    ZERO WIDTH SPACE.幅の無い空白。特徴は200Bとほぼ同じ。
です。
それら以外にも、その類の特殊な文字はおおくあります。
http://nicowiki.com/%E7%A9%BA%E7%99%BD% … 8F%B7.html
のページが情報量が多いかな。

Last edited by Shin (2021-05-19 18:31:21)

Offline

#7 2021-05-20 22:53:24

こまつ
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

Shin様
頂いたサンプルでできたのですが、その内容について教えていただければありがたいです。
なぜWhileを使ったり、ModやDivで商や余りを出し、最終的にSubstituteで変換したりするのでしょうか?
例えば、If ( item="はい" ; Char(8203)&item ; Char(8204)&item )でもいいのかなと思った(今回は「はい」・「いいえ」だけだったので)のですが、上手くいきませんでした。

【いただいたサンプルコード】
While (
[
    n = seq ;
    b = ""
] ;
    n ;           ←これはWhile関数の条件でしょうか? 条件がnのみというのもよく分からず・・・
[
    b = Mod ( n ; 2 ) & b ;
    n = Div ( n ; 2 )
] ;
    Substitute (
        Right ( "000" & b ; 3 ) ;
        [ "0" ; Char(8203) ] ;
        [ "1" ; Char(8204) ]
    ) & item   
)

Offline

#8 2021-05-20 23:44:13

Shin
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

10進から二進数へ変換する、拡張可能な一般式として作ってあります。
Substitute() で置き換えする前のデータを見ていただければ、式の意図が解ると思います。Seq(並び順)の数字を3桁の二進数へ変換して、頭につけています。今回は選択肢が2個だけですので000,001だけですが、3個以上になれば、二進数へ変換するには再帰処理が必要です。これに While() を使っています。
While関数そのものについては、ヘルプをご覧ください。

Last edited by Shin (2021-05-20 23:52:54)

Offline

#9 2021-05-21 09:02:04

Shin
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

n進数への変換のロジックはわかりますよね。元の数をnで割った余りを結果へ付け加える、商を次に使う、これがわかっていれば、簡単です。
seq の値ごとの内部の値の動きを解説しておくと、(n,b) は左から右へ、
(0,)
(1.0) (0,01)
(2,0) (1,0) (0,010)
(3,0) (1,1) (0,011)
(4,0) (2,0) (1,00) (0,100)
(5,0) (2,1) (1,01) (0,101)
という偏移になります。最終的に、nが0になると終了で、その時のbが結果の文字列、という事です。

Offline

#10 2021-05-21 09:12:57

こまつ
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

Shin様
わかりやすく教えていただきありがとうございます。
最初、順番ごとにChar(8203)、Char(8204)、Char(8205)・・・とつけていくのだと勘違いしていました。
2進法だとChar(8203)、Char(8204)だけで、3も4も表現していくことができるのですね。普段なぜ2進法なんかあるのかと思っていましたが、理解することができました。
ところで、計算フィールドにIf ( item="はい" ; Char(8203)&item ; Char(8204)&item )で、一応表示的には「はい」「いいえ」となります(幅の無い空白も頭についていると思うのですが・・)が、
上記のサンプルで作ったものと違い、上手くいきません(ラジオボタンが「?」と表示される。並び替えもできない。)。なぜでしょうか?

Offline

#11 2021-05-21 12:36:31

Shin
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

その計算式も内容は同じですので、検証でも同じように表示されますが。
何か設定を間違っているのでしょう。(フィールド種別や索引など)

Offline

#12 2021-05-21 16:06:19

こまつ
Member

Re: 値一覧で、はいーいいえに0ー1または1−0を割り当てる方法

Shin様

一応あっているとのことで安心しました。きっと他のところでおかしなところがあるのだと思います。
ありがとうございました!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 570.7 KiB (Peak: 587.61 KiB) ]