- 締切済み
新規レコードへ移動しない
Access2010を使用しています。 サブフォームからメインフォームの「登録」ボタンプロシージャをCallした時、メイン・サブフォーム共に新規レコードへ移動しなくて困っています。 具体的には、サブフォームにフォーカスがある時に「F12」を押すと画面の入力項目の内容刃そのままでメインフォームの「注文番号」テキストボックスにフォーカスが移動します。 メインフォームにフォーカスがあるか、マウスで「F12」をクリックすると画面の入力項目がクリアされて新規レコードへ移動します。 コードは以下の内容が記述してあります。 ーーーーーサブフォーム----- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 123 Call Me.Parent.Form_KeyDown(KeyCode, Shift) KeyCode = 0 End Select End Sub -----メインフォーム----- Public Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 123 Call 登録_Click KeyCode = 0 End Select End Sub Private Sub 登録_Click() DoCmd.GoToRecord , , acNewRec Me.注文番号.SetFocus End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
すみません。何となく読みすごしていましたが、 >マウスで「F12」をクリックすると って、 「キーボードの「F12」をクリックすると」 または、 「マウスで「登録」ボタンをクリックすると」 の間違いでは? ではなく、フォームに「F12」というボタンが あるということですか? No1とNo2はキーボードの「F12」キーという 前提で回答していますが。
- piroin654
- ベストアンサー率75% (692/917)
No1です。追加で。 メインフォームに一旦フォーカスを移動し、 メインフォームのいずれかのコントロールにフォーカスを 移動して、新規レコードに移動するという 方法ですので、このままではサブフォームに フォーカスが移動するかもしれないので、 新規レコードに移動後にメインフォームの 注文番号にフォーカスをおきたいのであれば、 Private Sub 登録_Click() Forms!メインフォーム名.SetFocus Forms!メインフォーム名.注文番号.SetFocus RunCommand acCmdRecordsGoToNew Forms!メインフォーム名.注文番号.SetFocus End Sub のように再度フォーカスを注文番号のテキスト ボックスに設定します。
- piroin654
- ベストアンサー率75% (692/917)
個別に変更するのは面倒なので全体的に変更してみました。 コードの順序の入れ替え(KeCode=0の位置)、その他 もろもろです。 ##### 以下はメインフォーム ########## Public Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF12 KeyCode = 0 Call 登録_Click End Select End Sub Private Sub 登録_Click() Forms!メインフォーム名.SetFocus Forms!メインフォーム名.注文番号.SetFocus RunCommand acCmdRecordsGoToNew End Sub ############# 以下はサブフォーム ################## Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF12 KeyCode = 0 Call Me.Parent.Form_KeyDown(123, 1) End Select End Sub
お礼
教えて頂いたコードを試してみたのですが、「指定されたレコードに移動できません」とエラーが表示されてしまいました。 それから試行錯誤し、「登録_Click」でacNewRecの時、注文番号にフォーカスがあるとエラーになる事が分かりましたので、別の項目にフォーカスを当てるようにしたところ思った動作をするようになりました。
補足
有難うございます。 ご指摘の箇所ですが、正しくは メインフォームにフォーカスがある場合は、「F12」キーを押すか、マウスで「登録」をクリックすると画面の入力項目がクリアされて新規レコードへ移動します。 です。お恥ずかしい... コードについてはまだ試していないので、また後程ご連絡いたします。