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

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

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

You are not logged in.

Announcement

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


#1 2022-01-01 13:51:49

Fuji
Guest

Lookup関数の結果を別のフィールドに反映

いつも拝見しております。初心者ながら勉強させて頂いております。

校務関係でMac版Ver.18のファイルメーカーを利用しています。
時間割の変更の管理をファイルメーカーで行おうとしています。

1年間全授業日の全時限全クラスの科目名と担当者が入力された【時間割マスタ】と、「どのクラスのいつの日の何時間目の何の科目(とどの担当者)がいつの日の何時間目に移動したか」という時間割の変更を記録した【時間割変更票】をリレーションでつないでいます。この結果、【時間割変更票】で変更した記録が【時間割マスタ】の「変更後」フィールドに反映され(ルックアップではなくlookup関数を利用しています)、とある一日の元の時間割と変更後の時間割が一目で分かるようになっています。

現在、困っているのが、時間割に「再変更」が生じた際のことです。

一度変更した時間割が再度変更になることがあり、これが生じた際には【時間割変更票】で「再変更」フィールドに「再変更」と自動で入力されるようにしたいのですが上手くいきません。

また、再変更の際【時間割マスタ】へ反映させるべく「変更後」フィールドではなく「再変更」フィールドを新規作成し、ここにlookupで反映させたいのですが上手くいきません。

たとえば、【時間割マスタ】の「変更後」フィールドにすでにデータが入力されていれば、「再変更」へ【時間割変更票】のデータを反映させ、逆にこれが生じたときには【時間割変更票】の「再変更」フィールドに「再変更」と自動入力できれば解決するのかと考えていますが、果たしてこれが可能なのか分かりません。

ちなみに【時間割変更票】には「シリアル」「クラス」「変更前日付」「変更前時限」「変更後日付」「変更後時限」「科目」「担当」「再変更」のフィールドがあります。

以上、わかりにくい説明で申し訳ありませんが、お力を貸して頂ければと思います。

#2 2022-01-01 15:40:47

himadanee
Guest

Re: Lookup関数の結果を別のフィールドに反映

ざっと読んだ感じですが
再変更がまた変更になることも考えると、「再変更フィールド」を作るのはよくないのではないかと。
その時間の割り当て(関連レコード)の数を数えて、1回以上であれば変更されている、その関連レコードの登録した順で再変更、再再変更、などを「何回目の変更」と認識できるようにしたらいいかな、と思います。

#3 2022-01-01 17:12:53

Shin
Member

Re: Lookup関数の結果を別のフィールドに反映

再変更の時に、変更前データは、オリジナルのデータなのか、その次のデータなのか、考える必要ガ出てきます。
全データが必要でしたら、全く違うアプローチにしないと、面倒でしょうね。
【時間割変更票】の「シリアル」が、日付、時限、クラスに対応しているものでしたら、それを履歴として持たせておくだけでいいのでは。
究極、時間割マスターはシリアルのみ持たせて、それに対応する枠データを別に持たせておくと、全体がスッキリするでしょうね。

ちょっと気になるのが、入力はどうやっているのでしょうか。おそらく、いずれか別のものと入れ替え、または、自習設定になるのでしょうが、設定を間違えると訳がわからなくなりそうで。

Offline

#4 2022-01-02 15:02:10

Fuji
Guest

Re: Lookup関数の結果を別のフィールドに反映

ありがとうございます。

himadanee様

おっしゃるとおり再変更が再々変更になることも十分にあります。そして、「【時間割変更票】に出現した回数で何度目かの変更かを認識させる」方法、大変参考になりました。そこでもうひとつ伺いたいことがあります。

現在、一回の時間割変更で生じる全ての変更群(一つ変更をするとその空白授業を埋めるために多いものでは20近くの変更が生じるため)を同じ「シリアル」で管理しています。(なので一つのレコードに1シリアルではありません)再変更になるということは、とある「シリアル」グループで、ある「クラス」の「変更後日付」「変更後時限」の「科目」「担当」が、別の「シリアル」グループの同じ「クラス」の「変更前日付」「変更前時限」になるということになります。

おそらくは、上記の状態が生じた回数を認識させて、2回目は再変更、3改名は再々変更、となるのかと想像していますが、このようなことはどうすれば可能でしょうか?計算式が思いつきません。よろしければご教示下さい。

Shin様

再変更時は、次のデータになるかと思っています。また、【時間割変更票】の「シリアル」は、日付、時限、クラスには対応しておらず、上記のようにあるグループ全体に対して共通の番号を手入力しています。

#5 2022-01-04 10:16:00

チポ
Member

Re: Lookup関数の結果を別のフィールドに反映

> 1年間全授業日の全時限全クラスの科目名と担当者が入力された【時間割マスタ】
1週間の繰り返しではなく、全日付なのですか?

Shinさんも書かれていますが、
どちらにしても、初回の時間割と、変更を分けるのではなく、
変更を含めて一つの時間割のテーブルにしたほうが簡単でしょう。

Offline

#6 2022-01-04 15:35:39

Fuji
Guest

Re: Lookup関数の結果を別のフィールドに反映

チポ様

はい、一週間の繰り返しではなく、全日付です。

日付、クラス、時限、科目、担当の各フィールドを含むレコードを1年間分まとめているのが【時間割マスタ】です。
それをリレーションで【時間割変更票】とつなぎ、時間割の変更が出ると【時間割変更票】の「クラス」「変更前日付」「変更前時限」からlookup関数で、【時間割マスタ】からの「科目」「担当」の値を引っ張ってきています。

逆に変更の記録を残すため、【時間割マスタ】に「変更後科目」と「変更後担当」フィールドを作成し、【時間割変更票】の変更が生じた日付、時限にlookup関数で「科目」「担当」の値を引っ張ってきています。

#7 2022-01-05 09:47:22

チポ
Member

Re: Lookup関数の結果を別のフィールドに反映

時間割マスタには
日付、クラス、時限
だけを持たせて、

時間割変更票
には
科目、担当、適用日付
のフィールドと、
上記のフィールドを持たせて、マスタとリレーション。
リレーションの設定で適用日付の降順ソート指定します。

これで、
時間割最初の作成から時間割変更票(命名がおかしいかな?)
でレコードを作ってゆきます。

マスタのレイアウトに
関連テーブルの科目、担当を配置すれば最新のものが表示されます。

変更は、
マスタからその
  関連レコード数 - 1
が変更回数になりますね。

Offline

#8 2022-01-05 10:26:24

himadanee
Guest

Re: Lookup関数の結果を別のフィールドに反映

繰り返しになりますが、変更がある前提の「科目、担当」はマスタのフィールドとせずに別テーブルで持つようにすれば、初回と変更を同じテーブルで管理できます。
ルックアップしなくても何回変更があっても変更履歴が自動的に残りますね。

#9 2022-01-05 18:11:51

Shin
Member

Re: Lookup関数の結果を別のフィールドに反映

どうも、時間割(生徒)側からも、授業枠(教師)側からも、履歴が必要そうですね。そのそれぞれで1枠ごとに1レコードにしてそれぞれにユニークなキーをつけておき、それを繋ぐようにそれぞれのキーを格納していくような別テーブル(作成日付を含めて)で管理すると、全ていい感じになりませんか。

Offline

#10 2022-01-13 15:40:10

Fuji
Guest

Re: Lookup関数の結果を別のフィールドに反映

返信ありがとうございます

少し時間ができてからご教授いただいた方法を探ってみたいと思います。

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 541.8 KiB (Peak: 562.34 KiB) ]