みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
https://xgf.nu/9W1k
こちらでも確認んできますでしょうか。
お世話になります。
作成中のファイルで、ご教示頂きたいことがございます。
医療機器をバーコード管理するために作成しているファイルになります。
返却ボタンを押すことでスクリプト動作するようにしていますが、「スクリプトが見つかりません、削除された可能性があります」と表示されてしまいます。
スクリプトを見直しても間違っているような気はしないのですが。。解決できません。
ファイルを添付いたしますので、どなたかお力を貸していただけないでしょうか?
よろしくおねがいします。
https://firestorage.jp/download/1cf99da … e5bd3fa98b
filemaker pro18 advanceを使用しています。
ゆめさんすみません。
新規で質問しようとおもったのですが、間違えて返信になってしまいました。
失礼しました。
送り側のスタートスクリプトが、
# コード入力用 in file 送り側
ウインドウの固定
レイアウト切り替え [ 「データ」 (データ) ; アニメーション: なし ]
新規レコード/検索条件
デバイスから挿入 [ データ::コード ; タイプ: バーコード ; カメラ: バック; 解像度: 最大 ]
変数を設定 [ $コード ; 値: データ::コード ]
レイアウト切り替え [ 元のレイアウト ; アニメーション: なし ]
新規ウインドウ [ スタイル: カード ; 名前: "カードウインドウ用" ; 使用するレイアウト: 「カードウインドウ用」 (データ) ]
レコード/検索条件/ページへ移動 [ 最後の ]
ウインドウ内容の再表示 [] カードウインドウのボタンのスクリプトが
# はい in file 送り側
ウインドウを閉じる [ 名前: "カードウインドウ用" ; 現在のファイル ]
変数を設定 [ $コード ; 値: データ::コード ]
カスタムダイアログを表示 [ "確認" ; Get ( スクリプト引数 ) ]
ファイルを開く [ 非表示の状態で開く: オフ ; 「受け側」 ]
スクリプト実行 [ 指定: 一覧から ; 「外部ファイル受け用」 , ファイル: 「受け側」 ; 引数: $コード ]コード入力のスクリプトで、ローカル変数にコードを設定するのは無駄です。
はい、のスクリプトで、変数を設定 [ $コード ; 値: データ::コード ] 」のステップを実行するときに、そのレイアウト(ホーム)の関連づけられているテーブルはホームですので、このステップは無意味です。(多分、これが最大のミス)
レイアウトの「コード設定」ボタンの設定もよくわかりません。
データの流れを、もう一度根本から考え直した方がいいでしょう。
特に、はい、いいえ を、わざわざカードレイアウトで表示させる必要がありますか。カスタムダイアログで十分なのでは。
例えば、
レイアウト切り替え [ 「データ」 (データ) ; アニメーション: なし ]
新規レコード/検索条件
デバイスから挿入 [ データ::コード ; タイプ: バーコード ; カメラ: バック; 解像度: 最大 ]
カスタムダイアログを表示 [ "確認" ; データ::コード ]
If ( Get ( 最終メッセージ選択 ) = 1 )
スクリプト実行 [ 指定: 一覧から ; 「外部ファイル受け用」 , ファイル: 「受け側」 ; 引数: データ::コード ]
End If
レイアウト切り替え [ 元のレイアウト ; アニメーション: なし ]でいいのでは。
Last edited by Shin (2022-11-23 14:41:44)
Offline
Shinさん確認いただき、ありがとうございます。
そうだったんですね。カードウインドウ用のレイアウトがテーブル(データ)にしていたので問題ないかと思っていました。
レイアウトの「コード設定」ボタンの設定もよくわかりません。→ホームにあるコード入力ボタンのことでしょうか?
ホームにあるコード入力のボタンは本来2つ配置しており1つは入力用:入庫(コードを読み込んで)、もう一方は納品となります。カスタムダイアログを表示でどちらのボタンを押したかを表示で出すためにボタンのオプションのスクリプト引数に入庫と出庫としていました。カードウインドウ用にしていたのは、そのスクリプト引数を表示で出して(商品コード、商品名、入庫なのか出庫)なのかを出したかったためでした。
ほかにどういった方法があるかわからなかったのでいろいろトピックを見ながら参考にしました。
ボタンのスクリプト引数を出すにはカスタムダイアログ表示でできますでしょうか?
ファイル確認しました。
これは FileMaker Go ではどのように試していますか?
# コード入力用 in file 送り側
ウインドウの固定
レイアウト切り替え [ 「データ」 (データ) ; アニメーション: なし ]
新規レコード/検索条件
デバイスから挿入 [ データ::コード ; タイプ: バーコード ; カメラ: バック; 解像度: 最大 ]
変数を設定 [ $コード ; 値: データ::コード ]
レイアウト切り替え [ 元のレイアウト ; アニメーション: なし ]この部分があるのでバーコードからスキャンしないときはコードは空になります。
新規ウインドウ [ スタイル: カード ; 名前: "カードウインドウ用" ; 使用するレイアウト: 「カードウインドウ用」 (データ) ]
レコード/検索条件/ページへ移動 [ 最後の ]
ウインドウ内容の再表示 [] 新規ウインドウでは上で作成したレコードが表示されているので移動する必要がありません。
# はい in file 送り側
ウインドウを閉じる [ 名前: "カードウインドウ用" ; 現在のファイル ]
変数を設定 [ $コード ; 値: データ::コード ]
カスタムダイアログを表示 [ "確認" ; Get ( スクリプト引数 ) ]
ファイルを開く [ 非表示の状態で開く: オフ ; 「受け側」 ]
スクリプト実行 [ 指定: 一覧から ; 「外部ファイル受け用」 , ファイル: 「受け側」 ; 引数: $コード ]まず[ウインドウを閉じる]がこの位置にあると失敗する可能性が高いです。
ウインドウが閉じてしまうとスクリプトを実行したときのレコードの値は渡されません。
ウインドウが閉じたときに残っていた別のウインドウのレコードの値が渡されてしまいます。
また「コード入力」ボタンを使うとバーコードから読み取らない限りコードは空になります。
まずは「カードウインドウ用」レイアウトに「コード」フィールドを配置しては如何でしょう?
この状態で[ウインドウを閉じる]を取り除き(または一時的に無効にして)
FileMaker Pro でも FileMaker Go でも「コード」の値が入ったレコードで実行すればうまく動くと思います。
なお、カスタムダイアログはこのスクリプトには引数を渡していないので意味がありません。
Shinさんも書いていますが運用を見直したほうが良いでしょう。
もう少しカスタムAppの目的など詳細に書かれるとアドバイスが貰えるかも知れません。
Last edited by Moz (2022-11-23 15:27:15)
Offline
入庫の処理を行いながら、出庫処理を途中に挟む事はありますか。
一つ一つの処理ごとに選択させるのは、間違いを生むもとになります。
最初にd、どちらの処理をするのかを選択させて、同じ処理を続けさせる、という運用にする方がいいです。
FMGo のようなハンディターミナルで処理を行う時には、うごかすアプリも別にしてしまう、という方法をとるところもありますよ。(FM では、ごく簡単です)
Last edited by Shin (2022-11-23 15:26:43)
Offline
Mozさん、確認ありがとうございます。
Shinさんからのご指摘と、合わせてようやく意味がわかりました。
商品管理のため、FMGoで入荷した商品の入庫数を登録して在庫確認をできるように考えていました。
ただ、入荷する場所はすべて同じ場所ではないためiPhoneで各場所の担当者がバーコードを読み込み数量を登録してもらう。
Pro(PC)で商品名などの情報を入力し、場所ごとの在庫数などの確認
また、出荷の際はまたバーコードを読み込み数量を入れる
そのため、ホームにはボタンは入庫、出庫(納品)を配置していました。
カードウインドウについては、先ほども書いてましたがバーコードを読み込んだ後に(商品コード、商品、入庫を押したか出庫を押したか)わかるようにしたかったです。
ひとまず、Shinさんの書いてくださったスクリプトだとiPhoneでコードを読み込み受け側に商品コード入力できていることを確認できました。
できれば、商品コード、商品、入庫を押したか出庫を押したかがわかるようにしたいですがむりでしょうか?
入庫処理を行うタイミングと出庫処理のタイミングは時間が決まっているため、間に挟むことはないです。
簡単にいえば、日によってですが午前中は「入庫」午後は「出庫」みたいになります。逆の場合もありますが・・・
ただ、入庫の時間ではあるものの時間が空く場合や、時間がかかってしまい入庫が午後を超えてしまうなどはあります。
例えば、入庫用と出庫用のファイルを別で作成するとかでしょうか?(担当者の方にはできれば1つのファイルを開くとできるといいと話があったため)
確かに運用的には見直すのが効率的にも間違いもなくできると思っています。
やりたいことはいいのですが、まずはShinさんの書いて下さったスクリプトが何をやっているか理解されましたか?
(なぜうまく行くのかなど)
ファイル・テーブルの構成についてはなぜ分かれているのでしょう?
入出庫管理をするならテーブルは1つで良いですし、ファイルを分ける必要はないのでは?
例えば 商品コード・商品名・入出庫区分・数量 のような「入出庫」テーブルを作っておき、
Shinさんのスクリプトに引数で「入庫」「出庫」を渡します。
スクリプトの中で商品コードは読み込める(バーコード読んでるし)ので、追加のカスタムダイアログで「数量」を入力できるようにします。
引数で渡した値を「入出庫区分」に入れれば、入出庫の管理はできますね。商品名は商品マスタからルックアップでもすればいいです。
最初からややこしくせずにシンプルに作り、
色々できるようになってから機能追加やデータモデリングなどに取り組めばいいと思いますよ。
最初からハードルを上げすぎているように思います。
Offline
スクリプトは理解できました。というのも、一番初めに作成したときは、カスタムダイアログを表示でできていたからです。
それをスクリプト引数の値を表示させたいとかいろいろしたためなんだかよくわからなくなってました。
伝え方が悪く大変すみませんでした。
送り側(商品管理)ですが、受け側は商品のデータを管理しているファイルではなく、全く異なる用途で使います。ただ、商品については同じものが入っているため、引き続きの処理を別ファイルに商品コードを渡して処理を進めていけたらと考えたことでした。
Mozさんのいうようにハードルを上げすぎていました。
追記です。
受け側のファイルですが、別のファイルにした理由が今後不要になる可能性があったためでした。
指定商品の場合のみ商品を項目ごとにチェックしてその記録を保存する必要がありました。コロナが落ち着いたらなくなる可能性があり、元の商品管理ファイルと一緒にすると切り離す際にまたわからなくなるかと考えてのことでした。
確かにややこしく考えずにもっとシンプルに考えればいいのかもしれないです。
もう一度、勉強して考え直してみます。
いろいろありがとうございました。
本来の運用している入出庫テーブルは、同じテーブルにあるのですか。それか、そのデータテーブルが入出庫テーブルですか。
そうならば、カスタムダイアログの中で数量を入力することにしてしまえば、動きが自然になり、手間が減ります。しかも、上で示したスクリプトそのまま(カスタムダイアログの所は少し変更が要りますが)
必要でしたら、そのデータを使って別テーブルを作ればいいでしょう。
小さなスクリプトですので、入庫と出庫を最初に分けてしまった方が、実運用はいいのでは。
Offline
Shinさん何度もありがとうございます。
入出庫は同じテーブルとなります。
数量は別のファイルへは入れることはありませんが、チェック項目が3つほどあります。(ただ、チェックを入れていくようなフィールドをチェックボックスセットで作成してあります)
そのチェックは別のファイルへ移動した際に✓をしてもらう形で問題ないでしょうか?
入出庫のファイル自体は特に現状のままで、チェック項目に入力しなくてはいけない商品のときだけ別のファイルに商品コードを渡してチェック項目を入力して終了という流れを作りたいですがその運用自体は変えたほうがいいのでしょうか?
(単独で受け側からチェックのみする場合もあります)
受け側のファイルの構造です。このファイル自体がいずれいらなくなりますが、今はそのデータを残す必要があるものです。
https://xgf.nu/bdMt
MozさんとShinさんの文章を何度も読み返しては一歩づつ進めていき、ようやく新しく作成し直してうまくできました!やり方は、Shinさんのとおりカスタムダイアログを表示でやることにしました。
ファイルは、2つですがカードウインドウを使うことはやめてカスタムダイアログを表示(商品コード、商品名、get(スクリプト引数)を&で)でシンプルな形にしました。
もっとわかるようになったら改めて変更かけたいと思います。
理解がだいぶ追い付いていなかったため、余計な時間いただきありがとうございました!
その別ファイルですが、入出庫テーブルのチェックされたレコードを抽出するだけでいいのでは。
または、どうしても別ファイルが要るなら,入出庫テーブルの主キーとチェックフィールドだけを持たせたテーブルで十分なのでは。それなら、主キーをリレーションキーにしておき、リレーション::商品キーをフィールド設定するだけです。
Last edited by Shin (2022-11-25 08:57:36)
Offline
ありがとうございます。
そんな方法もあるのですね・・・
2パターン作成してみてリレーションでフィールドを置くような形で進めてみます!
なんだか、難しく考えなくてよいのだと思いました。
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 616.11 KiB (Peak: 633.02 KiB) ]