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

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

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

You are not logged in.

Announcement

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


#1 2020-09-07 03:21:47

Iam
Guest

ポータルを使った一括注文方法

質問お願いします。Filemaker18使用です。

注文用のシステムを作っているのですが、メニューのボタンを押すと一時データとして別テーブルの注文ポータル(注文テーブル)に行を作って
注文確定のボタンを押すとその注文ポータルのデータを別の明細ポータル(明細テーブル)へデータを作る(Loopで)というものを作成したいです。

※全てユニーク値のIDでリレーションしています。
現在考えている方法が明細ポータルにデータを移し替えたら注文ポータルの中身を全て削除しようと思っています。
しかし、サイト内を調べてみるとテーブル削除するような作りにするのは良くないということで、この方法はちょっと不安になっています。

一時データを作らずにメニューボタンを押したら実際データを移し替える明細ポータルに行を作るというのも考えましたが
これだとポータルには全ての明細(注文したメニュー)が出てきてしまいますし、注文確定していないものまで明細に乗ってしまうという
ことがあるため、難しいです。

何かレコードを削除しないようないい方法はあるでしょうか?
また、レコードを削除してはいけない理由は何になるでしょうか?ファイルを傷つけやすいとかでしょうか?
教えてください。宜しくお願いします。

#2 2020-09-07 08:43:17

Shin
Member

Re: ポータルを使った一括注文方法

一時データを作り、本番テーブルへデータを移すのは、効率よくないですし、一時データを消去するという好ましくない動きが入りますのでオススメしません。
明細テーブルの中で、フラグを使ってデータを切り分ければいかがですか。メニューからの選択では、明細テーブルにデータを作る、確定で確定フラグを立てる、という動きがいいのでは。ポータルにフィルターをかければ、表示のコントロールも簡単です。レコード作成時刻または確定時刻を記録していくと、追加オーダーとの区別も、完全ではないですが可能です。

ファイル内のデータが消去される(使われなくなる)と、その部分に空白部分ができます。何回も繰り返されると、あちらこちらに空白ができてきます。次にデータが保存されるときに、その空白部分を使うことがあるのですが、空白部分が十分な大きさがあればいいのですが、大抵はそうではないので、あちらこちらに分散して保存されてしまうことになります。フラグメントができたとか、フラグメンテーションと呼びます。(ディスク内でのフラグメントの説明がわかりやすいかも。ディスクの中の説明ですが、同じことがファイルの中でも起こります)
このデータの読み書きのときに時間がかかるようになってきます。これは、HDD のヘッドの物理的な移動時間によるもので、フラグメントの数に比例して読み込みの速度が落ちてきます。SSD でしたら物理的な動きがなく、アクセスアドレスのセットだけですので、大きな問題にならないでしょうが、管理テーブルもフラグメンテーションを起こしているはずですので、アクセスはごく僅か遅くなるはずです、
これを解消するのが、最小化保存です。大きなファイルでしたら、時々行っておいたほうがいいでしょうね。びっくりするほどアクセスが早くなることがあります。

Last edited by Shin (2020-09-07 18:32:29)

Offline

#3 2020-09-07 19:48:23

Iam
Guest

Re: ポータルを使った一括注文方法

なるほど、逆に最小化保存が定期的に出来てれば削除の方法でも有りなのかも知れませんね。
フラグで何とか行けそうです。
使い勝手など見ながらどちらの方法にするか決めたいと思います。
Shinさんありがとうございました。

#4 2020-09-08 01:22:50

Shin
Member

Re: ポータルを使った一括注文方法

そもそも、最小化保存はローカルでしか実行できません。ですから、FMS での運用でしたら、ファイルを転送するか、サーバー機での作業になります。サーバーならば、ファイルを閉じて、保存作業後、アクセス権を確認して、ファイルを開く、という面倒な作業です。
しかも、ファイルが巨大になると、最小化保存も時間がかかるようになります。前の職場では、数百万レコード1G超えのファイルで最大1時間以上かかっていましたので、。わざわざ夜中に作業していましたよ。
それでもそれを選びますか

Last edited by Shin (2020-09-08 13:31:57)

Offline

#5 2020-09-08 14:33:51

Iam
Guest

Re: ポータルを使った一括注文方法

そういわれるとファイル容量が大きくなっても削除しない方法が良さそうですね。
その方向でいきたいと思います。ありがとうございました。

#6 2020-09-08 16:24:30

Shin
Member

Re: ポータルを使った一括注文方法

入力レイアウトに全フィールドを表示させたい
のサンプルが参考になると思います。そちらは、
  メニュー一覧表を表示して数量を設定してオーダーする方式と、
  メニューをポータルに表示しておき、そのクリックで発注ポータルへ追加、確定で確定リストに移す方式
が実装してあります。ポータルは、同じテーブルを表示していますが、フィルターを使って表示範囲をコントロールしているので、狙った動きです。

Last edited by Shin (2020-09-09 04:36:30)

Offline

#7 2020-09-09 12:42:53

Iam
Guest

Re: ポータルを使った一括注文方法

Shinさんありがとうございます。
これは面白いですね。是非参考にさせていただきます!

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 10 queries executed - Memory usage: 518.16 KiB (Peak: 523.07 KiB) ]