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

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

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

You are not logged in.

Announcement

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


#1 2015-05-27 12:42:22

あると
Member

動的値一覧のソート

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

#2 2015-05-27 13:53:40

sorter
Guest

Re: 動的値一覧のソート

ソート用のフィールドを作るしかないでしょう。
未来の日付から引くとかで降順になる。

#3 2015-05-27 15:31:26

あると
Member

Re: 動的値一覧のソート

sorterさん、ありがとうございます。
試してみましたが、ソート用の表示もついてしまい、もう少し知恵をお借りできないでしょうか。

日付がリレーションでも選択でも使用しています。
値一覧で最初のフィールド・第2フィールドに、日付とソート順のフィールドを使いますと
最初+第2フィールドとなりますと、ソート順でソートをかけて
2015/5/3  998
2015/5/2  999
2015/5/1 1000
と並びは希望通りですが、末尾に数字がついてしまい、それが不要になってきます。

第2フィールドのみ表示では、日付のみかソート順のみしか出せません。日付にすると昇順となるため、希望とは違ってしまいます。

希望に書いたように、日付だけの表示で降順となる方法はないでしょうか?
よろしくお願いいたします。

Offline

#4 2015-05-27 16:17:40

チポ
Member

Re: 動的値一覧のソート

過去スレ
https://fm-aid.com/bbs2/viewtopic.php?id=1145

お調べ下さい。

Offline

#5 2015-05-27 19:06:25

あると
Member

Re: 動的値一覧のソート

チポさん、ありがとうございます。
その過去スレ、Hiroさんの#3の書込を参考に試してみます。

Offline

#6 2015-05-28 11:14:38

あると
Member

Re: 動的値一覧のソート

申し訳ありません。まだ、使い方がわかりません。

日付フィールド
順位付けフィールド
選択フィールド(グローバルフィールド)
の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

#7 2015-05-28 12:30:21

Hiro
Member

Re: 動的値一覧のソート

使い方は良さそうだけど、
・順位つけフィールドに値がちゃんと入っているか?
・順位つけフィールドがテキストタイプに設定されているか?
を調べてみる、とか。

Offline

#8 2015-05-28 12:44:26

sorter
Guest

Re: 動的値一覧のソート

順位つけフィールドは何も表示されない
のは、そのためのフィールド(見えない文字を使ってソートする)なので問題ありませんが
Get(レコードID)を使うのはレコード作成順に並べる場合です。そこに並べたい順番に数字を入れたフィールドを指定します。
ちょっと変えて2行目を
SerialIncrement ( "00000" ; Date(1;1;2100) - 日付 )
ぐらいでどうですか。

#9 2015-05-28 12:46:01

sorter
Guest

Re: 動的値一覧のソート

「計算の自動化」では既存レコードに反映しませんから、計算タイプにして。

#10 2015-05-28 13:19:08

チポ
Member

Re: 動的値一覧のソート

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

#11 2015-05-28 14:07:50

あると
Member

Re: 動的値一覧のソート

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

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 8 queries executed - Memory usage: 546.16 KiB (Peak: 567.06 KiB) ]