
こんにちは。いつもお世話になっております、Access初心者です。
メインフォームからサブフォームを表示するようにしているのですが、
サブフォームのプロパティのレコードソースにローカルで作成した
テーブルを設定してあります。
サブフォームを開くとそのテーブルの内容が表示されますが、
プロパティで更新の許可、削除の許可、追加の許可をすべてはいに
設定していれば、サブフォームに表示されているデータを更新や追加などの
編集を行ったら、自動敵にテーブルに反映されるものと思っていたのですが、
反映されません。
何かコードを書く必要があるのでしょうか?
すみません、よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
テーブルと、そのテーブルをレコードソースとするフォームとを同時に開いた状態で
データの編集を行った場合、上書き更新であればすぐに表示に反映されますが
(→但し、No.1の方が回答されているように、未保存レコードは反映の対象外)、
レコードの削除・追加は自動的には反映されません。
(削除の場合は、行が削除される代わりに、コントロールに「#Delete」を表示)
従って、編集結果を全て反映した表示にするには、コード・マクロの記述が必要に
なります。
サブフォームの親フォーム上のコマンドボタンをクリックにより反映する、という形で
よいのでしたら、以下のようなコードで対応可能です;
(コントロールとしてのサブフォーム名=SF1、展開済のテーブル名=テーブル1、
コマンドボタン名=DatSync、とした場合)
'~~~以下を貼り付け~~~
Private Sub DatSync_Click()
'実行可否を確認(OKで実行、キャンセルで中止)
IF MsgBox("表示を更新します。",vbOKCancel,"確認")=vbCancel _
Then Exit Sub
'以下の1行により、サブフォームの表示を更新
SF1.Requery
'以下の3行により、テーブルの表示を更新&フォーカスをフォームに戻す
DoCmd.SelectObject acTable,"テーブル1",False
DoCmd.Requery
DoCmd.SelectObject acForm,Me.Name,False
End Sub
'~~~以上を貼り付け~~~
サブフォーム、テーブルの一方のみでよい場合は、不要な方を削除して下さい。
(サブフォームのみならテーブル更新側の3行を、テーブルのみならサブフォーム
更新側の1行を、それぞれ削除)
なお、この処理を行うと、編集中のレコードは強制的に保存され(値要求が設定
されているフィールドが未入力の場合はエラー発生)、テーブルでは同時に先頭
レコードに移動させられますので、ご注意下さい。
お礼が遅くなりすみません。
大変詳しく分かりやすくお答え頂きありがとうございました。
まだAccessは始めたばかりなのでとても勉強になりました。
ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
-
4
access テキストボックスの値取得
Access(アクセス)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
7
アクセスでサブフォームのレコードを取得したい。
Access(アクセス)
-
8
Access チェックボックスやオプションボタンのサイズ変更
Access(アクセス)
-
9
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
10
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
11
非連結サブフォームのレコードソース
その他(データベース)
-
12
ACCESSのフォームからデータの追加ができない
その他(データベース)
-
13
「フォームを作成できませんでした」
Access(アクセス)
-
14
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
15
Accessで埋め込んだサブフォーム(データシート形式)でデータ追加ができない
Access(アクセス)
-
16
Accessフォームが入力できません。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access2000 サブフォームのReco...
-
Access 複数フォームを...
-
Access2000、これはいったい・...
-
(ACCESS)条件に応じて、テキ...
-
access サブフォームにリストを...
-
ACCESS サブフォームのフィール...
-
Accessで、一覧からクリックし...
-
Access レイアウト変更したサブ...
-
ACCSESS2013VBA フォームのレコ...
-
単票フォームと帳票フォームを...
-
アクセスで サブフォームの表...
-
アクセス2003 - レコード追...
-
AccessのFormのみをスクリーン...
-
初心者です。accessで請求書を...
-
サブフォームでのダブルクリッ...
-
AccessのDoCmd.ApplyFilterの使...
-
複数項目でのサブフォームとの...
-
サブフォームが見えなくなる。
-
Accessのサブフォーム内で連続...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
(ACCESS)条件に応じて、テキ...
-
Access2000、これはいったい・...
-
Access 複数フォームを...
-
ACCSESS2013VBA フォームのレコ...
-
access サブフォームにリストを...
-
サブフォームでのダブルクリッ...
-
サブフォームのデータを保存す...
-
Accessのサブフォームから値を...
-
Accessでサブフォームの中の並...
-
Access2000 サブフォームのReco...
-
サブフォームが見えなくなる。
-
2回目に画面のレコードセットの...
-
AccessのFormのみをスクリーン...
-
Access VBA acCmdSelectRec...
-
Access 2010 分割フォームのフ...
-
アクセスで サブフォームの表...
-
初心者です。accessで請求書を...
-
AccessのDoCmd.ApplyFilterの使...
-
Accessで、サブフォームのある...
おすすめ情報