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

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

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

You are not logged in.

Announcement

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


#1 2019-11-13 01:56:32

和三盆
Guest

残り時間を各レコードに持たせリアルタイムで減らす

質問お願いします。(環境 FM18)

レコードに終了時間を設定し、現在時刻との差で残り時間を表示させたいです。
使用用途はスタジオの部屋の貸出時間を管理するもので、部屋ごとにレコード(12個)を作り、リスト形式で表示しています。
現在は終了時間 - 現在時間を全てのレコードで再計算するボタンを作って対応していますが、これだと押し忘れなどがあり、
終了時間をとっくに過ぎてるなんてことがあります。

このリスト形式に残り時間をリアルタイムで表示したいのですが、出来るでしょうか?
条件として、各レコードを細かく編集することがあるので、常に全体を再計算し、レコードが編集中にならないようなのが好ましいです。

方法があれば教えて欲しいです。よろしくお願いします。

#2 2019-11-13 09:33:41

チポ
Member

Re: 残り時間を各レコードに持たせリアルタイムで減らす

> 全てのレコードで再計算するボタン
ボタンに変えて
  OnTimer スクリプトをインストール
で1分ごとに実行させるのはいかがでしょう。

Offline

#3 2019-11-13 16:48:32

Hiro
Member

Re: 残り時間を各レコードに持たせリアルタイムで減らす

秒単位のカウントダウン・タイマー複数個を、負荷ストレスなく同時更新する作例サンプルです。
全データの中から現在貸出時間中のデータだけを自動抽出し、その残り時間をカウントダウン表示します。

●サンプル「マルチ・カウントダウンタイマー.fmp12」 → https://1drv.ms/u/s!AlaCGhTKTWEOp3y8aoL … 0?e=pZRDM0

Last edited by Hiro (2020-05-12 21:53:03)

Offline

#4 2019-11-14 17:40:25

和三盆
Guest

Re: 残り時間を各レコードに持たせリアルタイムで減らす

チポさん Hiroさんありがとうございます。

Hiroさんのものが自分にとって革命的なもので正にコレというものでした!
しかし、繰り返しフィールドではなく、リスト形式でレコードを並べて1レコードごとにフィールドを配置し、残り時間を表示したいです。
また、可能であれば残り時間が0になっても数値が消えるのではなく、過ぎた時間を -0:00:10 などで増やしていきたいです。
1日弄ってみましたが、解決に至らなかったので、図々しいかと思いますが、ご教授いただければ幸いです。
よろしくお願いします。

#5 2019-11-14 22:22:26

Hiro
Member

Re: 残り時間を各レコードに持たせリアルタイムで減らす

>#4和三盆 wrote:
  1. Hiroさんのものが自分にとって革命的なもので正にコレというものでした!

  2. しかし、繰り返しフィールドではなく、リスト形式でレコードを並べて1レコードごとにフィールドを配置し、残り時間を表示したいです。

  3. また、可能であれば残り時間が0になっても数値が消えるのではなく、過ぎた時間を -0:00:10 などで増やしていきたいです。

  1. >『Hiroさんのものが自分にとって革命的なもので正にコレというものでした!』
    革命的とかでなく、質問の要求を満たす最適(負荷軽減)化手法の実装案と云う事です。
    その最適化の条件は、

    • 同時に起動するタイマーの表示数は、必要最低限の全12部屋分だけとする。

    • また、全12部屋分の枠中でも、現時点で貸出中のレコードだけに限定して、実質表示数をさらに最小化。
      本作例では、「現時点で貸出中のレコードだけ抽出」に簡便なExecuteSQL式を利用してます。

    • カウントダウンの再計算はレコード単位で順次動作させるため今回の複数同時起動タイマーには不適。
      作例は、レコードに帰属しないグローバル[繰り返し]フィールドに全12タイマーを単独一括設置することで、負荷の最小化を図っています。
      さらに、レコードに帰属しないグローバルフィールドはヘッダに設置すると、リスト形式の表示レコードのどこから見ても不変統一です。

       

  2. >『繰り返しフィールドではなく、リスト形式でレコードを並べて1レコードごとにフィールドを配置し、残り時間を表示したいです。』
    上記No1で説明した通り、これは最悪の要求です。全レコード一律対象に1秒ごと更新再計算と更新再表示を一括同時処理したい?ですよ。
       

  3. >『可能であれば残り時間が0になっても数値が消えるのではなく、過ぎた時間を -0:00:10 などで増やしていきたいです。』
    最適化のため、部屋あたりの監視タイマー表示は、現時点で貸出中のただ1件だけです。
    終了したゼロ・タイマーは速やかに退場し、次の貸し出しタイマーに明け渡す必要があります。
    このため負数時間の計算をしても表示枠が存在せず、表示できません。
    なお、残り10分を切ると赤太字化する条件付き書式を設定してあります。

Offline

#6 2019-11-15 00:43:26

和三盆
Guest

Re: 残り時間を各レコードに持たせリアルタイムで減らす

Hiroさん
ご丁寧にありがとうございます。実をいうとご説明いただいたことの半分ほどしか理解が出来ていませんが
まずはいただいたデータの計算式の理解を深める事にします。
そこから応用として自分のシステムに最適化して組み込んでみます。
また解らなくなったら図々しくも質問させていただくかも知れませんが、またお答えいただけたら幸いです。
現状のものでも私にとっては十分に有用なものでしたので、応用して使わせていただきます!
ありがとうございました!

#7 2019-11-15 06:49:54

himaganee
Guest

Re: 残り時間を各レコードに持たせリアルタイムで減らす

最初のチポさんの発言にあるように、1秒でなく1分のタイマーでいいのでは。
1分なら12レコード分再計算でも問題ないでしょう。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 519.66 KiB (Peak: 528.59 KiB) ]