• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストボックスに入っている文字数を知りたい)

テキストボックスの文字数を知りたい

このQ&Aのポイント
  • MS-Access2000のテキストボックスに入力された文字数を取得する方法を教えてください。
  • 特定のバーコードを読み取るためにテキストボックスに入力しているが、バーコードの末尾の改行コードを削除しているため次の項目にジャンプできない。
  • 8桁のバーコードが入力された場合に次の項目にジャンプするためのプロシージャーを設定したが、テキストボックスが常に空の状態になってしまう。何か解決策はあるか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

バーコードリーダーを使ったことがないので、外してるかもしれませんが、 もし、フォーカスのあるテキストボックスにSendKeysのようなことをしているのなら、 テキストボックスの「定型書式」プロパティを 99999999;;_ と設定して、「自動タブ」プロパティを はい に設定すればどうでしょうか。 8桁入力されると自動で次のコントロールにフォーカスが移動します。

usiushi
質問者

お礼

回答ありがとうございました。 思うように動き出しました。何日も苦労していたので感動ものですね。 月末にかかってしまい、何も出来ない状態で皆さんからたくさんアドバイスを頂いていたのに 本当に申し訳ありませんでした。 今回の勘所は「自動タブ」ですね。定型書式と連動して使えるとは知らなかったので 本当にありがたいです。 どうもありがとうございました。

その他の回答 (6)

回答No.7

バーコードリーダーについて調べてみました。 バーコードリーダー入門 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
usiushi
質問者

お礼

バーコードの仕様まで回答頂きありがとうございました。 こちらで使っているのはキーボード送信のものです。 コメントいただいたようにNo.5の提案で、無事に進めることが出来ました。 ありがとうございました。 また、「もしだめなら」の内容は、今後の資料とさせていただきます。 イベントのタイミングである「変更時」にセットするというのは私にとっては 貴重な情報でありました。本当に、ありがとうございました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

参考程度で。 物流で使うJANコードかなにかでしょうか?。 倉庫でスキャンしたらその8ケタJANコードがアクセスの画面にセットされる?。 セットされるだけで次の(項目への)操作はオペレータが行うしかない?。 >都合上最後に改行コード(chr(13))の設定をはずしています。 JANコードなら13桁もあるから?。 バーコードリーダーの使い方を(メーカに)確認してはどうでしょう。 同じ使い方をしていれば、同じ事象に陥った他ユーザもいるとは思います。 改行だけ送信だけの制御があるかもしれない。 >改行コード(chr(13))の設定 これはプログラム制御でなくて、バーコードリーダー側の機器設定?。 バーコードリーダーとアクセスとの連携になにかプログラムがあるなら、 そこで制御できないか考える。 他に影響なければタイマーコントロールみたいなものは使えるか。

usiushi
質問者

お礼

回答をありがとうございました。 今回は、整理するために自分たちでバーコードを作ってやっています。 オリジナルの為、JANコードには触れることはありません。 ただ、参考にしていたのは確かですが。 今回は補助プログラムを作っているので、バーコードの設定変更は 出来ませんでした。改行コードがないということはこんなに大変なのかと つくづく思いました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

フォームの挿入後処理は同じことかも しれないので、スルーしてください。 そことで、一旦、非連結のテキストボックスに 入れて、改行コードを付加して当該のテキストボックスに 入れる二段構えはどうですか。 その場合の非連結のテキストボックスの可視はいいえ で設定していてもいいのではと思いますが。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

フォームの挿入後処理でイベントがとれませんか。 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 のような感じ。

usiushi
質問者

お礼

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

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

「変更時」イベントで テキストボックスの Text プロパティの長さを調べましょう。 プロパティを省略すると、Value プロパティが参照されます。 Value プロパティの値は、フォーカスを移動させるなりしなければ、 変化しません。

usiushi
質問者

お礼

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

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

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

usiushi
質問者

お礼

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