みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM18、Win10
Claris様から提供していただいている下記のDBを、弊社用に加工して勤怠管理をしようと考えております。
https://content.claris.com/jpapps/0021
弊社では深夜勤勤の社員がおりまして、17時から翌日2時(3時までには退社)までの勤務になります。
この場合、日付が変わってしまうので、「退社時刻」の打刻が上手くいきません。
(翌日になると「出社時刻」打刻ボタンに切り替わります。)
①②について、どのように修正したらよいか、ご教授いただけますと幸いです。
①「出社時刻」と「退社時刻」以外に「退社時刻」(深夜)打刻ボタンを作成して次のスクリプトを割り当てる方法を考えたのですが、
「出社時刻」のレコードとは別のレコードとして「退社時刻」(深夜)のレコードが作成されてしまいます。
(日付が変わっても、出社時刻と同じ日付で、同じレコードの中で退社時刻のレコードを作成したいです。)
日付 出社時刻 退社時刻
1/1 16:50 ←このレコードの退社時刻フィールドに2:10と入れたい。
1/1 2:10
スクリプト
If[$区分]=”退社”
フィールド設定[退社時刻フィールド;$time]
フィールド設定[ステータスフィールド;4]
フィールド設定[日付フィールド;Get(日付)-1]
End If
②”次の場合にオブジェクトを隠す”設定に、次の計算式を記載したのですが、(深夜勤務のため)退社していない社員について、翌日になると「出社時刻」ボタンが出現してしまいます。
「退社時刻」ボタン
IsEmpty (主キーフィールド ) or
Get ( 時刻 ) ≦ GetAsTime ( "3:00:00" ) or
ステータスフィールド ≥ 4
「退社時刻」(深夜)ボタン
Get ( 時刻 ) > GetAsTime ( "3:00:00" ) or
ステータスフィールド ≥ 4
お忙しいところ恐縮ですが、お詳しい方、教えていただけますとありがたいです。
②について
色々と方法はあるかと思いますが、
1つの方法として、”前日”のステータスが”4”になった場合に、オブジェクトを隠す計算式を教えて下さいますとありがたいです。
前日の退社記録がなければ退社ボタンも表示、とかではだめなんですかね。
何時までなら、という条件も必要かと思ったけど、早退する場合は9時に出社で10時に退社とかもありえるから、変に制限しないほうがいいのかな...
himadanee様
ありがとうございます。
前日の退社記録がなければ退社ボタンも表示、とかではだめなんですかね。
前日の退社記録がなければ退社ボタンも表示 を表現しようと思いましたが、良く分からず
下記をオブジェクトを隠す場所に記載しましたが、上手くいきません。どのように修正したらよいのでしょうか?
(「前日の退社記録」の表現方法が分かりません。)
IsEmpty (勤怠データ::主キー) and 勤怠データ::日付 = Get(日付)-1
ボタンはどこに表示するのですか?
スレを変えて、
新たにするのなら、前のスレを閉じるべきかと。。
Offline
すべての内部処理を、3時間ずらしておくといいのでしょうね。
表示は、その内部時刻に3時間足して、元に戻します。
そのような特殊な処理を行いたいのでしたら、既存のソリューションを改造するより、1から自分で作った方が早いですよ。
Offline
チポ様
ありがとうございます。不手際、すみませんでした。
ボタンは、できれば「出社時刻」ボタンや「退社時刻」ボタンと同じ場所に重ねて「退社時刻」という名称で(表面上は、当日内退社と翌日退社とは区別がないようにしたいです。)作成したいです。
難しいのならば、少し下の別の場所に表示でも良いかと思っています。ただ、ボタンをクリックしたときに、クリック済みであることが分かるように、クリックしたら他の表示に変わるようにしたいです。
どこかというのは、
各人のレコード上?
レコードに無関係なヘッダとかフッタとか、他のテーブルとか?
とお尋ねしました。
Offline
Shin様
ありがとうございます。
とても素晴らしい方法であるとは思ったのですが、「内部処理」という意味が理解不足で分かりません。
フィールドを計算にして3時間マイナスすると表示上も3時間マイナスになってしまうと思いますし・・・
もう少し簡易な表現で教えて下さいますとありがたいです。
打刻は、すべてボタンで行うことを前程とします。
そこから取得する日付時刻のかわりに、タイムスタンプを使います。保存するタイムスタンプは、Get ( タイムスタンプ ) - 108000 としておきます。時間などの計算は、このタイムスタンプを使って計算させます。
その上で、現在のテーブルにある日付時刻はレイアウト上の表示専用として、GetAsDate() と、GetAsTime() で計算させるのですが、日付はタイムスタンプからそのまま計算し、時刻は、タイムスタンプから取得した時刻に 10800 を加えます。(表示が、25時、26時になるはずですので、これがダメなら86400で割った剰余 Mod() を使ってください)
表示系と計算系が入りますので、よく構造を吟味して改造してください。
Offline
チポ様
どこかというのは、
各人のレコード上?
レコードに無関係なヘッダとかフッタとか、他のテーブルとか?とお尋ねしました。
私の理解不足で良く分からないのですが、「レコードに無関係なヘッダとかフッタ」ではないので、「各人のレコード上」になるのかと思います。
Shin様
丁寧に教えていただきまして、ありがとうございます。
挑戦してみます。
Shin様
打刻は、すべてボタンで行うことを前程とします。
そこから取得する日付時刻のかわりに、タイムスタンプを使います。保存するタイムスタンプは、Get ( タイムスタンプ ) - 108000 としておきます。時間などの計算は、このタイムスタンプを使って計算させます。
その上で、現在のテーブルにある日付時刻はレイアウト上の表示専用として、GetAsDate() と、GetAsTime() で計算させるのですが、日付はタイムスタンプからそのまま計算し、時刻は、タイムスタンプから取得した時刻に 10800 を加えます。(表示が、25時、26時になるはずですので、これがダメなら86400で割った剰余 Mod() を使ってください)
表示系と計算系が入りますので、よく構造を吟味して改造してください。
教えていただいたとおりに作成し直そうとしたのですが、具体的に分からない部分がありましたので、ご教授お願いします。
1.保存するタイムスタンプ→ 次のようにスクリプトの変数を修正したら良いのでしょうか?
変数を設定[$time;値:Get(タイムスタンプ)-10800]・・・・・
2.時刻は、タイムスタンプから取得した時刻に10800を加えます→ 次のようにスクリプトの変数を修正したら良いのでしょうか?
If[$区分=”出社”]
フィールド設定[勤怠データ::出社時刻;$time+10800]・・・・・
3.日付についての修正箇所は、スクリプトの”日付”部分でしょうか? このようしてもしても上手く動作しませんでした。
4.GetAsDate() と、GetAsTime()をどこに使用したらよいのかが分からないので、教えていただけないでしょうか?
初歩的で恐縮ですが、よろしくお願いいたします。
元のファイルを見ていないのですが、そこだけ変更しても多分ダメですよ。
全体を見て、設計の根本から変更する必要があると思います。
Offline
私も元のファイルを見ていませんが、、
打刻が共通のPCで行われるのでしたら、自分のレコード表示、
個々のPCでなら、「打刻」だけで済むのでは。
もちろんイレギュラー対策は必要でしょうが、、
Offline
元のファイルを見てみましたが、普通に開くと誰の打刻でもできる状態なので、ちょっと中途半端な感じがしました。少人数で、物理的なタイムカードの代りにPCを1台置いておくような想定なんでしょうか...
「休憩時間をスキップ」を一度押してしまうと、もう元に戻れないようですし...
説明書がないので、他人の作ったものを改造するよりは、自分で一から作った方が速いと思います。
個人的には、同じ時間でも出社の人も退社の人もいるのであれば、ボタンを一々隠す必要はないと思いました。
あとは誤打刻とか打刻漏れの処理をどうするかとか...(出社時に押し忘れると、退社時に出社を押さないと退社が押せない?)
まずは全体の動作の流れを考えてからですよね...
元のファイルみてみましたが、骨格だけの、とりあえず入力ができますよ、というプレゼン用のサンプルの感じですね。
運用するためには、このファイルに色をつけていってもいいでしょうし、新たに作ってもいいでしょうが、そこからが本来の開発工程です。
勤怠管理は、簡単なようで、ものすごく面倒な例外処理が日常的に発生するので、とても面倒なものです。(だから商売になるのですが)
まずは、基本の流れを考えて作り込むところからでしょう。頑張って作ってください。
Offline
himadanee様、チポ様、Shin様
色々と教えていただきまして、ありがとうございます。
自分で考えていた以上に様々な方法があるのだなぁと思いました。
いただいたヒントを参考にして、自分の欲しい形に近づくように作成していきたいと思います。
本当にありがとうございました。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 601.69 KiB (Peak: 618.59 KiB) ]