みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
こんにちは。
自動採番するフィールドでつまづいてしまい、ご教授願います。
年度(4月)で切り替わり、新たに0から採番する計算式を作りたいのです。
西暦で切り替わるパターンはうまくいったのですが、4月からスタートする方法がわかりません。
また、現在の計算式だとレコード総数でやっているため、切り替わった際に0から採番することができません。
Right ( Left ( Get ( 日付 ) ; 4 ); 2 ) & Right ( "00000" & Get ( レコード総数 ) ; 5 )
よろしくお願いいたします。
Offline
Year ( Get ( 日付 ) + 275 ) - 1
で4月年度が求められます。
年度ごとのシリアル番号は、とりあえず、全体にシリアル番号を打っておきます。
年度 = 年度
シリアル > シリアル
という自己リレーションをはり、
年度 & Right ( "00000" & Count ( リレーション::シリアル ) )
ただし、レコード削除すると、それより新しいレコードに影響を与えます。
Offline
1)Shinさんの示された式で年度を求め、
2)1)の年度で自己リレーション
3)Max(テーブル2::年度別シリアル)+1
で年度別シリアルを採番して格納、ではいかがでしょうか?
具体的には
計算値自動入力、既存値を置き換え、常に評価する
If ( IsEmpty ( テーブル2::年度別シリアル ) ; 0 ; Max ( テーブル2::年度別シリアル )+1 )
Last edited by koeda (2019-09-05 05:22:20)
Offline
別解として、自己リレーションを使わずExecuteSQLを使う方法でも良いかもしれません。
1)Shinさんの示された式で年度を求め
2)ExecuteSQLで年度別シリアルの最大値を求め、+1の番号を自動入力
計算値自動入力、既存値を置き換える、常に評価する
Let (
[
~count = ExecuteSQL ( "SELECT COUNT(\"年度別シリアル\") FROM \"テーブル\" WHERE \"年度\"=?"; "" ; "" ; 年度 );
~max = ExecuteSQL ( "SELECT MAX(\"年度別シリアル\") FROM \"テーブル\" WHERE \"年度\"=?"; "" ; "" ; 年度 )
];
If( ~count=1; 0 ; ~max+1 )
)
Last edited by koeda (2019-09-05 12:46:08)
Offline
すみません。#4はバグってました。0から始めたい時は以下のようにしないとダメですね。
Let (
[
~count = ExecuteSQL ( "SELECT COUNT(\"年度別シリアル\") FROM \"テーブル\" WHERE \"年度\"=?"; "" ; "" ; 年度 );
~max = ExecuteSQL ( "SELECT MAX(\"年度別シリアル\") FROM \"テーブル\" WHERE \"年度\"=?"; "" ; "" ; 年度 )
];
Case ( ~Count=1 ; 0 ;
~Count=2 ; 1 ;
~Max+1 )
)
Offline
Shin様
ご回答ありがとうございます。
いただいた方法で理想の値が取れました。
Year ( Get ( 日付 ) + 275 ) - 1
↑この計算式の+275の意味はどのような意味があるのでしょうか。
koeda様
ご回答ありがとうございます。
ExecuteSQLを利用したことがないため、完全に理解することができませんでした。
お忙しい中ご回答いただいたにも関わらず、申し訳ございません。
勉強のためにいただいた計算式を参考に試してみます。
Offline
Year ( Get ( 日付 ) + 275 ) - 1
↑この計算式の+275の意味はどのような意味があるのでしょうか。
「275」は4月1日から12月31日までの日数で、
通年不変の固定数であることに着目したソリューションです。
275日を加算した計算年が1年繰り上がれば、本年度と判断します。
Offline
私の会社は6月年度ですので、184 を使っています。10月年度でしたら、92 です。
2月年度の場合(こんな会社聞いた事無いですが)のみ、31を引きます。
Offline
Hiro様、Shin様
ご回答ありがとうございます。
実際に組み込んで試すことで足し引きする数字の意味が理解できました。
とても参考になりました。ありがとうございました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 519.86 KiB (Peak: 524.4 KiB) ]