初心者のFileMaker pro Q&A

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

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

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2021-06-09 23:23:20

Ben
ゲストユーザー

前のレコードに次のレコードの値を入れられますでしょうか?

いつも勉強させていただいております。

AさんとかBさんとか(各人IDあり)が「作業」テーブルに作業を入力するとします。
「作業を開始した日」「作業を終了した日」その他諸々のフィールドがあるとして、
次の作業レコードを新規作成し、「作業を開始した日」を入力した際に、その前のレコードの「作業を終了した日」に例えば「現レコードの作業を開始した日 - 1日」
というような日付を入れることは可能でしょうか?

作業開始時点では作業終了日が未定のため最初に入れるわけには行かず、
①AさんBさんがいるのでAさんの作業レコードの次が必ずしもAさんの次の作業レコードではない可能性があるのと(人に関してはIDでうまくやれますでしょうか。ただ、途中で「作業」を削除していたり、作業3を入力してから作業2を入れたり、など入力者が予期せぬ入れ方をしても大丈夫な工夫ができたらと思います・・)、
②前のレコードのデータを新しいレコードに入れるわけではなく、次のレコードにデータが入った際に前のレコードの値を入れる というのが可能なのかどうかと思いまして・・・

初歩的な質問であれば申し訳ないのですが、教えていただけたら大変助かります。

#2 2021-06-10 07:08:49

himadanee
ゲストユーザー

Re: 前のレコードに次のレコードの値を入れられますでしょうか?

入力する順番がバラバラでは無理なのでは。
作業が3つあって、
1・3・2の順に入力したら、2を入れた時点で1に入ってた日付を修正しないといけなくなります。つまり2を入れる前は不正な終了日が入ってたことになります。
その日付を使った処理は月に1回しかしないのでその時点までに全部のデータが入れば問題ない、とかなら順番を判断できるフィールドがあるならスクリプトで可能でしょう。開始日でソートしてフィールド内容の全置換とか。

#3 2021-06-10 07:23:51

まか
ゲストユーザー

Re: 前のレコードに次のレコードの値を入れられますでしょうか?

手元にFilemakerが無いので検証できませんが、こんな感じで求められませんか?

$名前 = テーブル::名前
$日付= テーブル::日付
$Get日付= ExecuteSQL("SELECT MAX ( \"日付\" ) FROM \"テーブル\" WHERE \"名前\" = ? AND \"日付\" < ?" ; "" ; "" ; $名前 ; $日付 )

#4 2021-06-10 09:24:44

チポ
メンバー

Re: 前のレコードに次のレコードの値を入れられますでしょうか?

>  前のレコードに次のレコードの値を入れられますでしょうか
この、
前の・次の
というのは、
  人ごとの
でしょうか?

それとも、
一人が異なる作業を同日にする場合も有り、
  人ごと & 作業ごと
でしょうか?

また、
その前後というのは、
  レコード作製順
でいいのでしょうか?


> 途中で「作業」を削除していたり、作業3を入力してから作業2を入れたり
作業の削除
って?

作業3と作業2
って?


全体の説明が不足していますが、仮定の話しでしょうか?

オフライン

#5 2021-06-10 09:50:17

Shin
メンバー

Re: 前のレコードに次のレコードの値を入れられますでしょうか?

一人の作業員が、1作業を完成まで順番に行い、作業を中断して別の作業に移り元の作業に移ることはない、というちょっとありえない前提ならば、、
作業開始日時を持たせておき、作業員で同等、作業開始日時で自分より上の条件で自己リレーションをはり、作業開始日時で昇べきにソートしておきます。このリレーション先の作業開始日時が、前の作業終了日時とみなせます。途中に別の作業をあとから追加しても、考慮します。
ただ、終業時刻と同時に作業が終了すればどうする、とか、運用上の問題は山積みになります。

編集者 Shin (2021-06-10 09:52:27)

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer