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

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

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

You are not logged in.

Announcement

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


#1 2022-05-27 16:01:05

nori
Member

リスト形式 リレーション項目の表示によるスクロール速度低下について

FileMakerServer17(WindowsServer2019)
FileMakerPro15~17の混在(Windows10)
ローカル環境が8割、外からのSSL接続が2割
テーブルA:受注案件データ
テーブルB:所在地ログ[現在は1,000レコードくらいですが商品が移動する度に増え続ける]
テーブルAーテーブルBはシリアルNo(数値、索引設定済)でリレーション[作成時タイムスタンプの降順でソート]

テーブルAのリスト形式の表示[全体約60,000レコードから必要な約4,000レコードを該当レイアウトを開く時にスクリプトで検索済み]に、テーブルBの所在地フィールド[テキスト]を表示させるとテーブルAのスクロールがかなり遅くなるかと思います。
テーブルAにも所在地フィールド[テキストを]作っておいて、テーブルBの所在地ログの新規レコード作成時に、リレーション先のテーブルAの所在地フィールドに同じ書き込みをする事も検討しましたが、同タイミングでテーブルAを誰か他の人が編集中の可能性もあり躊躇しています。
もし何かいい方法があればご教示頂きたいです

Offline

#2 2022-05-27 17:30:28

Shin
Member

Re: リスト形式 リレーション項目の表示によるスクロール速度低下について

まずは、ファイルの最適化をしてみられては如何でしょうか。場合によっては、劇的に早くなります。
それで効果が無ければ、テーブルBの最新データのみを取り出したテーブルを作り、テーブルAからリレーションしてみるといいかもしれません。テーブルB に更新レコードが作成されれば、更新データをそのテーブルに吸い取らせます。

Offline

#3 2022-05-29 06:54:56

mic
Member

Re: リスト形式 リレーション項目の表示によるスクロール速度低下について

テーブルAにBの最新レコードのIDを持たせ、それと連結したテーブルB’を一覧で表示してみてはどうでしょう。


■追加フィールド
テーブルA::最新所在地ID 計算タイプ(もしくは自動入力の計算値) if(テーブルA::更新日時;テーブルB::ID;Self)
 
  ※テーブルAの更新タイムスタンプを「更新日時」、テーブルBの主キーを「ID」と仮定

■リレーション
  テーブルA::最新所在地ID = テーブルB’::ID


これで一覧にテーブルBではなくテーブルB’のフィールドを設置します。
Aからみて1対1になるので早いと思います。

ただ更新タイムスタンプがトリガなので、ロックしただけで更新しなかったりレコード復帰された場合は更新されない可能性があります。
スケジュールやなにがしかのタイミングで テーブルA::最新所在地ID <> テーブルB’::ID のレコードを訂正する処理が必要です。

私が対応した案件では格段に一覧表示が早くなったのと、常時リアルタイムで最新を確認するわけではなかったため、この問題は訂正処理で許容出来ました。
許容出来ない場合はShinさんの案の方がいいですね。
レイアウトテーブルからみて連結先が1なのか多なのかが重要です。

Offline

#4 2022-05-29 20:07:41

Shin
Member

Re: リスト形式 リレーション項目の表示によるスクロール速度低下について

> テーブルAにBの最新レコードのIDを持たせ、それと連結したテーブルB’を一覧で表示してみてはどうでしょう。
これいいですね。
所在側のテーブルでは、データの追加は、その最新レコードを複製して、複製元のデータを書き換えます。直前の最新レコードは、レコードIDを上書きさせます。
ただし、この動きでは、そのデータが設定された日、というものが不明瞭になりますが。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 7 queries executed - Memory usage: 508.18 KiB (Peak: 514.91 KiB) ]