• ベストアンサー

サブサブフォームのレコード移動方法

 いつもお世話になっております。サブサブフォームのニューレコードに移動するボタンを作成しようとしているのですが、サブフォームは移動できるのですが、サブサブフォームを移動させることができません。 Me.sub1.Form.sub2.Form.コンボボックス名.SetFocus DoCmd.GoToRecord , , acNewRec で記述してみたのですが反応がありませんでした。指定方法が間違っているのでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

確認をしていないので、自信なしですが。 SetFocusメソッドは、アクティブフォームのコントロールに対してのみ有効だったような気がします。 だとすれば、 Me!sub1.SetFocus Me!sub1.Form!sub2.SetFocus Me!sub1.Form!sub2.Form!コンボボックス名.SetFocus DoCmd.GoToRecord , , acNewRec のように、サブフォームコントロールに順次フォーカスを移動させてこれをアクティブにしてやれば、最後にコンボボックスにフォーカスがセットされ、レコードの移動ができるようになるかもしれません。

関連するQ&A

  • Access レコード移動時イベントでサブフォーム

    お世話になります。 親フォーム Aがあります。(データソースが存在します) その中にサブフォームBがあります。(データソースが存在します) 親フォームのレコード移動時のイベントで、いつもサブフォームのレコードの最後を表示したいのです。そこで・・・ 親フォームAの レコード移動時イベントに Private Sub Form_Current() Me.B.SetFocus DoCmd.GoToRecord , , acLast End Sub 上記を記述すると、一番初めはきちんとサブフォームBのレコードは最後を表示するのですが、以後、親フォームのレコードを動かすと、親フォームの最後のレコードをさしっぱなしになってしまいます。 Me.B.SetFocus DoCmd.GoToRecord , , acLast これの後にどんな記述をすれば、親フォームのレコードを動かすと同時にサブフォームBも最後の行に移るようにできますでしょうか? 何卒よろしくお願いいたします。

  • サブフォームのレコード移動

    以下のように2つのサブフォームを親フォームより指定しています。 この場合だとかならずSetFocusしなくてはならなく そのたびに画面がぶれてしまいます。 Me.[1つ目のサブフォーム].SetFocus DoCmd.GoToRecord , , acGoTo, num Me.[2つ目のサブフォーム].SetFocus DoCmd.GoToRecord , , acGoTo, num SetFocusをしないでもサブフォームの移動は可能でしょうか? よろしくお願いします。

  • 新規レコードへ移動しない

    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

  • サブフォームの新規レコードに移動したい アクセス

    親フォームのコマンドボタンをクリックしたら 親フォームにはまっているサブフォームの新規レコードに移動したいのですが、 うまくできません。 サブフォームのオブジェクト名は、"F_SubForm"です。 サブフォームはデータシートビューです。 VBAコードは Private Sub cmd_test_Click() DoCmd.SelectObject acForm, "F_SubForm" DoCmd.GoToRecord , , acNewRec End Sub です。 上記コードを実行すると DoCmd.SelectObject acForm, "F_SubForm" の部分で、 「実行時エラー 2489  オブジェクトが開いていません。」 となります。 だからと言って、 DoCmd.GoToRecord , , acNewRec だと、何も起こりません。(新規レコードに移動しません) 解決方法をご教授ください。

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

  • レコード移動について

    単票フォームで何件かレコードがあります。 それを DoCmd.GoToRecord , , acNext で1つずつ移動させ、今何番目のデータなのか?をメッセージで出し、 最後のレコードになったら「最後のレーコード」というメッセージの後に Exit Sub させたいのですが... F8 で1つ1つコンパイルさせるとできるのですが、 データベース画面から直接フォームをDBCLして開こうとすると いきなり「最後のレコード」になってしまいます。 記述のが悪いのでしょうか?それともフォーム自体が悪いのでしょうか? 教えてください Private Sub Form_Current() If Me.CurrentRecord >= Me.RecordsetClone.RecordCount Then MsgBox "最後のレコード" Exit Sub Else MsgBox "途中のレコード" DoCmd.GoToRecord , , acNext   End If End Sub

  • アクセス enterで次ページ(レコード)移動

    アクセスでformを使い最後の入力”失効有無”が終わったら次のレコードにenter keyで 移動したいのですがうまくいきません。 プロパティの更新後処理 イベントプロシージャのところに下記を書いています。 Private Sub 失効有無_AfterUpdate() DoCmd.GoToRecord , , acNewRec DoCmd.GoToControl "ID" End Sub 以前はこれでうまくいったと思います。。。 おかしいですか? よろしくお願いします、

  • Access2003にて、メインフォーム上に設置した「コピー」ボタンを

    Access2003にて、メインフォーム上に設置した「コピー」ボタンをクリックすると、メインフォームとサブフォーム9個のレコードを一括で新規レコードにコピーするVBAを作成しています。 ですが、ボタンをクリックすると、 「3164  フィールドを更新できません」 とメッセージが表示されて、メインとサブ1だけがコピーされ、サブ2~9はコピーされません。 テーブルの構成は以下のようになっています。 メイン(テーブル名:00メイン)  ・計画書番号(オートナンバー型)※主キー  ・コピーフラグ(数値型)  ・コピー実行日(日付型)  ・作成フラグ(数値型)  ・作成日(日付型)  ※この他40程フィールドがあります。 サブ1~9(テーブル名:01~09サブ)  ・計画書番号(長整数型)※インデックスは「はい(重複なし)」  ・レコード作成用番号(長整数型)  ※この他各サブテーブルごとに、20~40程のフィールドがあります。 サブ1~9の計画書番号はメインの計画書番号とリレーションシップしています。 サブフォームに計画書番号を表示するようにしてみると、コピーボタンをクリックしたときサブ2だけがメインで取得した新しい計画書番号が表示されていて、サブ2~9はコピー元の計画書番号が表示されています。 以下にコピーボタンをクリックした時のコードとBeforeUpdate時のコードを記載します。 また、「Forms!メイン!サブ1.Form.レコード作成用番号 = Me.txt計画書No」の箇所はメインの新規作成時にサブ1~9にレコードを作成するようにしています。 (メイン作成と同時にサブにもレコードを作成したかったので・・・) サブ2~9までのコピーができるようにするにはどうしたらよいのでしょうか? よろしくお願いいたします。 Private Sub cmdコピー_click() DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdCopy DoCmd.GoToRecord , , acNewRec DoCmd.RunCommand acCmdPasteAppend Me!コピーフラグ = 1 Me!コピー実行日 = Date Me!サブ1.SetFocus DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdCopy DoCmd.GoToRecord , , acNewRec DoCmd.RunCommand acCmdPasteAppend Me!サブ2のサブフォーム.SetFocus DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdCopy DoCmd.GoToRecord , , acNewRec DoCmd.RunCommand acCmdPasteAppend ※以下サブ3~9までサブ2と同じコードを記述しています。 MsgBox "レコードのコピーが完了しました。" End Sub Private Sub Form_BeforeUpdate(Cancel As Integer) Dim dlgret As Integer dlgret = MsgBox("編集内容を保存しましすか?", vbQuestion + vbOKCancel, "保存確認") If dlgret = vbCancel Then Cancel = True Else '新規作成の場合、作成日フラグは既定値0のため1に変更 If Me!作成フラグ = 0 Then Me!作成フラグ = 1 Me!作成日 = Date If Me!コピーフラグ = 1 Then Forms!メイン!サブ1.Form.Requery Forms!メイン!サブ2.Form.Requery ※サブ3~9も同様にRequeryを行ないます。 Else MsgBox "コピーフラグは" & Forms!メイン!コピーフラグ & "です。" & Chr(13) & _ "新規作成を実行します。""" Forms!メイン!サブ1.Form.レコード作成用番号 = Me.txt計画書No Forms!メイン!サブ2.Form.レコード作成用番号 = Me.txt計画書No ※サブ3~9も同様に処理します。 End If Else End If End Sub

  • Accessで一件の新規レコードのみを登録する方法

    OS: win xp Access Version: 2003 フォームを使って新規レコード入力できるように   Private Sub Form_Load() Docmd.GoToRecord,, acNewRec End Sub として、開いています。 ここの際、問題なのですが、ホイールマウスを使っているとデータ入力中に誤ってホイールを回すことにより次の新規レコードに移ってしまいます。 これを制限したいと思います。 この類の過去で検索しましたが、解決に至っていません。 ご意見をください。

  • GoToRecordでサブフォームを指定したい

    Fフォームの中にSF詳細という名前のサブフォームを埋め込んでいます。 このサブフォームに対して、 指定したレコードに移動したいのですが DoCmd.GoToRecord acDataForm, Form_SF詳細, acGoTo, 3 DoCmd.GoToRecord acDataForm, Forms("Fフォーム").Controls("SF詳細").Form, acGoTo, 3 DoCmd.GoToRecord acDataForm, "SF詳細", acGoTo, 3 全部エラーになり、うまくいきません。 正しい記述の仕方を教えてください。

専門家に質問してみよう