みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
FMpro20 win10 cloud server
サーバーで実行するスクリプトで置換するスクリプトを作りたいのですが
クライアントが現在表示している絞り込み状態をサーバーに引き継ぐにはどうしたら良いでしょうか。
絞り込み状態というのは
1レコード1台の車両情報を入力しています。
こちらを顧客よりオーダーシートが来て従業員が入力していきます。
10台あれば1オーダー10レコードです。
15台あれば1オーダー15レコードです。
このオーダー単位のレコードが目指す絞り込み状態です。
オーダーはfaxでくるのでファイル転送されたファイル名を
それぞれのレコードにフィールド:元データファイル名として同一内容を入力しています。
なので1オーダーの10レコードのみを表示したい時は
このファイル名を検索すると10レコードに辿り着きます。
こういった材料はあるのですがこの元データファイル名をどうやってサーバー側に渡すのかがわかりません。
グローバル変数に元データファイル名を先に設定してから
「サーバー上でスクリプトを実行」ですか?
これが正解の場合ですが仮に2~3人の従業員が
ほぼ同時にサーバー上でスクリプトを実行ボタンを押したらどうなりますか?
グローバル変数の取り合い?になるのかなと安易な想像をしております。
アドバイス頂けますと幸いです。
よろしくお願いします。
Offline
変数は不要でスクリプト引数で渡せます。
同時にボタンを押してもサーバ上では順次に実行されますから、その点は問題ないと思いますが
「フィールド内容の全置換」だと、どれかのレコードが編集中でロックされてるとそのレコードはスキップされてしまいます。
himedanee様
ありがとうございます。
引数というのはどのようなステップを踏めば良いですか?
サーバー上でスクリプトを実行のオプションに元データファイル名というフィールドを設定すればいいのでしょうか。
もしくはそのボタンを配置したボタンのオプションに設定するのでしょうか。
引数の理解が乏しくて申し訳ありません。
レコードをスキップは困りますね!
それはコールバック仕様でダイアログで何件スキップしたか件数だけでも返せますかね?
Offline
FileMaker Cloud バージョン
2.19.6.400
↑
コールバックを使用する方がエラーで実行されないんですが
どうやらこのバージョンはまだ対応してないんですかね?
20.1.1以上のserverが必要みたいなエラーがでます。
普通のサーバー上のスクリプトを実行は動きました。
Offline
もう少し、動きを整理していただけませんか。
ファックスでデータを受信して、入力する、10台のオーダーがあれば10レコード作成され、そのレコードが対象レコードになっている、ということですね。
その状態をサーバーに送り込んで何をするのですか。
その10レコードが対象レコードになっている状態を保存するには、スナップショットを保存 が適切ですが、この情報はサーバー側で開くことができません。
Offline
Shin様
すみません混同してしまい違った話をしてました。
正確にはメールで来た添付ファイルのエクセルをインポートして受注業務を行っております。
車輌情報の他に引取場所と納車場所がある輸送会社のシステムなのです。
受注マスタ
会場マスタ
エクセル会場パターンマスタ
という3テーブルです
すごくざっくりオーダー内容を記載すると
車名 車体番号 種別 引取 納車
FIT GD3-123456 普通車 USS大阪 神戸港
TANTO LA300S-123456 普通車 USS名古屋 名古屋港
こういった情報がエクセルでくるので内容を1レコード1台で作っていきます。
左から3つの情報はインポートできますが
引取・納車はコードで会場マスタとリレーションしてますのでお客さんはそのコード知らないですしお客さんによってエクセルの表現が異なります。
神戸ポート
KOBE PORT
神戸岸壁
などなど・・・
神戸港は現システムの会場マスタでは
235番 神戸港
と作っています
受注マスタは会場コードのみ入力して会場マスタから会場名は計算値自動入力をしています。
この表現が違うエクセルをどうやって簡単に取り込もうかと考えた時に
エクセル会場パターンマスタというテーブルを作りました。
受注マスタには会場コードや会場名とは別に会場エクセル名というフィールドを作り
ひとまずそこにエクセルでの表記をインポートします。
受注マスタ::会場エクセル名---------エクセル会場パターンマスタ::会場エクセル名
でリレーションをして
インポート後にエクセル会場パターンマスタから正規の会場コードを呼び出して正しい会場名を作成してます。
この全置換を引取と納車で2回する動きを1つのスクリプトに動作させています。
↑
ここがクライアント動作ではもっさりするのでサーバー上でしたいというのが今回の質問です。
Offline
全置換しないで、インポートしたデータとルックアップしたデータを両方持っておけばいいのでは。
エクセル会場パターンマスタは随時更新が必要になるるんでしょうから、ルックアップできなかったデータだけパターンマスタに追加した時点でそのレコードだけ再ルックアップすれば、一度に1件参照するだけ(その関連レコードのデータはすでにローカルにあるし)なのでもっさりしないのでは。
会場マスタかその関連テーブルとしてに
code 場所名 場所名2
235 神戸港 神戸ポート
235 神戸港 KOBE PORT
235 神戸港 神戸岸壁
というマスターを作って、それを参照させればいいでしょう。codeは随時必要でしょうから、ルックアップさせるとのちの処理が早くなります
Offline
himadanee様 Shin様
ありがとうございます。
類似しているお話かと思いますので
スレッドをまとめさせていただきます。
確かにインポートした時点で受注マスタと会場マスタはリレーションされているし
エクセル会場パターンマスタもリレーションされているからルックアップは可能ですね。
私が作るシステムは計算値自動入力を多用しておりましてルックアップはあまり使っておらず。
あまり違いがわからずに計算値自動入力ばかり設定しているのですが
ルックアップと計算値自動入力の違いってどういう用途で使い分けるのですか?
すみません初歩に戻る質問をして・・・
Offline
ルックアップはあくまでリレーションを使った参照だけなので、計算値自動入力とは比較できません。
ルックアップは、自動入力でリレーション先の関連レコードを参照するのと同じ動作になるのですが、再ルックアップという処理で、まとめて更新できます。
自動入力は、上書きが許可されていれば、参照しているフィールドの変更で値が更新されます。
Offline
ありがとうございます。
思った通りの動きはしたんですが
インポートに時間がかかるのでインポートだけして
ルックアップはサーバーからしてもあまり速さは変わりませんか?
Offline
ファイル全体の構成がわからないのですが、通常ルックアップですごく遅くなる事はありません。マスター側で索引が作られていないのかもしれません。
Offline
100件取り込むのに7秒くらいでした。
そのくらいですか?
索引設定は最小限の設定、コードの数字フィールドは必要時に索引設定をするにチェックを入れてます。
Offline
マスター側は、全て索引を作っておきましょう。
Offline
Shinさま
索引は「全て」で索引した方がいいですか?
FM14からFM2023に変わるので今一生懸命1から作り直しをしてるのですが
FM14が8年くらい前にわけもわからず作ったので全テーブル全索引が全てになってまして。
新しいFM2023ではヘルプを見る限り最小限でもいいのかなと思って最小限に設定してみて作ってるところなんですが・・・
Offline
マスターテーブルでは、特にリレーションキーとなるフィールドは全て索引を作っておくことをお勧めします。
Offline
最小限とすべては、単語索引のあるなしの違いですね。
検索しないフィールドなら最小限でもいいはずですけど、そこをうっかり検索すると待たされたりするでしょう。
索引で改善の兆しがありましたので索引をすべてにしていこうと思います。
ありがとうございました!!
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 604.78 KiB (Peak: 621.32 KiB) ]