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

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

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

You are not logged in.

Announcement

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


#1 2014-04-09 10:40:24

たこのさん
Guest

ドロップダウンリストの値表示順の変更方法

FmProAd13使用しています。

ドロップダウンリストの値を、あるテーブル(実際には、営業者テーブル)を取得し表示しています。
その再、営業者コードの表示順で表示したいのですが。

営業車コードを最初のフィールドに設定すれば可能と思いますが、
ドロップダウンリスト内には、営業者名称のみ表示したいのです。

(例)
実際のテーブル

3001 営業200
2001 営業300
5001 営業100
4001 営業500
1001 営業400

となっていた場合、営業者名で表示すると

営業100
営業200
営業300
営業400
営業500

となってしまします。

営業400
営業300
営業200
営業500
営業100

と表示したいのですが。

何かいい方法を教えてください。

#2 2014-04-09 11:27:53

チポ
Member

Re: ドロップダウンリストの値表示順の変更方法

過去スレ
https://fm-aid.com/bbs2/viewtopic.php?id=1145
ここに回答が有ります。

Offline

#3 2014-04-09 13:29:35

Hiro
Member

Re: ドロップダウンリストの値表示順の変更方法

任意の表示順数値(営業者コード)を「ゼロ幅スペース文字」の文字列に変換して、2番目表示のソート値を視認できなくする案。

利用安全なゼロ幅文字が3文字の為、10進数値→3進数変換→3進数字>3種ゼロ幅文字置換、計算処理しています。
その変換式は、

Let([
  //$D=営業者コード;
  $D=10^6+営業者コード; //修正式、桁数を6桁と仮定
  $N=3;
  $R="";
  $F="Case(
    $D=0; $R;
    Let([
     $M=Mod($D;$N);
     $D=Div($D;$N);
     $R=$M & $R
    ]; Evaluate($F))
   )"
];
  Substitute(Evaluate($F); [0;Char(8203)];[1;Char(8204)];[2;Char(8206)])
)

とし、
値一覧のソート索引は「unicode」へ設定変更する。


【補足修正】
この事例は問題ありませんが、念のため、補足修正します。
順位数値を文字変換してテキストソート比較するため、元の数値は桁数が
合っている必要があります。(6桁例:10 → 100010)
そのため、$D=営業者コード; → $D=10^桁数+営業者コード; 、へ式を修正しました。

Last edited by Hiro (2014-04-09 15:57:38)

Offline

#4 2014-04-09 19:59:58

wader
Member

Re: ドロップダウンリストの値表示順の変更方法

元の数値でなく3進変換後に桁数が揃ってないといけないので、ちょっと違うのでは。

Offline

#5 2014-04-09 23:45:19

Hiro
Member

Re: ドロップダウンリストの値表示順の変更方法

確かに、御意。
3進変換後の最大3進桁数は、1+2*最大10進桁数 で得られるので、

【修正式】
Let([
  $D=営業者コード;
  $N=3;  //進数3を指定。
  $10L=6;  //最大10進桁数、ココでは6桁を指定。
  $3L=1+2*$10L;
  $R="";
  $F="Case(
    $D=0; $R;
    Let([$M=Mod($D;$N); $D=Div($D;$N); $R=$M & $R]; Evaluate($F))
    )";
  $R=Right(Substitute(10^$3L-1;["9";"0"]) & Evaluate($F); $3L)
];
  Substitute($R; [0;Char(8203)];[1;Char(8204)];[2;Char(8206)])
)

Offline

#6 2014-04-10 12:29:11

himagine
Guest

Re: ドロップダウンリストの値表示順の変更方法

Char(8206)も使えるんですね。8205を使わないのは、理由がありますか?
8203以外はWordCountに影響するみたいだけど、この目的(UNICODE索引でのソート)では関係ないですよね。

#7 2014-04-10 13:09:26

Hiro
Member

Re: ドロップダウンリストの値表示順の変更方法

自分も付け焼刃ですが、
解説ページ「空白・特殊記号」の「(推奨)「Unicode 200b」『』〜「Unicode 200f」『』
ゼロ幅空白文字グループを見て、その中で「使用は控えた方が良い」される文字は避けました。

Offline

#8 2014-04-10 16:49:20

himagine
Guest

Re: ドロップダウンリストの値表示順の変更方法

なるほど。ざっと見ただけですが、「(Windows)2000で化けて表示されるため」ですから、関係なさそうですね。
むしろ8206は「この文字以降、文字の順序が反転する」機能だから、8207の方が安全な気がします。
ソート順に使うだけ(データとしては入力されない)なんで、やってみて動いてればどうでもいいかな。

#9 2014-04-10 20:51:25

Hiro
Member

Re: ドロップダウンリストの値表示順の変更方法

#8206の反転問題は非表示文字が幾ら反転表示されても、痛くも痒くもありませんよね。表示だけならソート自体に影響ありませんから。
#8205と#8207の文字化け問題は空白文字が文字化けて表示されると、無表示の本来目的が達成できません。


もし文字化け問題が、『「(Windows)2000で化けて表示されるため」ですから、関係なさそうですね。』と解釈できるなら、
[#8203~#8207]に[#8234~#8238]のゼロ幅空白文字を加え全10文字を使えば、先の変換式はぐっとシンプルに成りますよね。
進数変換とか桁数変換の式が不要なので、式は、

Substitute(
  Right(Substitute(10^6-1;9;0)&数値コード; 6)  //最大桁数を仮値6として
  ;[0;Char(8203)]
  ;[1;Char(8204)]
  ;[2;Char(8205)]
  ;[3;Char(8206)]
  ;[4;Char(8207)]
  ;[5;Char(8234)]
  ;[6;Char(8235)]
  ;[7;Char(8236)]
  ;[8;Char(8237)]
  ;[9;Char(8238)]
)


種々の動作環境をお持ちの方に、動作検証して頂けると嬉しいです。

Offline

#10 2014-04-14 12:52:24

himagine
Guest

Re: ドロップダウンリストの値表示順の変更方法

ソート順の他に、入力値とリスト表示値を両方使う場合は、反転表示がFMでも有効なので、だめでした。
どの場合に反転するのか今一法則がつかめず...
9,19,29だと反転しないが39,49,59は反転してる。

#11 2014-04-15 12:54:24

himagine
Guest

Re: ドロップダウンリストの値表示順の変更方法

変換式 & Char(8237) & 表示値
を第2フィールドに指定すると、LTRでOVERRIDEするので反転する問題がなくなるようです。
EMBEDとか用途のわかってない文字を使うのが若干心配ではあるけど

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 7 queries executed - Memory usage: 528.81 KiB (Peak: 549.72 KiB) ]