• ベストアンサー

バッチ処理をすると(Accessの)ldbが残ってしまいます

≪ 質問 ≫ batファイルをタスクで動かして、早朝にAccessを動かしファイル生成しています。 ファイル自体は、正しく生成されているのですが [Accessファイルの名称].ldb というldbが残ってしまいます。 不要なldbなので削除しようとしても、 「誰かがAccessを利用中」という理由で削除できません。 (タスクマネージャでプロセスを終了し、削除しています) Batファイルから、AutoExecで起動したAccessを正しく終了させるには どうすれば良いですか? ≪ 動かしているサーバ ≫ ・Windows Sever 2003 R2 ・Microsoft Office Access 2003 ≪ 処理内容 ≫ 1. 別サーバからAccessで使うデータをコピーする 2. Accessを起動し、ファイル読込→CSV出力 という一連の処理をする 3. 出力されたCSVファイルをバックアップフォルダにコピー&リネームする 4. バックアップフォルダの中身を最新2週間分残して削除する ※1~4の処理はそれぞれ別のbatファイルに記述していますが  タスクに登録する都合上、1個のbatファイル内で「call」で順番に  呼び出して処理しています。 ≪ 心当たり? ≫ Accessを動かしているサーバにインストールされているのは Access2003なのですが、このmdb自体はAccess2000で作成しました。 このため、「Access 2000 ファイル形式」のままで Access2003で動かしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.3

終了が正しく組み込まれているとなると、あとは原因箇所のきり分けが必要になります 現在の情報量だけでは回答が難しいです 試せる事は以下の通りです、確認をしてみてください。 ■Step01(手動BAT起動) 手動でBATを起動しldbファイルが残るか確認する →残る場合は、Step02へ →残らない場合は、予想回答01へ ■Step02(手動BAT起動) AutoExec内のアクションを全部一旦削除し(バックアップ忘れずに)、 終了アクションだけにして動作確認しldbファイルを確認する →残る場合は、予想回答02へ →残らない場合は、Step03へ ■Step03(手動BAT起動) AutoExec内のアクションを全部一旦削除し(バックアップ忘れずに)、 アクションを1つずつ組み込みつつ(終了アクションはつけて置く) 動作確認しldbファイルを確認する →残る場合は、予想回答03へ →残らない場合は、予想回答04へ ■予想回答01 →手動BAT起動でldbが残らないという事は、自動スケジューラ(タスク)等の  方でなにかしらの悪さをしてるとしか思えない  (例えるなら2重に起動しているとか) →必要情報:さらに細かい実行状況の情報がないと回答が難しい  BATの中身や、BATを実行するタスク情報などの情報が必要になってくる ■予想回答02 終了アクションだけで残るとなるとACCESS自体がおかしいと思われる MDBファイル自体が破損しているかもしれないので新規MDBを作成し 今あるMDBの中身を全てインポートし、新規MDBで試してみる これで同じ結果なら、ACCESSを再インストールするか、心当たりに記載している バージョンにあげるなどしてみる ■予想回答03 組み込んだそのアクションが悪さしているとわかる 必要情報:そのアクションの情報が必要 ■予想回答04 ひとつづアクションを追加していって残らなくなったという事は AutoExecマクロが壊れていた事がわかる、これで保存し本来の動作確認を してみてください、正常に動作すると思われます。

rurineko
質問者

補足

教えていただいた切り分け作業中に、別の問題が発生してしまいました。 どうやら、Accessが正常終了せずldbが残ってしまうのは、そちらの問題が原因のようです。 問題の要点が異なってしまいましたので 新規に質問スレを立てさせていただくことにしました。 http://okwave.jp/qa5161676.html 色々と教えていただきありがとうございます。 とても勉強になりました。 完全に解決しないまま、こちらのスレッドを閉めてしまうことご容赦下さい、。

その他の回答 (2)

  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.2

No1回等以外で考えられる要素で、原因ですが AutoExecに記載された処理は >2. Accessを起動し、ファイル読込→CSV出力 という一連の処理をする 部分だと思いますが、 ここで終了が記載されてませんが、ちゃんとAutoExecマクロの最後に 終了を組み込んでいるのでしょうか? 文章からではこれが原因かなと考えてしまいます 終了が組み込まれていないからldbファイルが残ってしまう 終了が組み込まれているなら、終了オプションは何を選択しているのか 確認する必要があります ※終了オプション:確認,すべて保存,終了 そのあたりを調べれば解決できるかと思います

rurineko
質問者

補足

No1の方の補足にも書かせていただいたのですが Accessマクロの最終行は アクション: 終了 オプション: 終了 と設定しています。 Accessを直接叩くと正常に終了するので バッチではAutoExecを起動させる処理だけをしているのですが…。

  • Kazma_hk
  • ベストアンサー率26% (115/428)
回答No.1

Accessを起動→CSV出力した後にAccessがクローズされないで、プログラム(バッチ処理)が終了しているのではないでしょうか? Accessの使用が終わったらファイルをクローズしてください。

rurineko
質問者

補足

Accessをクローズですか? AoutExecで起動しており、マクロの最終行に  アクション: 終了  オプション: 終了 にしています。 その指定方法ではAccessは終了しないのでしょうか? バッチではなく直接Accessを叩くと CSV出力後に勝手に終了するのですが…。

関連するQ&A