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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Excel(エクセル) VBAで「クエリと接続」の画面を出せますか? 2 2022/10/24 13:35
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Access2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される
その他(データベース)
-
サブフォームのデータを保存する方法
その他(Microsoft Office)
-
「変更を保存しますか?」と聞かれたくない。
Access(アクセス)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
サブフォームでのダブルクリックイベント
Access(アクセス)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
access2010 コマンドまたはアクション''は無効です。について
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
access サブフォームにリストを...
-
ACCSESS2013VBA フォームのレコ...
-
Access 複数フォームを...
-
ACCESSでサブフォームの...
-
Accessでサブフォームを使った...
-
Accessのコンボボックスに連動...
-
Accessのサブフォーム内で連続...
-
(ACCESS)条件に応じて、テキ...
-
Access2007 サブフォームでフ...
-
Access VBA サブフォームの更新
-
サブフォームでのダブルクリッ...
-
Accessで、一覧からクリックし...
-
googleフォームでインストール...
-
別MDBのフォームを起動
-
強制終了になってしまいます
-
[Access2000] フォーム間で値の...
-
アクセス2000の終了時にバック...
-
Access2003 タブコントロール...
-
Accessでサブフォームの中の並...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
ACCSESS2013VBA フォームのレコ...
-
Access 複数フォームを...
-
(ACCESS)条件に応じて、テキ...
-
access サブフォームにリストを...
-
Accessのサブフォームから値を...
-
サブフォームが見えなくなる。
-
Access2000、これはいったい・...
-
サブフォームでのダブルクリッ...
-
サブフォームのデータを保存す...
-
googleフォームでインストール...
-
Accessで、一覧からクリックし...
-
ACCESSでfilterとorderbyについて
-
Access2000 サブフォームのReco...
-
レコードセットで得た結果をサ...
-
サブフォームの切り替え方を教...
-
アクセスでサブフォームのレコ...
-
AccessのFormのみをスクリーン...
-
別MDBのフォームを起動
-
Accessのコンボボックスに連動...
おすすめ情報