みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
どなたかご教示いただけませんでしょうか?
会員費管理のシステムを作るにあたり、会員期間を可視化する方法を考えております。
会員は一度会員費を払えば金額に応じて2年、3年または5年間会員となれますが、期限が切れたら再度会員費を支払います。
2つの数字フィールド(何度も支払われるので現在繰り返しフィールドにしています)にそれぞれ納金年度と期限年度を入力することで
会員期間が分かるようにしているのですが、
別に会員期間というチェックボックス形式のフィールドを用意しており、ここには値一覧に2000,2001,2002,.......2030と連続した年度の数字を入れています。
納金年度および期限年度の入力値の値が、用意したチェックボックスの選択欄の値の中から自動的に選ばれてチェックがつけられれば、
選択欄中で納金年度と期限年度に挟まれた値だけに手動でチェックを入れることで簡単に会員期間を確認できると考えました。
何らかの計算式でこのようなことが出来ますでしょうか。
または、チェックボックスの値一覧とほかのフィールドの入力値をリレーションで繋げる?ことなどが必要なのでしょうか。
(勉強不足でしてリレーションシップの使い方がよく分からないのです。)
特にチェックボックスにこだわりがある訳ではありませんので、
他ににより良い可視化の方法がございましたらヒントなどいただけましたら、それも非常にうれしいです。
どうぞよろしくお願いいたします。
Last edited by neconoOmochi5 (2020-01-10 17:23:00)
Offline
ファイルの構成を、具体的に書いていただかないと、アドバイスは無理ですが。
> 2つの数字フィールド(何度も支払われるので現在繰り返しフィールドにしています)にそれぞれ納金年度と期限年度を入力
この入力内容
> 別に用意したチェックボックスの値一覧の数値と一致
この値一覧の内容
は最小限必要です。
もし、支払い年度が2020とかで入力してあり、値一覧が、2018, 2019, 2020... とかでしたら、入力年度を List() で取り出して、そのままチェックボックスで表示させればいいですが。または、支払い済み期間をチェック、とかでもちょっと計算式を作れば可能です。
会費の納入チェックは、繰り返しフィールドより、別のテーブルで管理した方がいいですよ。ポータルで表示しておけば、今とあまり変わり無い表示になります。
Last edited by Shin (2020-01-10 17:49:57)
Offline
安直な方法としては、期限年度フィールドのOnObjectModifyトリガで、
以下のようなスクリプトを使って会員期間フィールドの値をセットするとか。
変数を設定[ $FROM ; 納金年度 ]
変数を設定[ $TO ; 期限年度 ]
# 反転チェック
If [ $FROM > $TO ]
(エラー処理)
End If
Loop
フィールド設定[ 会員期間 ; 会員期間 & GetAsText( $FROM ) & ¶ ]
変数を設定[ $FROM ; $FROM + 1 ]
Exit Loop If [ $FROM > $TO ]
End Loop
なお、会員を納入して更新した際、過年度のチェックはどうするのか(消す?そのまま残す?)によってスクリプトは変わります。
neconoOmochi5さんご自身が書いていらっしゃるように、何十個もチェックボックスが並ぶUIってどうなんでしょうね?
可視化の目的は、
・会員の有効/無効チェック
・期限が切れそうな会員をリストアップして更新を促す
などが考えられます。データの利用目的に沿ったUIを検討されるのが良いのでは?
あと、Shinさんの指摘の通り、会費の納入履歴は別テーブルとした方が良いです。
リレーションの勉強を兼ねて、ぜひ挑戦してください。
Last edited by koeda (2020-01-10 23:09:40)
Offline
推察するに、遣りたい事は、こんなことでしょうか?
なお、会員期間のチェックは全自動計算で全て付きます。
中間作業用に繰り返し計算フィールド「有効年度一覧」を追加する。
その式は、(ループ計算式で)
Let(
[
$LOOP=
"Case(
$sta>$end; $res;
Let([
$res=List($res; $sta);
$sta=$sta+1
]; Evaluate($LOOP))
)"
];
Let([$sta=納金年度; $end=期限年度; $res=""]; Evaluate($LOOP))
)
目的の「会員期間」は計算フィールドとして、「有効年度一覧」の全年度一覧を一覧集計します。
その式は、
UniqueValues(List(有効年度一覧); 2)
この「会員期間」にはチェックボックス形式フィールドを指定しておき、
ここには値一覧に2000,2001,2002,.......2030と連続した年度の数字を入れています。
(※>#1『選択欄中で納金年度と期限年度に挟まれた値だけに手動でチェックを入れる』手動チェックは不用です。)
Offline
値一覧に年度を設定しておくとします。会費情報を別テーブルに移すとして、集計機能を使ったサンプルです。
https://www.dropbox.com/s/gbxoryv2jn4wg … 2.zip?dl=0
Offline
Hiro 様
式、画像付きで教えていただき有難うございます。
まさにやりたかったことです。
手動で入れなくていい方法も教えていただき大変有難いです。
おそらくバージョンの問題(Ver.15使用です)で、UniqueValues()という関数が見つからなかったため
代わりとしてList()のみで使用しました。いまのところ問題なく動きそうです。
Last edited by neconoOmochi5 (2020-01-15 11:51:25)
Offline
Shin 様
丁寧に教えていただき有難うございました。
始めてポータルを使用しましたが、
頂いたサンプルを参考に、繰り返しフィールドと似た表示のインターフェイスを無事作ることが出来ました。
今後も勉強していきたいと思います。
Offline
koeda 様
式などアドバイスいただき有難うございました。
目標としましては、会員の有効/無効チェックを目的に過年度のチェックは残していく形のインターフェイスが欲しいのです。
チェックボックス以外での表示が今回は思いつきませんでしたが、完成しましたものを使用しつつ、
新たな可視化案を思いついた時にはまたアップデートしていけたらと思います。
Offline
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 575.47 KiB (Peak: 592.38 KiB) ]