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

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

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

You are not logged in.

Announcement

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


#1 2015-09-28 16:45:47

NK
Member

繰り返しフィールドで、日付条件を判定して値を取り出したい

お世話になります。

Mac FMP14adv です。

給与計算の仕組みを作っています。

関連するテーブルは
・月次シフト(従業員1人1ヶ月で1レコード)
・従業員マスタ

のふたつで、従業員マスタのIDでリレーションしています。

従業員マスタには、交通費・時給(月給)などの給与のフィールドがあります。
それを、月次シフトの対応するフィールド、交通費・時給(月給)などに、
計算値自動入力で、ルックアップ(従業員マスタ::交通費)しています。

給与を別テーブルにせず、使用しているのですが、
昇給や転居などで、交通費や時給などが変更する事に対応をするため、
それぞれを繰り返しフィールドにし、
その繰り返し位置に対応する適用開始日の繰り返しフィールドを作りました。


・従業員マスタのフィールド
  ・交通費[100]       [1]     ¥130 [2]       ¥260   [3]    [4]
  ・交通費変更日[100]           [1] 2015/8/1 [2] 2015/1/18 [3]    [4]

・月次シフトのフィールド
  ・交通費 
  ・月末日    (例:2015/9/30)

これを変更日のフィールドの日付がで判定して、繰り返し位置の1番か2番のどちらを使うかを選択する
カスタム関数を作りたいのですが、
カスタム関数を作り慣れておらずゆきずまっています。

カスタム関数の引数は、

金額(交通費や時給のフィールド)
変更日
基準日(月末の日付フィールド)

の三つでできるのではないかと思っています。

よろしくお願いいたします

Offline

#2 2015-09-28 18:30:08

チポ
Member

Re: 繰り返しフィールドで、日付条件を判定して値を取り出したい

交通費や時給などが変更する事に対応をするため、
それぞれを繰り返しフィールドにし

繰り返しではなく、
変更ごとに1レコードとする別テーブルにすべきでしょう。

Offline

#3 2015-09-28 19:30:45

NK
Member

Re: 繰り返しフィールドで、日付条件を判定して値を取り出したい

チポ wrote:

交通費や時給などが変更する事に対応をするため、
それぞれを繰り返しフィールドにし

繰り返しではなく、
変更ごとに1レコードとする別テーブルにすべきでしょう。

データベースとしては、おっしゃる通りなのですが、
給与は過去の物を取っておく必要はなく、
シフトを今月と来月と作っていて、
その途中で参照する給与や交通費が変わったり、
数ヶ月後の昇給の記録を、その月の給与計算のタイミングではなく事前に入力しておく、
くらいなので、繰り返しで処理できるのなら、構造をいじらなくて済むのでいいなと思っています。

Offline

#4 2015-09-28 22:29:08

Shin
Member

Re: 繰り返しフィールドで、日付条件を判定して値を取り出したい

繰り返しフィールドを使っていると、普通は、
  ・交通費[100]       [1]     ¥ 260[2]       ¥130   [3]    [4]
  ・交通費変更日[100]           [1]2015/1/18 [2]  2015/8/1 [3]    [4]
となりませんか。
これなら、もう一つ
Case ( 基準日[1] < 基準日 ; 交通費 )
という計算式を設定した計算式繰り返しフィールドを作り、Last (繰り返しフィールド) で該当する交通費が得られます。
まあ、お薦めの構造ではないのは、チポさんと同じ意見です。別テーブルで管理すれば、リレーションのみで得られます。

Offline

#5 2015-09-29 17:06:24

NK
Member

Re: 繰り返しフィールドで、日付条件を判定して値を取り出したい

ありがとうございます。

別テーブルでというのは自分でもそう思います。

Lastというのは久しく使っていなかったのですっかり忘れていました。
ありがとうございます。

Offline

#6 2015-09-30 11:40:10

NK
Member

Re: 繰り返しフィールドで、日付条件を判定して値を取り出したい

カスタム関数も作ってみたのですが、
うまく計算ができません。
スクリプトのようにデバッグできないので、
どこがおかしいかを検証しきれずにいます。
アドバイスいただけると嬉しいです。



Payroll(金額 変更日 基準日 回数) 金額と変更日は繰り返しフィールド 回数は1もしくは入力せず

Let (
回数 =Case ( IsEmpty ( 回数 ) ; 1 ;
                     Count( 適用開始日 )   ≥ 回数 ; 回数 ;
       0
                    )

;
Case(
回数 > 0 and
基準日  ≥  GetRepetition ( 適用開始日 ; 回数 ); GetRepetition ( 金額 ; 回数 ) ;
Payroll ( 金額 ; 適用開始日 ;基準日 ; 回数 + 1 )


)

)

//回数は入力しないか1


その前に考えたのは、これですが、これは、繰り返し2番目以降のデータが取れませんでした。
Let (
回数 = Get ( 計算式繰り返し位置番号 )

;
Case(
基準日  ≥  GetRepetition ( 変更日 ; 回数 ); GetRepetition ( 金額 ; 回数 )
)

)

Offline

#7 2015-10-01 15:28:51

NK
Member

Re: 繰り返しフィールドで、日付条件を判定して値を取り出したい

筋の悪い処理だと思いますが、
うまくいかないカスタム関数のどこがだめなのか、
どう考えたらいいのか、アドバイスをいただければと思います。

よろしくお願いいたします。

NK

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, 7 queries executed - Memory usage: 519.7 KiB (Peak: 524.23 KiB) ]