dポイントプレゼントキャンペーン実施中!

ACCESS2010でNumLockがONの時、取得したデータが反映されません。

他のPCでは同様の問題は発生せず、1台だけ起きています。

原因を探そうとデバックモードで実行すると上記の不具合は発生せず、非常に困っています。

ちなみに、NumLockをOFFにした状態は正常に動作しました。


以下が、不具合の起きているソースです。

If 商品コード <> 0 Then
Forms!F仕入入力!SF仕入入力.Form!商品コード = 商品コード
SendKeys "{Tab}"
SendKeys "+{Tab}"
SendKeys "{Tab}"
End If

OS:Windows7 32bit

よろしくお願いします。

A 回答 (1件)

> 他のPCでは同様の問題は発生せず、1台だけ起きています。



具体的な原因は残念ながら特定ができませんが、SendKeys
ステートメントは動作の不安定要因になることが多いとされます
ので、可能ならば他の手段を採られることをお勧めします。

例えば、提示されたコードを見ると、コントロールの移動をさせて
いるように思われますので、それであれば、当該コントロールに
SetFocusメソッドを使用する方法を採られてはいかがでしょうか。

「SF仕入入力」サブフォームの「商品コード」に移動する場合を
例にすると、以下のようになります:

 Forms!F仕入入力!SF仕入入力.Form!商品コード.SetFocus
または(省略可能なサブフォームの「Form」を省略して)
 Forms!F仕入入力!SF仕入入力!商品コード.SetFocus
または(当該コードを「F仕入入力」に記述している場合)
 Me!SF仕入入力!商品コード.SetFocus
または(当該コードを「SF仕入入力」に記述している場合)
 Me!商品コード.SetFocus


・・・なのですが、「Tab」と「Shift+Tab」の反復、ですか(汗)

もしもレコードの移動によって「レコードの保存」をさせることが
目的のようでしたら、「RunCommand acCmdSaveRecord」を
追記すればOkですので、併せて参考まで。
(注:当該フォーム(またはサブフォーム)内のコントロールが
 フォーカスを持った状態(→SetFocusで対応可)で行う必要が
 あります)

If 商品コード <> 0 Then
  Forms!F仕入入力!SF仕入入力!商品コード = 商品コード
  Forms!F仕入入力!SF仕入入力!商品コード.SetFocus
  RunCommand acCmdSaveRecord
  Forms!F仕入入力!SF仕入入力.Form!商品名.SetFocus
End If
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

やはりSendkeysを使わないのがベストのようですね。

なんとか回避するような仕組みを作ってみます。

お礼日時:2011/06/14 13:59

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