みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
作成はwindows7、FM Pro13advancedを使用しています。
下記のようなレイアウトの勤務表を作成しておりますが
どうしても解決できないことがあり質問させていただきます。
1 2 3 4 ~ 31
山田 早出 通常 通常 夜勤 通常
鈴木 通常 日勤 通常 通常 夜勤
佐藤 通常 通常 夜勤 通常 通常
FMで作成されたカレンダーを参考に、下記①テーブルの「日にち表示用繰り返しフィールド、職員名」と②の「勤務日、職員名」とをリレーションさせ
①のスケジュール表示用繰り返しフィールド[31]をlookupを用いて、早出や夜勤などの②のスケジュール内容を表示させようとしているのですがうまくいきません。
リレーション自体は、日にち表示用繰り返しフィールドに関連するスケジュール内容は表示されるのでおそらく問題ないと思います。
①のスケジュール表示用繰り返しフィールド[31]の内容は
Lookup(勤務スケジュール::スケジュール内容 ; "")としてみましたが、ご教授いただけませんでしょうか?
テーブル構成として、以下になります。
①勤務表テーブル
(フィールド)
・ベース日付
・日にち表示用繰り返しフィールド[31](計算フィールドにて作成、ベース日付が2020年5月1日ならば繰り返しフィールド[6]は2020/05/06となる)
・山田などの職員名
・スケジュール表示用繰り返しフィールド[31](勤務スケジュールテーブルのスケジュール内容を表示させるためのlookupを使用した計算フィールド)
②勤務スケジュールテーブル
(フィールド)
・早出、夜勤などのスケジュール内容
・職員名
・勤務日
勤務スケジュール側で、スケジュール内容を、計算式繰り返しフィールドに展開しておきます。そのフィールドをlookup関数で参照します。
Offline
現状の回答は、#2>Shinさんの通りですが、
この根本問題は、リレーション集計法を取る際の「苦肉の策」からきています。
SQL集計法にすれば、単独SQL計算式だけで、他の一切の要素を要せず非常に簡潔です。
この具体式例は、
ExecuteSQL(
"
SELECT ""スケジュール内容"" FROM ""勤務スケジュールテーブル"" WHERE ""職員名""=? AND ""勤務日""=?
"
; "" ; ""
; 職員名[1] // ←(Extend(勤務表テーブル::職員名))の略式
; 日にち表示用 // ←(勤務表テーブル::日にち表示用繰り返しフィールド[Get(計算式繰り返し位置番号)])の略式
)
Last edited by Hiro (2020-05-06 15:13:29)
Offline
スケジュール表示用繰り返しフィールド[31]を、計算フィールドにせずに、テキストフィールドにしておきます。
自動入力でルックアップに設定すれば、計算フィールドを追加せず、表示できますよ。(変更があれば、再ルックアップします)
Offline
勤務スケジュールテーブルで
各職員ごとに、全ての日付のレコードがあるのなら、
1行ポータルを31個横に並べるだけでいいですが。
リレーションは
職員名
and
年月
ですね。
Offline
Shin様、Hiro様、チポ様、アドバイスありがとうございます。
スケジュール表示用繰り返しフィールドをテキストフィールドにして、オプションからスケジュール内容をルックアップするよう設定したのですが
空白のままうまくいきません。
最初に仰った勤務スケジュール側でスケジュール内容を計算式繰り返しフィールドに展開し、のところですが
勤務スケジュールテーブルに、31個の繰り返し計算フィールドを別途作成し、計算式をスケジュール内容にするということでしょうか?
Hiro様
SQLの構文の「WHERE ""職員名""=? AND ""勤務日""=?」の?はどういう意味なのでしょうか?
SQLの経験がほとんどなく、調べましたがよく分からず教えていただけますと助かります。
また教えていただいた構文を用いますと、一人目の山田のデータが反映されますが
2人目のデータを反映するには構文のどこを修正すればよろしいでしょうか?
SQLの構文の「WHERE ""職員名""=? AND ""勤務日""=?」の?はどういう意味なのでしょうか?
SQLの経験がほとんどなく、調べましたがよく分からず教えていただけますと助かります。
ExecuteSQL関数のヘルプより抜粋
→『引数:ステートメントには、オプションの引数がクエリーのどこで使用されるかを示す、プログラムに基づいて生成された SQL (ダイナミック引数) を含むことができます。ダイナミック引数を指定する場合は疑問符 (?) を使用します。』
また教えていただいた構文を用いますと、一人目の山田のデータが反映されますが
2人目のデータを反映するには構文のどこを修正すればよろしいでしょうか?
1名1レコードのテーブルだからリスト画面表示でご覧ください。
Last edited by Hiro (2020-05-07 18:53:43)
Offline
Hiro様
ありがとうございます。
SQLを使用した方法でスケジュール内容が勤務表に反映されるようになりました。
Pages: 1
[ Generated in 0.009 seconds, 7 queries executed - Memory usage: 522.26 KiB (Peak: 527.16 KiB) ]