
OS:WindowsXP
Access Version:Access2003
メインフォームにチェックボックスを配置、非連結のサブフォームにクエリを表示させています。
チェックボックスラベルにはクエリのフィールド名を表示させており、チェックボックスをオン/オフにすることでクエリのフィールドを表示/非表示に切り換えております。
※切り替え方法はColumnWidthで操作しています。
ところで、表示/非表示と切り替え操作をしてメインフォームを閉じるコマンドボタンをクリックして閉じようとすると、
「”○○○(クエリ名)”のレイアウトが変更されています。保存しますか?」
という内容のメッセージが表示されてしまいます。
ここでレイアウトの変更は保存したくないのです。
そこで、私のした処置とは、
(1)メインフォームを閉じるコマンドボタンに
DoCmd.Close acForm "○○○(フォーム名)"
DoCmd.Close acQuery "○○○(クエリ名)",acSaveNo
と記述しました。
acSaveNoのヘルプを見ると、
メッセージを表示せずに保存しないで閉じる、
とあったのですがこれでもメッセージが表示されてしまいました。
そこで、
(2)
DoCmd.SetWarning False
DoCmd.Close acForm "○○○(フォーム名)"
DoCmd.Close acQuery "○○○(クエリ名)",acSaveNo
DoCmd.SetWarninf True
と記述したところ、メッセージを表示させなくすることには成功したのですが、無条件でレイアウトしたクエリが保存されてしまいました。
どのように記述すればメッセージを表示させず、かつレイアウト変更したクエリを保存せずに閉じることができますか?
初心者のため、誤字脱字があると思いますがすみません。
丁寧に教えていただければ幸いです。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
> どのように記述すればメッセージを表示させず、かつレイアウト変更した
> クエリを保存せずに閉じることができますか?
閉じるコマンドボタンのコードの該当部を、以下のようにしてみて下さい:
(サブフォーム名を「埋め込み0」と想定したコードです)
'使用しているクエリを、サブフォームから切り離します
'(これにより、メインフォームを閉じるときの保存の対象外になります)
埋め込み0.SourceObject = ""
'メインフォームを閉じます
'(フォーム名の代わりに「Me.Name」を使用しました)
DoCmd.Close acForm, Me.Name, acSavePrompt
・・・以上です。
但し、これだけですと、メインフォームのデザインを変えた場合などに
巻き添えを食らい、サブフォームが空の状態が保存されてしまうことが
あります(汗)
ですので、フォームの「開く時」イベントに、次のようなコードを追加して
おくことをお勧めします:
'サブフォームのソースオブジェクトが空になっていた場合は、
'クエリを埋め込み直します
If 埋め込み0.SourceObject = "" Then
埋め込み0.SourceObject = "○○○(クエリ名)"
End If
<以下、参考・余談>
Accessの「ファイル(F)」メニューの上書き保存(S)」や「名前を付けて
保存(A)」が使用可能な場合、サブフォームで列を非表示にした状態で
それを行われると、非表示状態が保存されてしまいます。
その意味では、メインフォームの「開く時」イベントで、各フィールドの
ColumnWidthの値も設定してしまう、という手もあるかと思います。
但し、そうしたとしても、クエリを単独で開いた場合には非表示になって
しまいます。
クエリを単独で使用することもある場合は、サブフォームについては、
現在のクエリを使用した「データシート型」のフォームを新設し、それを
ソースオブジェクトにした方がいいかもしれません。
(データシートビュー型のフォームにするには、フォームのプロパティ
シート『書式』タブで、『既定のビュー』を「データシート」にします)
とても丁寧な説明ありがとうございました。
おかげさまで上手く作動してくれました!
また、クエリを単独で使用することはないとは思いましたが、念のため参考通りにフォームを新設させていただきました。
ご親切な回答、心より感謝しております。
また、機会がありましたらよろしくお願いいたします★
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される
その他(データベース)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Accessで埋め込んだサブフォーム(データシート形式)でデータ追加ができない
Access(アクセス)
-
-
4
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
5
Access を×ボタンで閉じる時、レコード保存したくない。
Visual Basic(VBA)
-
6
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
7
サブフォームのフィールドの幅を変更したい。
Access(アクセス)
-
8
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
9
サブフォームを非表示させる方法を教えて下さい
その他(Microsoft Office)
-
10
アクセス VBAで列の入れ替え データシートビュー
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access 複数フォームを...
-
Access2000、これはいったい・...
-
サブフォームでのダブルクリッ...
-
access サブフォームにリストを...
-
初心者です。accessで請求書を...
-
Access2000 サブフォームのReco...
-
保存されない理由は?accessvba
-
ACCESSでfilterとorderbyについて
-
ACCESSでのデータ削除について
-
コンボボックスで選択実行後、...
-
ACCSESS2013VBA フォームのレコ...
-
サブフォームのデータを保存す...
-
2回目に画面のレコードセットの...
-
複数項目でのサブフォームとの...
-
Access VBA サブフォームの更新
-
Accessで、一覧からクリックし...
-
Accessのサブフォーム内で連続...
-
ACCESSのTabStopについて
-
別MDBのフォームを起動
マンスリーランキングこのカテゴリの人気マンスリー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で、サブフォームのある...
おすすめ情報