みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも拝見しております。初心者ながら勉強させて頂いております。
校務関係でMac版Ver.18のファイルメーカーを利用しています。
時間割の変更の管理をファイルメーカーで行おうとしています。
1年間全授業日の全時限全クラスの科目名と担当者が入力された【時間割マスタ】と、「どのクラスのいつの日の何時間目の何の科目(とどの担当者)がいつの日の何時間目に移動したか」という時間割の変更を記録した【時間割変更票】をリレーションでつないでいます。この結果、【時間割変更票】で変更した記録が【時間割マスタ】の「変更後」フィールドに反映され(ルックアップではなくlookup関数を利用しています)、とある一日の元の時間割と変更後の時間割が一目で分かるようになっています。
現在、困っているのが、時間割に「再変更」が生じた際のことです。
一度変更した時間割が再度変更になることがあり、これが生じた際には【時間割変更票】で「再変更」フィールドに「再変更」と自動で入力されるようにしたいのですが上手くいきません。
また、再変更の際【時間割マスタ】へ反映させるべく「変更後」フィールドではなく「再変更」フィールドを新規作成し、ここにlookupで反映させたいのですが上手くいきません。
たとえば、【時間割マスタ】の「変更後」フィールドにすでにデータが入力されていれば、「再変更」へ【時間割変更票】のデータを反映させ、逆にこれが生じたときには【時間割変更票】の「再変更」フィールドに「再変更」と自動入力できれば解決するのかと考えていますが、果たしてこれが可能なのか分かりません。
ちなみに【時間割変更票】には「シリアル」「クラス」「変更前日付」「変更前時限」「変更後日付」「変更後時限」「科目」「担当」「再変更」のフィールドがあります。
以上、わかりにくい説明で申し訳ありませんが、お力を貸して頂ければと思います。
ざっと読んだ感じですが
再変更がまた変更になることも考えると、「再変更フィールド」を作るのはよくないのではないかと。
その時間の割り当て(関連レコード)の数を数えて、1回以上であれば変更されている、その関連レコードの登録した順で再変更、再再変更、などを「何回目の変更」と認識できるようにしたらいいかな、と思います。
再変更の時に、変更前データは、オリジナルのデータなのか、その次のデータなのか、考える必要ガ出てきます。
全データが必要でしたら、全く違うアプローチにしないと、面倒でしょうね。
【時間割変更票】の「シリアル」が、日付、時限、クラスに対応しているものでしたら、それを履歴として持たせておくだけでいいのでは。
究極、時間割マスターはシリアルのみ持たせて、それに対応する枠データを別に持たせておくと、全体がスッキリするでしょうね。
ちょっと気になるのが、入力はどうやっているのでしょうか。おそらく、いずれか別のものと入れ替え、または、自習設定になるのでしょうが、設定を間違えると訳がわからなくなりそうで。
Offline
ありがとうございます。
himadanee様
おっしゃるとおり再変更が再々変更になることも十分にあります。そして、「【時間割変更票】に出現した回数で何度目かの変更かを認識させる」方法、大変参考になりました。そこでもうひとつ伺いたいことがあります。
現在、一回の時間割変更で生じる全ての変更群(一つ変更をするとその空白授業を埋めるために多いものでは20近くの変更が生じるため)を同じ「シリアル」で管理しています。(なので一つのレコードに1シリアルではありません)再変更になるということは、とある「シリアル」グループで、ある「クラス」の「変更後日付」「変更後時限」の「科目」「担当」が、別の「シリアル」グループの同じ「クラス」の「変更前日付」「変更前時限」になるということになります。
おそらくは、上記の状態が生じた回数を認識させて、2回目は再変更、3改名は再々変更、となるのかと想像していますが、このようなことはどうすれば可能でしょうか?計算式が思いつきません。よろしければご教示下さい。
Shin様
再変更時は、次のデータになるかと思っています。また、【時間割変更票】の「シリアル」は、日付、時限、クラスには対応しておらず、上記のようにあるグループ全体に対して共通の番号を手入力しています。
> 1年間全授業日の全時限全クラスの科目名と担当者が入力された【時間割マスタ】
1週間の繰り返しではなく、全日付なのですか?
Shinさんも書かれていますが、
どちらにしても、初回の時間割と、変更を分けるのではなく、
変更を含めて一つの時間割のテーブルにしたほうが簡単でしょう。
Offline
チポ様
はい、一週間の繰り返しではなく、全日付です。
日付、クラス、時限、科目、担当の各フィールドを含むレコードを1年間分まとめているのが【時間割マスタ】です。
それをリレーションで【時間割変更票】とつなぎ、時間割の変更が出ると【時間割変更票】の「クラス」「変更前日付」「変更前時限」からlookup関数で、【時間割マスタ】からの「科目」「担当」の値を引っ張ってきています。
逆に変更の記録を残すため、【時間割マスタ】に「変更後科目」と「変更後担当」フィールドを作成し、【時間割変更票】の変更が生じた日付、時限にlookup関数で「科目」「担当」の値を引っ張ってきています。
時間割マスタには
日付、クラス、時限
だけを持たせて、
時間割変更票
には
科目、担当、適用日付
のフィールドと、
上記のフィールドを持たせて、マスタとリレーション。
リレーションの設定で適用日付の降順ソート指定します。
これで、
時間割最初の作成から時間割変更票(命名がおかしいかな?)
でレコードを作ってゆきます。
マスタのレイアウトに
関連テーブルの科目、担当を配置すれば最新のものが表示されます。
変更は、
マスタからその
関連レコード数 - 1
が変更回数になりますね。
Offline
繰り返しになりますが、変更がある前提の「科目、担当」はマスタのフィールドとせずに別テーブルで持つようにすれば、初回と変更を同じテーブルで管理できます。
ルックアップしなくても何回変更があっても変更履歴が自動的に残りますね。
どうも、時間割(生徒)側からも、授業枠(教師)側からも、履歴が必要そうですね。そのそれぞれで1枠ごとに1レコードにしてそれぞれにユニークなキーをつけておき、それを繋ぐようにそれぞれのキーを格納していくような別テーブル(作成日付を含めて)で管理すると、全ていい感じになりませんか。
Offline
返信ありがとうございます
少し時間ができてからご教授いただいた方法を探ってみたいと思います。
Pages: 1
[ Generated in 0.026 seconds, 9 queries executed - Memory usage: 541.8 KiB (Peak: 562.34 KiB) ]