
No.1ベストアンサー
- 回答日時:
> 別のフォーム上にデータを入力し保存
「レコードの保存」を行うには、以下のようにします:
(但し、回答の簡素化のため、エラー処理は省略しています)
※フォーム名を「メイン」とした場合。
Private Sub コマンド0_Click()
'別フォームへのレコードの入力
Forms!メイン!ID = Me!ID + 1 '入力の一例
'レコードの保存
Forms!メイン.SetFocus '対象フォームをアクティブ化
RunCommand accmdSaveRecord 'レコードの保存
Me.SetFocus '実行元のフォームに戻る
End Sub
なお、「対象フォームのRequery」でも通常はレコードの保存ができますが、
職場で作成したMDBファイルで、何かの条件で、それだとエラーになる場合が
あったため、この場では上記を推奨しておきます。
(どういう条件だったかは、失念してしまいましたが・・・(汗))
> サブフォームのデータも保存
この場合は、上記に加えて、「サブフォームのアクティブ化」と「レコードの保存」
を実行してやればOkです:
※サブフォーム名(→プロパティシートの『その他』タブの『名前』に表示される
もの)を「サブ」とした場合。
Private Sub コマンド0_Click()
Forms!メイン!ID = Me!ID + 1
'メインフォームのレコード保存
Forms!メイン.SetFocus
RunCommand accmdSaveRecord
'サブフォームのレコード保存
Forms!メイン!サブ.SetFocus
RunCommand acCmdSaveRecord
Me.SetFocus
End Sub
なお、「Forms!メイン」を何度も参照する代わりに、Withステートメントを使用
したり、Form型のオブジェクト変数に格納してやると、若干ながら端末への
負荷が軽減されますので、併せて今後の参考まで。
(今回提示した程度のものなら、昨今のPCでは大した負荷にはなりませんが(汗)
どちらかというと、見やすくなるというメリットの方が大きいかもしれません)
Private Sub コマンド0_Click()
Dim Frm As Form
'メインフォームを変数Frmに格納
Set Frm = Forms!メイン
With Frm
!ID = Me!ID + 1
.SetFocus
RunCommand accmdSaveRecord
!サブ.SetFocus
RunCommand acCmdSaveRecord
End With
Me.SetFocus
'念のため、明示的にメモリを解放
Set Frm = Nothing
End Sub
※「Forms!メイン!サブ」には、「.Form」や「.Controls」が省略されています。
そちらを入れた方が使い慣れているようでしたら、それらを入れてもOkです。
分かりやすい回答ありがとうございました。おかげさまで解決いたしました。
私の持っている解説書にはご回答のような説明が載っていません。ご推薦の解説書があれば教えていただけますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
-
4
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
5
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
6
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
7
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
8
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
9
ACCESSにて
Access(アクセス)
-
10
Accessで埋め込んだサブフォーム(データシート形式)でデータ追加ができない
Access(アクセス)
-
11
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
12
Access2010、値を入力したら自動保存の方法
Access(アクセス)
-
13
ACCESSフォームにコントロールが追加できない
Access(アクセス)
-
14
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
15
新規レコード行を非表示にしたい
Access(アクセス)
-
16
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
17
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
18
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
19
accessでフィールド追加のあとフォームに反映されない
Access(アクセス)
-
20
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
別MDBのフォームを起動
-
Access2000、これはいったい・...
-
アクセスでサブフォームのレコ...
-
Access2000 サブフォームのReco...
-
AccessのFormのみをスクリーン...
-
Accessのサブフォームから値を...
-
Access レイアウト変更したサブ...
-
Access 複数フォームを...
-
Accessで、一覧からクリックし...
-
アクセス2003 - レコード追...
-
2回目に画面のレコードセットの...
-
Accessでサブフォームの中の並...
-
ACCESSでサブフォームの...
-
googleフォームでインストール...
-
access vbaのコンパイルエラー...
-
アクセス2000の終了時にバック...
-
[Access2000] フォーム間で値の...
-
サブフォームが見えなくなる。
-
accessでオートナンバーを使わ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
2回目に画面のレコードセットの...
-
Access 複数フォームを...
-
access サブフォームにリストを...
-
Access2000、これはいったい・...
-
(ACCESS)条件に応じて、テキ...
-
Access2000 サブフォームのReco...
-
サブフォームが見えなくなる。
-
初心者です。accessで請求書を...
-
ACCSESS2013VBA フォームのレコ...
-
サブフォームのデータを保存す...
-
AccessのFormのみをスクリーン...
-
Accessで、一覧からクリックし...
-
Accessのサブフォームから値を...
-
Accessで、サブフォームのある...
-
サブフォームでのダブルクリッ...
-
ACCESSでfilterとorderbyについて
-
ACCESSでのデータ削除について
-
アクセスでサブフォームのレコ...
-
サブフォームでフィルタしたデ...
おすすめ情報