- ベストアンサー
アクセスの質問です。
アクセスの質問です。 選択クエリでテーブルの内容を見た後、その選択クエリを閉じる際に、今までは『保存しますか』と聞いてきたのに、いきなり『名前を付けて保存』のボックスが表示され、保存しないとその選択クエリが閉じられないようになってしまいました。 今は、一旦デフォルトで表示されるクエリ1で保存し、作成されたクエリ1を削除しています。 どうすれば元の『保存しますか』って聞いてくる形になるのでしょう? 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
普通に考えれば、 クエリを実行する毎になにか変更箇所があるから「保存しますか?」、 さらに、開いたクエリが上書き保存できないから「名前つけて保存」。 オートナンバーとか使っていますか。 実行しようとしたクエリの状況をもう少し詳しくお願いします。 クエリのデザインから実行した? フォームからボタン押下などのマクロから実行した?
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
選択クエリを直接開くときに起こるのならば、 一旦、新しいファイルにすべてのオブジェクトを 取り込んで、再度選択クエリを開き同じ現象が 起こるか確認してみてください。 起こらなければ、元のファイルが壊れかけて いるかもしれません。 また、元のファイルを適正化して、選択クエリを 開いてみてください。 いろいろな場合が考えられますが、今の ところこのような感じですが。
- DexMachina
- ベストアンサー率73% (1287/1744)
> どうすれば元の『保存しますか』って聞いてくる形になるのでしょう? 恐らく、フォームなどでVBAを使用されていて、「DoCmd.SetWarnings」で 設定を切り替えたのが、そのままになっているのだと思います。 とりあえず、一時的な対症療法としては、 1)Ctrl+Gキーの同時押しなどで、イミディエイト ウィンドウを表示 (『起動時の設定』でショートカットキーを無効にしている場合は、 一旦その設定を解除するか、一旦ファイルを閉じた後、Shiftキー を押しながら再起動: Access2003などでセキュリティの警告が出る場合は、そこから Shiftキーを押し始めます) 2)以下の式を入力したら、Enterキーを押して次行に移動 DoCmd.SetWarnings True で、設定が解除されると思います。 (単純にMDBファイルの再起動でいける可能性もありますが、最初に 展開するフォームの「開く時」イベントが問題だとすると解決しない ので、念のため、上記手法をご紹介しました) 根本的な解決としては、Visual Basic Editor(VBE)の画面で、Ctrl+Fキー の同時押しなどで「DoCmd.SetWarnings」を検索したら、以下のように、 Falseに設定した後は必ずTrueに設定し直すようにコードを修正します。 (DoCmd.SetWarningsを使用している場所の全てで、です(汗)) 【現状の例】 Private Sub 削除_Click() '削除クエリを実行するコマンドボタンを想定 If MsgBox("削除を実行しますか?",vbYesNo) = vbNo Then Exit Sub DoCmd.SetWarnings False '確認メッセージの非表示化 DoCmd.OpenQuery "MQ1_初期化" '削除クエリ MsgBox "実行しました。" End Sub 【修正の例】 Private Sub 削除_Click() '削除クエリを実行するコマンドボタンを想定 'エラー発生時は「エラー処理」の行に飛ばす On Error Goto エラー処理 If MsgBox("削除を実行しますか?",vbYesNo) = vbNo Then Exit Sub DoCmd.SetWarnings False DoCmd.OpenQuery "MQ1_初期化" MsgBox "実行しました。" 終了処理: DoCmd.SetWarnings True '確認メッセージを表示する設定に戻す Exit Sub 'エラー処理に進ませないための対応 エラー処理: 'エラー発生時は、その内容をメッセージボックスで表示 MsgBox Err.Number & ":" & Err.Description 'エラー発生後も「終了処理」を通すことで、必ず「DoCmd.SetWarnings True」 'の処理を実行させる Resume 終了処理 End Sub 【説明】 修正前のコードでは、「DoCmd.SetWarnings True」を一切行っていないので、 確認メッセージは常に表示されなくなり、今回のご質問のように、保存確認 のメッセージまで省略される形になります。 また、修正前のコードで、「DoCmd.SetWarnings True」を「実行しました。」の メッセージの辺りに入れていた場合も、クエリに問題があるなどしてエラー が発生すると、そこで実行が中止されますので、「DoCmd.SetWarnings True」 が実行されなくなります。 こういったことを回避するために、エラー時の処理を、Accessの既定の動作に 任せる代わりに、「On Error Goto ~」によって、自作コードでエラーへの対処 (上ではメッセージの表示)を行った上で、その後に「DoCmd.SetWarnings True」 を必ず行わせるようにすることで、確認メッセージの表示設定がオフになった ままになるのを防いでいます。 ※マクロでの「メッセージの設定」では、確認メッセージの非表示化は、一連の マクロの終了と同時に元に戻りますが、VBAでは自分で戻さないと戻りません。 もしもマクロからVBAに移った方の場合、注意が必要です。 (私自身が、マクロから入ったクチ) ・・・長くなりましたが(汗)、以上です。
お礼
ありがとうございます。 >恐らく、フォームなどでVBAを使用されていて とか、状況がまさにそんな感じで、びっくりしました。
お礼
ありがとうございます。