みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
環境:Mac Filemaker Server16 / FilemakerPro16 / FilemakerGO 16 / Bluetoothハンディバーコードリーダー
小売をやっておりまして商品の在庫管理に使っております。
商品を店内のいくつかの場所(店内/店奥など)に置いておりますが、古くなった商品についてはコンテナの中に入れるようにしております。
コンテナは、コンテナAからコンテナNまで名前を振ってあります。
商品にはCode39のユニーク値のバーコードラベルをつけてあり、バーコードで検索してヒットした商品の「商品位置」をコンテナA〜Nに付け直すということを行いたいのです。
商品を陳列するときにその段階での商品の位置(店内/店奥など)がついているのですが、これをバーコードで読んだときに商品位置をなんらかのコンテナに変更したいのです。
現在、レイアウト1で「変更先のコンテナの名前」を選ばせています。
(ここではA〜Nまでボタンが並んでいます)
Aを押すとレイアウト2に変わり、ここでバーコードによる検索をさせます。ここで検索させた商品は、商品位置が「コンテナA」に変わるということです。
ここのスクリプトですが
フィールドへ移動[在庫管理::管理番号]
検索モードに切り替え[一時停止:オン]
検索実行[ ]
IF(最終メッセージ)≠401)
フィールド設定[在庫管理::商品位置;"コンテナA"]
else
全スクリプト中止
END IF
ここまでは動作するのですが、ここまで使っていたFM11だと、レイアウト1で「A」を押したとき、レイアウト2に変わってからバーコードが入るフィールド「管理番号」がアクティブに
なったのですが、現在のGOだとアクティブになりません。(フィールド確定したような状態になります。なおFM16上で動作させると「管理番号」はアクティブになります)
FMG0上で動作させたときにフィールド移動させたいときはどのようにすればいいのでしょうか?
また、現在検索条件を IF(最終メッセージ)≠401) としていますが、本当は「検索してヒットしたら」にしたいのですが、その場合どのような関数を使えばいいのでしょうか?
何卒よろしくお願い致します。
Offline
フィールドへ移動させるには[フィールドへ移動]スクリプトステップがあります。
フィールドへ移動
https://fmhelp.filemaker.com/help/16/fm … field.html
Get ( 最終エラー ) のことだと思いますが、
検索条件に合致するレコードがあれば結果は Get ( 最終エラー ) = 0 となります。
Get ( 最終エラー )
https://fmhelp.filemaker.com/help/16/fm … error.html
また、Get ( 対象レコード数 ) を利用すれば検索実行後のレコード数が取得できます。
Get ( 対象レコード数 )
https://fmhelp.filemaker.com/help/16/fm … count.html
スクリプトが省略されているだけだと思いますが、
検索結果が0件の場合などの FileMaker が表示するダイアログを抑制するには[エラー処理]をオンにします。
※[エラー処理]スクリプトステップのオンオフとエラー番号の取得は無関係です。
Offline
MOZ様
お世話になっております。
>フィールドへ移動のスクリプトステップがあります。
はい、検索モードへ切り替える前にこのスクリプトをいれてあるのですが、どうも新しいFMでは次の「検索モードへ切り替え:一時停止オン」で全スクリプトが停止してしまうようでフィールド確定した状態になってしまうのです(以前のGO、及び現在でもFMProではきちんとフィールドがアクティブになります)。
前回言葉が足りませんでしたが、「管理番号」というフィールドに入っている数字をバーコードリーダーで検索させようとしています。
今はGOでボタンを押してから(スクリプトを起動してから)、検索画面でわざわざ管理番号フィールドを指でアクティブにしてから検索させています・・・
>Get ( 最終エラー )
>検索条件に合致するレコードがあれば結果は Get ( 最終エラー ) = 0 となります。
条件に合致する結果であれば「0」になるのですか。ありがとうございました。修正してみます。
併せてエラー処理も入れてみます。
Offline
はい、検索モードへ切り替える前にこのスクリプトをいれてあるのですが、どうも新しいFMでは次の「検索モードへ切り替え:一時停止オン」で全スクリプトが停止してしまうようでフィールド確定した状態になってしまうのです(以前のGO、及び現在でもFMProではきちんとフィールドがアクティブになります)。
モードが切り替わる際にレコードは確定します。
検索モードで任意のフィールドにカーソルを入れたい場合は検索モードに切り替わってから行います。
また、一時停止オンなのですからスクリプトは停止してユーザ操作の待機状態になります。
書かれている内容からは作った通りに動作しているものの、意図とは異なっている状態です。
[フィールドへ移動]を[検索モードに切り替え]のあとに移動させれば
検索モードに切り替わったあとでカーソルがフィールドに入った状態で一時停止します。
Offline
Moz様
お世話になっております。
どこの書き込みか失念しましたが、検索モードにする前にフィールドへ移動に、という書き込みを見たためそのようにしました。
今回いろいろ試している中で順序をMoz様のおっしゃっている通り、
>[フィールドへ移動]を[検索モードに切り替え]のあとに移動させれば
>検索モードに切り替わったあとでカーソルがフィールドに入った状態で一時停止します。
にもしてみましたがやはりカーソルがフィールドに入った状態で一時停止しません。FilemakerProだとフィールドに入った状態で一時停止します。
(今もあらためてそう設定してみましたがやはりフィールドはアクティブになりません)
このGOの動作がどうにも不明で困っています。
Offline
[検索モードに切り替え]で一時停止がオンなのでフィールドへ移動は実行されません。
[検索モードに切り替え]一時停止オフ
[フィールドへ移動]
[スクリプト一時停止/続行]
これならばフィールドにカーソルが入って停止します。
バーコードリーダーで読み込ませたあとどうしたいかで次の手を考えましょう。
(一時停止オンを読み落としていました。すんません)
Last edited by Moz (2018-05-28 23:30:52)
Offline
Moz様
お世話になっております。
ありがとうございます、思うとおりの動作をしました。
[スクリプト一時停止/続行]は考えたのですが、バーコードがスキャンされエンターが入った時に検索が実行されるとは思いませんでした。(検索モードの一時停止のみ実行されると思っていました)
本当にありがとうございました。また何かありましたら何卒よろしくお願い致します。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 580.36 KiB (Peak: 585.61 KiB) ]