単二電池

どうも。ushiushiです。
今、MS-Access2000でフォームに入力する際に、バーコードを使っています。
このバーコードですが、都合上最後に改行コード(chr(13))の設定をはずしています。
そのために、テキストボックスに入力されても改行コードがないため、次の項目にジャンプしません。
8桁バーコードで読めば次の項目に移動するように「キー入力時」にて確認のプロシージャーを
セットしたのですが、フォーカスが動かないためテキストボックスは常に「null」の状態です。
どうすれば8桁を数えて次の項目にジャンプするように出来るのでしょうか?
ご存知の方、ぜひ教えてください。よろしくお願い致します。

A 回答 (7件)

バーコードリーダーを使ったことがないので、外してるかもしれませんが、


もし、フォーカスのあるテキストボックスにSendKeysのようなことをしているのなら、

テキストボックスの「定型書式」プロパティを

99999999;;_

と設定して、「自動タブ」プロパティを

はい

に設定すればどうでしょうか。
8桁入力されると自動で次のコントロールにフォーカスが移動します。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
思うように動き出しました。何日も苦労していたので感動ものですね。
月末にかかってしまい、何も出来ない状態で皆さんからたくさんアドバイスを頂いていたのに
本当に申し訳ありませんでした。

今回の勘所は「自動タブ」ですね。定型書式と連動して使えるとは知らなかったので
本当にありがたいです。
どうもありがとうございました。

お礼日時:2010/12/01 17:03

バーコードリーダーについて調べてみました。



バーコードリーダー入門
http://barcodereader.web.fc2.com/09_01.html

インターフェイスには キーボード送信 と RS-232C規格通信 の2種類あるようです。
「改行コードを送ることでフォーカス移動」ということは、キーボード送信 だと思われます。

もしそうなら、回答No.5 で提案した定型書式と自動タブでフォーカス移動するはずです。
もし、それで、だめなら、変更時イベントでTextで長さを調べてSendKeysで改行を送信したらどうでしょうか。

Private Sub テキスト1_Change()
  If Len(Me.テキスト1.Text) >= 8 Then
    SendKeys "{ENTER}"
  End If
End Sub

参考URL:http://barcodereader.web.fc2.com/09_01.html
    • good
    • 0
この回答へのお礼

バーコードの仕様まで回答頂きありがとうございました。
こちらで使っているのはキーボード送信のものです。
コメントいただいたようにNo.5の提案で、無事に進めることが出来ました。
ありがとうございました。

また、「もしだめなら」の内容は、今後の資料とさせていただきます。
イベントのタイミングである「変更時」にセットするというのは私にとっては
貴重な情報でありました。本当に、ありがとうございました。

お礼日時:2010/12/01 17:09

参考程度で。



物流で使うJANコードかなにかでしょうか?。
倉庫でスキャンしたらその8ケタJANコードがアクセスの画面にセットされる?。
セットされるだけで次の(項目への)操作はオペレータが行うしかない?。

>都合上最後に改行コード(chr(13))の設定をはずしています。
JANコードなら13桁もあるから?。

バーコードリーダーの使い方を(メーカに)確認してはどうでしょう。
同じ使い方をしていれば、同じ事象に陥った他ユーザもいるとは思います。
改行だけ送信だけの制御があるかもしれない。

>改行コード(chr(13))の設定
これはプログラム制御でなくて、バーコードリーダー側の機器設定?。
バーコードリーダーとアクセスとの連携になにかプログラムがあるなら、
そこで制御できないか考える。

他に影響なければタイマーコントロールみたいなものは使えるか。
    • good
    • 0
この回答へのお礼

回答をありがとうございました。
今回は、整理するために自分たちでバーコードを作ってやっています。
オリジナルの為、JANコードには触れることはありません。
ただ、参考にしていたのは確かですが。

今回は補助プログラムを作っているので、バーコードの設定変更は
出来ませんでした。改行コードがないということはこんなに大変なのかと
つくづく思いました。

お礼日時:2010/12/01 17:12

フォームの挿入後処理は同じことかも


しれないので、スルーしてください。

そことで、一旦、非連結のテキストボックスに
入れて、改行コードを付加して当該のテキストボックスに
入れる二段構えはどうですか。
その場合の非連結のテキストボックスの可視はいいえ
で設定していてもいいのではと思いますが。
    • good
    • 0

フォームの挿入後処理でイベントがとれませんか。



Private Sub Form_AfterInsert()
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Name = "該当テキストボックス名" Then
'処理
Exit For
End If
Next ctl
End Sub

のような感じ。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
私が悪いのですが、利用しているアクセスは「2000」です。
「挿入後処理」のイベントがありませんでした。
バージョンをはっきりさせなくてすみませんでした。

お礼日時:2010/12/01 18:32

「変更時」イベントで


テキストボックスの Text プロパティの長さを調べましょう。

プロパティを省略すると、Value プロパティが参照されます。
Value プロパティの値は、フォーカスを移動させるなりしなければ、
変化しません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
「変更時」を使うと値の変化がトリガーになるのですね。ありがとうございました。
しかし、この方法でも、フォーカス移動が必要となるのですね。
バーコードリーダーが改行コードを送らないため、フォーカスを移動させる方法が
今のところ見当たりません。
テキストボックスの文字数を数えて、規定数になったら sendkeys chr(13)を
送信し、次のフォーカスに移動したいところなのですが。。。。
やはり、難しいですね。

お礼日時:2010/11/26 12:32

If Len(Me!テキストボックス名)=8 Then



とか?
    • good
    • 0
この回答へのお礼

回答をありがとうございました。
最初は、私もこの命令文を使っていたのですが、フォーカスが動かないとテキストボックスの数を数えてくれないことが解りました。
バーコードリーダーが改行コードをを送らないように設定しているため、
読み込んで、指示待ち・・・という状態になってしまいます。
ここが一番の悩みどころなんです。

お礼日時:2010/11/26 12:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す