みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMpro13
シリアルナンバーの入力用にバーコードスキャナーを購入しました。
シリアルナンバーはテキストフィールド、ポータルはフィルタもソートもかかっていない状態です。
フィールドのOnObjectModifiにスクリプト→ポータル内の行へ移動[選択;次の;最後まできたら終了]
上記で試してみたところ、ポータル内の次の行にはいくのですが、
フィールドが濃いグレーの色で塗りつぶされたようになり、そのままスキャンができませんでした。
そのフィールドをクリックすると、フィールドの色が元の白に戻り、通常通り入力できました。
なぜ入力できないのでしょうか。。。何か考えられる原因があれば教えてください。
よろしくお願いします。
次の行へ移動してから目的のフィールドへ[フィールドへ移動]させてもフィールドに移動しないのでしょうか?
Offline
Moz様
計算式で指定するということでしょうか?
目的のフィールドとはシリアルナンバーフィールドを指定すれば良いのですか?
目的は "次の行の「シリアルナンバー」フィールドがアクティブになり
バーコードリーダーで入力できるようにすること" ですよね?
次のポータル行に移動してから[フィールドへ移動]で「シリアルナンバー」フィールドに移動したら良いのでは?
Offline
ポータル内の行へ移動[選択;次の;最後まできたら終了]
フィールド設定[ポータルに設定しているテーブル::シリアルナンバー]
上記のスクリプトでは動きませんでした…
どこが間違ってますか?
タブ順で、ポータルのシリアル値だけにタブ順を設定しておけば良いのでは。
リーダーからのサフィックスは、何が付加されています?
Offline
ポータル内の行へ移動[選択;次の;最後まできたら終了]
フィールド設定[ポータルに設定しているテーブル::シリアルナンバー]
[フィールド設定]ではなく[フィールドへ移動]です。
Offline
Shin様
ポータルのシリアル値にタブ順を設定するというのを、具体的に教えて頂けますか?
ちなみに普通のタブ順のことであれば、他のフィールド間を動かすのにタブ順を使っているので、ポータルの所だけというのは難しいです。
リーダーはただUSBに刺しただけで特に設定などはしていません。サフィックスとはなんですか?
Moz様
ご指摘ありがとうございます。
伝え忘れていたのですが、そのポータルが、100行のポータルになっていて(下に100行分ポータルが伸びている)、
個数フィールドに数字を入力すると、その数分入力ができるような仕様になっています。
ちなみに個数フィールドのスクリプトは以下の通りです。個数フィールドと、レイアウトのテーブルは登録用テーブル、シリアルナンバーフィールドのテーブルはシリアル管理です。
↓
変数を設定[$個数; 値:GetAsNumber(登録用::個数)]
レイアウト切替[「シリアル管理」 (シリアル管理)]
全レコードを表示
対象レコード削除[ダイアログなし]
変数を設定[$count; 値:GetAsNumber(1)]
Loop
新規レコード/検索条件
フィールド設定[シリアル管理::レコード番号;$count]
変数を設定[$count; 値:$count+1]
Exit Loop If [$count > $個数]
End Loop
変数を設定[$$資産登録用個数フラグ; 値:1]
レイアウト切替[元のレイアウト]
フィールドへ移動で作り直してみたところ、バーコードのナンバーが123456789だとして、個数フィールドに4と入力しバーコード読み取りすると
1行目:1
2行目:2
3行目:3456789
と出てきてしまいました。
説明下手で申し訳ないです…よろしくお願いします。
OnObjectModifi では1文字ごとにスクリプトが実行してしまうので、バーコード全体が入ってから移動するか、
移動はスキャナの入力に任せて「サフィックス」でEnterコードを送信するように設定するか
scripter様
バーコード全体が入ってからというのは、どれになりますか?
OnObjectValidateであってますか?
スキャナのサフィックスというものは、スキャナ側のせっていということですよね。
スキャナの設定というのはものによるとは思いますがどこから設定するのですか?
サフィックスはEnterがデフォルトで入っていたようです。
個数に入っているスクリプトはあまり関係ないかもしれないです。
Enterを認識したら2行目のポータル、3行目、4行目、、、という動きにしたいです。
全体が、というのは
If[Len(フィールド)=バーコードの文字数]
ポータル行の移動
のようにするという意味です。
しかし、スキャンでEnterが入るのだからEnterで次のフィールドへ移動するように設定すれば、スクリプトは不要。
scripter様
そういうことですか。ピンとこなくて申し訳ないです。
>Enterで次のフィールドへ移動するように設定
この設定を教えていただけますか?
インスペクタに移動するキーの設定があります。
scripter様
それをEnterのみに設定しても、同じフィールド内でただの改行になってしまいます。
スキャナからEnterでなくReturnが入ってるのでは?
Enterだと思います。
フィールド内で改行されるので…
改行されるということは、Enterを押されたのと同じ状態ではないのでしょうか?
EnterもReturnもフィールドに入れば改行に見えます。Code(フィールド)で確認してください。
scripter様
>Code(フィールド)で確認してください。
とは具体的にどういうことでしょうか。
毎回申し訳ないのですが、私自身FMはあまり得意でも詳しくもなく、言われている意味が分からなかったりします…
シリアルの計算式の中にCode(シリアルナンバー)みたいにいれるってことですか?
どうしたら良いのか分からないです…
色々試したところできました!
長々とすみませんでした。
回答してくださった皆様ありがとうございました!
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 557.14 KiB (Peak: 577.68 KiB) ]