みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
fm Pro 12 Mac osX
いつも参考にさせていただいております。
初歩的な質問で申し訳ありませんが、日時データとテキストデータを結合して、リスト表示させているのですが、昇順表示を降順表示させたいのですが、該当する関数が見当たりません。
スクリプトの「レコードのソート」では、データ全体をソートしてしまいますので、これは使えず、教えを乞うている次第です。
お忙しいところ、よろしくお願いします。
過去ログ参照 →「#190 List関数にてリストにしたフィールドの情報を・・・ 」
https://fm-aid.com/bbs2/viewtopic.php?pid=1485#p1485
リスト行数が50行程度以下に限定ですが、関数式は、
/*************************
リストのバブルソート計算式
**************************/
Let([
//パラメータ引数設定
$prm=List(依頼 2::依頼者リスト_L); //←(元リストを指定)
$sor=0; //←(ソート条件指定:昇順=1,降順=0)
$typ=1; //←(ソートタイプ指定:テキスト比較=1,数値比較=0)
/**/
$dmy="_?_";
$prm=Substitute(¶&$prm&¶;"¶¶";¶&$dmy&¶);
$prm=Middle($prm;2;Length($prm)-2);
//サブルーチン関数定義
$lst=$prm;
$sub="Case(
$i<=1;$top;
Let([
$i=$i-1;
$itm=GetValue($lst;$i);
$_top=Case($top=$dmy;\"\";$typ;$top;$top*1);
$_itm=Case($itm=$dmy;\"\";$typ;$itm;$itm*1);
$flg=Case($sor;$_top<$_itm;$_top>$_itm);
$rtn=Case($flg;List($rtn;$itm);List($rtn;$top));
$top=Case($flg;$top;$itm)
];Evaluate($sub))
)";
//バブルソート関数定義
$n=0;
$res="";
$fnc="Case(
$n=ValueCount($prm);$res;
Let([
$n=$n+1;
$i=ValueCount($lst);
$top=GetValue($lst;$i);
$rtn=\"\";
$res=List($res;Evaluate($sub));
$lst=$rtn
];Evaluate($fnc))
)"
];
Substitute(Evaluate($fnc);$dmy;"") //バブルソート計算実行
)
【★修正補足★】
サンプルを見直したら、簡単な解法がありました。上のような面倒な式は本事案では不要でしたネ。
「依頼 2」リレーション設定で、「依頼 2::依頼者リスト_L」フィールドに降順ソート指定
するだけでOKでした。
Last edited by Hiro (2014-09-22 22:23:09)
Offline
Hiroさん。ありがとうございます。
「依頼 2」リレーション設定で、「依頼 2::依頼者リスト_L」フィールドに降順ソート指定
ここまで気が付きませんでした。リレーション設定で「レコード作成の許可」で利用はしてましたが、表示で使えるとは思いませんでした。いろいろと試してみなければダメですね。
忙しいところありがとうございました。
Pages: 1
[ Generated in 0.016 seconds, 7 queries executed - Memory usage: 505.96 KiB (Peak: 516.07 KiB) ]