みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM13
Windows7
ドロップダウンリストに値一覧を動的にいれています。
変更履歴を表示するため値一覧は、日付を出しています。
日付を選ぶと、その日の変更履歴を出すようにと。
今回質問をしたいのは、このドロップダウンリストで表示される日付の順についてです。
過去より直近を上部にもってきたいのですが、現状では自動ソートで日付の昇順となっています。
そのため、これを降順に変えたい。
GetNthRecordを使って前回の順-1としようとしましたが、GetNthRecordの設置するフィールドとそれに含むフィールドが同じだと計算されず失敗となりました。
失敗例、フィールドA(計算)→GetNthRecord(フィールドA;Get(レコード番号)-1)
なにか良い方法はあるのでしょうか?
現在
2015/5/1
2015/5/2
2015/5/3
2015/5/4
↓
希望
2015/5/4
2015/5/3
2015/5/2
2015/5/1
と並び替えしたいです。
よろしくお願いいたします。
Offline
ソート用のフィールドを作るしかないでしょう。
未来の日付から引くとかで降順になる。
sorterさん、ありがとうございます。
試してみましたが、ソート用の表示もついてしまい、もう少し知恵をお借りできないでしょうか。
日付がリレーションでも選択でも使用しています。
値一覧で最初のフィールド・第2フィールドに、日付とソート順のフィールドを使いますと
最初+第2フィールドとなりますと、ソート順でソートをかけて
2015/5/3 998
2015/5/2 999
2015/5/1 1000
と並びは希望通りですが、末尾に数字がついてしまい、それが不要になってきます。
第2フィールドのみ表示では、日付のみかソート順のみしか出せません。日付にすると昇順となるため、希望とは違ってしまいます。
希望に書いたように、日付だけの表示で降順となる方法はないでしょうか?
よろしくお願いいたします。
Offline
Offline
チポさん、ありがとうございます。
その過去スレ、Hiroさんの#3の書込を参考に試してみます。
Offline
申し訳ありません。まだ、使い方がわかりません。
日付フィールド
順位付けフィールド
選択フィールド(グローバルフィールド)
の3つを用意しました。
値一覧
最初のフィールド:日付フィールド
2番目フィールド:順位付けフィールド
ソート:2番目のフィールドを使う、unicord
と設定しました。
順位つけフィールド
計算の自動化、計算値
Substitute(
Right(Substitute(10^6-1;[9;0]) & Get(レコードID); 6) //レコードIDの最大桁数は6桁もあれば十分として、ID 000001~999999
;[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)]
)
とする。「値一覧のソート」から参照。
選択フィールド(グローバルフィールド)
ドロップダウンリスト、上記の値一覧を選択
このようにしましたが、順位つけフィールドは何も表示されず、ドロップダウンリストにも何も選択肢がでません。
計算式の使いところが間違っていると思うのですが、どこを修正すれば良いでしょうか?
よろしくお願いいたします。
参考
[解決] フィールドの値を使用する値一覧において任意の順番に並べたい
https://fm-aid.com/bbs2/viewtopic.php?id=1145
[解決] ドロップダウンリストの値表示順の変更方法
https://fm-aid.com/bbs2/viewtopic.php?id=1305
値の一覧
https://fm-aid.com/bbs2/viewtopic.php?id=1728
[85992] PRO12v3での空白を使った値一覧のソート
http://www.russ.jp/stepbbs/step.cgi?mode=view&no=85992
[38854] 値一覧のソート
http://www.russ.jp/stepbbs/step.cgi?mode=view&no=38854
Offline
使い方は良さそうだけど、
・順位つけフィールドに値がちゃんと入っているか?
・順位つけフィールドがテキストタイプに設定されているか?
を調べてみる、とか。
Offline
順位つけフィールドは何も表示されない
のは、そのためのフィールド(見えない文字を使ってソートする)なので問題ありませんが
Get(レコードID)を使うのはレコード作成順に並べる場合です。そこに並べたい順番に数字を入れたフィールドを指定します。
ちょっと変えて2行目を
SerialIncrement ( "00000" ; Date(1;1;2100) - 日付 )
ぐらいでどうですか。
「計算の自動化」では既存レコードに反映しませんから、計算タイプにして。
sorterさんの通り、
計算フィールドとしないとダメでしょう。
Right(Substitute(10^6-1;[9;0]) & Get(レコードID); 6)
ここも、指摘の通り、
レコードIDではダメですよ。
今日 2015/5/28
はFMの中では
735746
という数値になっていますから、
常識的な日付と考えれば、
800000 - 日付
とすれば、日付の逆順に5桁の数字が返りますから、
これ位でいいかも。
Last edited by チポ (2015-05-28 13:19:40)
Offline
Hiroさん、sorterさん、チポさん、ありがとうございます。
>順位つけフィールドがテキストタイプに設定されているか?
テキストで設定しています。
>順位つけフィールドに値がちゃんと入っているか?
順位つけフィールドを段階をつくって、確認中です。
Right(Substitute(10^6-1;[9;0]) & Get(レコードID); 6)まででは
000001
000002
000003
と表示されます
次に
Substitute(
Right(Substitute(10^6-1;[9;0]) & Get(レコードID); 6)
;[0;Char(8203)])まででは
1
2
3
となり、
さらに、Charを順に加えていきますと置き換わって見た目にはフィールドは空になりました。
計算フィールド(テキスト、Unicode言語)を2番目フィールドに指定(ソート条件をUnicode)すると、ドロップダウンに何も選択できなくなってしまいます。
ここまで書いてて、皆様からのお返事をたくさんいただいているのに気が付きました。上記、途中経過でこうなったということで残しております。
>順位つけフィールドは何も表示されない
見えないというのは、厄介ですね。
正しいのか確認が難しいです。
>常識的な日付と考えれば、800000 - 日付 とすれば、日付の逆順に5桁の数字が返りますから、
今回は、こちらを使わせていただきました。
出来ました。動きました。
計算フィールド、テキスト
Substitute ( 800000 - GetAsNumber ( 日付フィールド ) ;
[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
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 546.8 KiB (Peak: 567.71 KiB) ]