みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
制作環境
filemaker19
windows10
部屋番号フィールド
1号室
2号室
3号室
4号室
開始時刻フィールド
14:00
14:30
15:00・・・21時まで30分間隔
利用時間フィールド
30
60
90・・・360まで30分間隔
上記3つのフィールドで値一覧、
現在はカスタム値を入れて選択してもらっています
この度、運用が変わるようで、
3,4号室の利用が17時までに制限されることになりました
入力の段階で、誤入力・誤編集を防ぐために
1. 2,3号室が選択されている状態では、
開始時刻フィールドの値一覧表示を16:30までに制限する
2. 2,3号室が選択されている状態では、
終了予定時刻が17:00を超えないように
利用時間フィールドの値一覧表示を制限する
ex) 開始時刻フィールドが16:00の場合、利用時間は30,60のみ
3. 1号室で入力された、終了予定時刻が17:00を超えるレコードで、
部屋番号フィールドの値一覧表示を 1号室、2号室に制限する
を実装したいと考えております
※ 別に計算させる終了時刻フィールドを作成し、
違反する場合はカスタムダイアログを表示する、という方法は
別のデータベースで不評を買いまして、そもそも選択できないようにしろ、
とのお達しがあります・・・
現在、苦肉の策で、制限テーブルを作成、
フィールド
最終開始時刻 部屋番号
を作成、開始時刻フィールド と 最終開始時刻フィールドを
不等号でリレーションして
上記条件3 はクリアできました
ただ、
上記条件1の場合、動的値一覧がホワイトリスト形式
での入力になってしまうため、
フィールド
開始時刻 部屋番号 予定時間
14:00 1号室 30
14:00 1号室 60
14:00 1号室 90
・
・
・
14:00 1号室 360
14:00 2号室 30
14:00 2号室 60
14:00 2号室 90
・
・
・
14:00 2号室 360
14:00 3号室 30
14:00 3号室 60
14:00 3号室 90
・
・
・
14:00 3号室 360
というように、総当たりでレコードを作成していくのかと思うと
今後の変更への対応や、語入力が不安です
よい方法がないか、お知恵をいただけませんでしょうか?
部屋番号フィールド と、開始時刻フィールド で全ての組み合わせでのレコードを作っておき、そのそれぞれに、利用時間フィールド を繰り返しか改行区切りで設定します。
それに対してリレーションを張ってイクといいのではないかと思いますが。(検証していません)
Offline
思い付きですが、、
部屋番号&開始時刻
をユニーなテーブルにして、
予定時間を繰り返しフィールドに入力。
これの動的値一覧では?
例では
部屋番号数 X 開始時刻数
60レコードで済みますね。
Offline
部屋番号選択ボタン 4個
開始時刻選択ボタン 最大15個
使用時間選択ボタン 最大13個
を配置して、
順に選択するのはどうでしょう。
条件により選択できないボタンはグレーアウトとか非表示にできますよね。
Offline
説明の3,4号室
が途中から2,3号室
に変わってますが
今後もあるかどうかわかりませんが、両方から制限すると編集できなくなることがあります。
1号室は午前のみ
2号室は午後のみ
という条件があったとして、
1号室10時~
を
2号室15時~
に変えようと思っても、2号室も15時も、どっちも選択できません。
「一旦どれかのフィールドを消す」操作ができればいいですが
himadaneeさんのご指摘では、
入力順
その逆の訂正順
を強制するようにすればいいですね。
Offline
予約を入力する、というだけなら単純な動きですが。実は、別の予約とのブッキングを考えないといけないのでは。それは目視で管理するのですか。
Offline
みなさん、いろいろご指導ありがとうございます
Shinさま
実は重複、利用時間のかさなりに関しては、チェックを入れております
同じ部屋で、15時から1時間の予約が入っている、
新規予約で、14時から2時間の予約を入れようとすると、ダイアログで警告を
出して、2時間 という予定時間を消去してやり直しをさせます
himadaneeさま
ご指摘ありがとうございます
チポさまのご意見をもとに、検討してみます
SHinさま
1つづつレコードを作成していくより、改行区切りでできるかもしれないとのことで
希望が見えました
試してみます
ブッキング管理の一つの方法として、
全ての管理を1部屋毎にタイムスタンプを使った1本の線上に配置する事にします。夜間の使用停止時間は、ガオーさんが使用するとみなして、日付に合わせて予約レコードを作っておきます。部屋別に適用日付を持たせたマスターを作れば簡単でしょう。
予約の開始時刻以降の予約レコードの中で直近のもの(開始日時の一番小さなもの)を選べば、最大使用時間が求められます。それから時間の一覧を作り出せばいいと思います。
ちょっと動きは違うのですが、
https://fm-aid.com/bbs2/viewtopic.php?pid=56451#p56451
のサンプルを参考にしてみてください。
Last edited by Shin (2023-10-18 08:53:21)
Offline
少々手こずりましたが、機能的には面白いサンプルです。
各部屋のタイムラインで予約状況を表示させています。その各枠で予約管理し、それ以降の空き時間を検知して最大予約時間までを選択できるようなドロップダウンリストを表示するサンプルです。
既入力の予約の部屋変更も、別の予約、終了時刻などを考慮したドロップダウンリストを表示させています。
https://www.dropbox.com/scl/fi/8kqc2mm0 … v9xc0&dl=0
Last edited by Shin (2023-10-21 15:37:43)
Offline
Pages: 1
[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 569.09 KiB (Peak: 586 KiB) ]