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

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

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

You are not logged in.

Announcement

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


#1 2023-06-28 14:54:27

mirai
Member

サーバー上でスクリプトを実行する際に渡せるデータ

お世話になっております。
FMpro20 win10  cloud server

サーバーで実行するスクリプトで置換するスクリプトを作りたいのですが
クライアントが現在表示している絞り込み状態をサーバーに引き継ぐにはどうしたら良いでしょうか。

絞り込み状態というのは
1レコード1台の車両情報を入力しています。
こちらを顧客よりオーダーシートが来て従業員が入力していきます。
10台あれば1オーダー10レコードです。
15台あれば1オーダー15レコードです。
このオーダー単位のレコードが目指す絞り込み状態です。
オーダーはfaxでくるのでファイル転送されたファイル名を
それぞれのレコードにフィールド:元データファイル名として同一内容を入力しています。

なので1オーダーの10レコードのみを表示したい時は
このファイル名を検索すると10レコードに辿り着きます。

こういった材料はあるのですがこの元データファイル名をどうやってサーバー側に渡すのかがわかりません。

グローバル変数に元データファイル名を先に設定してから
「サーバー上でスクリプトを実行」ですか?

これが正解の場合ですが仮に2~3人の従業員が
ほぼ同時にサーバー上でスクリプトを実行ボタンを押したらどうなりますか?
グローバル変数の取り合い?になるのかなと安易な想像をしております。

アドバイス頂けますと幸いです。
よろしくお願いします。

Offline

#2 2023-06-28 15:35:34

himadanee
Guest

Re: サーバー上でスクリプトを実行する際に渡せるデータ

変数は不要でスクリプト引数で渡せます。

同時にボタンを押してもサーバ上では順次に実行されますから、その点は問題ないと思いますが
「フィールド内容の全置換」だと、どれかのレコードが編集中でロックされてるとそのレコードはスキップされてしまいます。

#3 2023-06-28 16:00:16

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

himedanee様
ありがとうございます。

引数というのはどのようなステップを踏めば良いですか?
サーバー上でスクリプトを実行のオプションに元データファイル名というフィールドを設定すればいいのでしょうか。
もしくはそのボタンを配置したボタンのオプションに設定するのでしょうか。
引数の理解が乏しくて申し訳ありません。

レコードをスキップは困りますね!
それはコールバック仕様でダイアログで何件スキップしたか件数だけでも返せますかね?

Offline

#4 2023-06-28 16:56:11

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

FileMaker Cloud バージョン
2.19.6.400


コールバックを使用する方がエラーで実行されないんですが
どうやらこのバージョンはまだ対応してないんですかね?
20.1.1以上のserverが必要みたいなエラーがでます。

普通のサーバー上のスクリプトを実行は動きました。

Offline

#5 2023-06-28 18:20:06

Shin
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

もう少し、動きを整理していただけませんか。
ファックスでデータを受信して、入力する、10台のオーダーがあれば10レコード作成され、そのレコードが対象レコードになっている、ということですね。
その状態をサーバーに送り込んで何をするのですか。

その10レコードが対象レコードになっている状態を保存するには、スナップショットを保存 が適切ですが、この情報はサーバー側で開くことができません。

Offline

#6 2023-06-28 18:45:14

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

Shin様
すみません混同してしまい違った話をしてました。
正確にはメールで来た添付ファイルのエクセルをインポートして受注業務を行っております。

車輌情報の他に引取場所と納車場所がある輸送会社のシステムなのです。
受注マスタ
会場マスタ
エクセル会場パターンマスタ
という3テーブルです

すごくざっくりオーダー内容を記載すると
車名 車体番号            種別   引取       納車 
FIT GD3-123456    普通車  USS大阪     神戸港
TANTO  LA300S-123456  普通車 USS名古屋    名古屋港

こういった情報がエクセルでくるので内容を1レコード1台で作っていきます。
左から3つの情報はインポートできますが
引取・納車はコードで会場マスタとリレーションしてますのでお客さんはそのコード知らないですしお客さんによってエクセルの表現が異なります。
神戸ポート
KOBE PORT
神戸岸壁
などなど・・・
神戸港は現システムの会場マスタでは
235番 神戸港
と作っています
受注マスタは会場コードのみ入力して会場マスタから会場名は計算値自動入力をしています。

この表現が違うエクセルをどうやって簡単に取り込もうかと考えた時に
エクセル会場パターンマスタというテーブルを作りました。
受注マスタには会場コードや会場名とは別に会場エクセル名というフィールドを作り
ひとまずそこにエクセルでの表記をインポートします。

受注マスタ::会場エクセル名---------エクセル会場パターンマスタ::会場エクセル名

でリレーションをして
インポート後にエクセル会場パターンマスタから正規の会場コードを呼び出して正しい会場名を作成してます。

この全置換を引取と納車で2回する動きを1つのスクリプトに動作させています。

ここがクライアント動作ではもっさりするのでサーバー上でしたいというのが今回の質問です。

Offline

#7 2023-06-29 10:06:10

himadanee
Guest

Re: サーバー上でスクリプトを実行する際に渡せるデータ

全置換しないで、インポートしたデータとルックアップしたデータを両方持っておけばいいのでは。
エクセル会場パターンマスタは随時更新が必要になるるんでしょうから、ルックアップできなかったデータだけパターンマスタに追加した時点でそのレコードだけ再ルックアップすれば、一度に1件参照するだけ(その関連レコードのデータはすでにローカルにあるし)なのでもっさりしないのでは。

#8 2023-06-29 10:20:15

Shin
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

会場マスタかその関連テーブルとしてに
   code    場所名   場所名2
      235    神戸港    神戸ポート
      235    神戸港    KOBE PORT
      235    神戸港    神戸岸壁
というマスターを作って、それを参照させればいいでしょう。codeは随時必要でしょうから、ルックアップさせるとのちの処理が早くなります

Offline

#9 2023-06-29 12:56:32

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

himadanee様 Shin様
ありがとうございます。
類似しているお話かと思いますので
スレッドをまとめさせていただきます。

確かにインポートした時点で受注マスタと会場マスタはリレーションされているし
エクセル会場パターンマスタもリレーションされているからルックアップは可能ですね。

私が作るシステムは計算値自動入力を多用しておりましてルックアップはあまり使っておらず。
あまり違いがわからずに計算値自動入力ばかり設定しているのですが
ルックアップと計算値自動入力の違いってどういう用途で使い分けるのですか?

すみません初歩に戻る質問をして・・・

Offline

#10 2023-06-29 19:10:49

himadanee
Guest

Re: サーバー上でスクリプトを実行する際に渡せるデータ

ルックアップはあくまでリレーションを使った参照だけなので、計算値自動入力とは比較できません。

#11 2023-06-29 21:49:27

Shin
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

ルックアップは、自動入力でリレーション先の関連レコードを参照するのと同じ動作になるのですが、再ルックアップという処理で、まとめて更新できます。
自動入力は、上書きが許可されていれば、参照しているフィールドの変更で値が更新されます。

Offline

#12 2023-06-29 23:07:26

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

ありがとうございます。

思った通りの動きはしたんですが
インポートに時間がかかるのでインポートだけして
ルックアップはサーバーからしてもあまり速さは変わりませんか?

Offline

#13 2023-06-29 23:52:22

Shin
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

ファイル全体の構成がわからないのですが、通常ルックアップですごく遅くなる事はありません。マスター側で索引が作られていないのかもしれません。

Offline

#14 2023-06-30 01:12:41

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

100件取り込むのに7秒くらいでした。
そのくらいですか?
索引設定は最小限の設定、コードの数字フィールドは必要時に索引設定をするにチェックを入れてます。

Offline

#15 2023-06-30 02:21:28

Shin
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

マスター側は、全て索引を作っておきましょう。

Offline

#16 2023-06-30 12:52:13

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

Shinさま

索引は「全て」で索引した方がいいですか?
FM14からFM2023に変わるので今一生懸命1から作り直しをしてるのですが
FM14が8年くらい前にわけもわからず作ったので全テーブル全索引が全てになってまして。
新しいFM2023ではヘルプを見る限り最小限でもいいのかなと思って最小限に設定してみて作ってるところなんですが・・・

Offline

#17 2023-06-30 13:25:56

Shin
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

マスターテーブルでは、特にリレーションキーとなるフィールドは全て索引を作っておくことをお勧めします。

Offline

#18 2023-06-30 13:57:16

himadanee
Guest

Re: サーバー上でスクリプトを実行する際に渡せるデータ

最小限とすべては、単語索引のあるなしの違いですね。
検索しないフィールドなら最小限でもいいはずですけど、そこをうっかり検索すると待たされたりするでしょう。

#19 2023-06-30 17:20:55

mirai
Member

Re: サーバー上でスクリプトを実行する際に渡せるデータ

索引で改善の兆しがありましたので索引をすべてにしていこうと思います。
ありがとうございました!!

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 604.65 KiB (Peak: 621.19 KiB) ]