• 締切済み

Accessが不良です

現在アクセスを使用しているのですが、正常に立ち上がりません。 起動時の設定をしているのですが、実行しないでアクセスだけが立ち上がります。    最適化を実行すると Microsoft Accessを終了できません。 OLEまたはDDEを使うVisual Basic モジュールを実行している時は、モジュールの実行を中断する必要があります。  というメッセージが出ます。 OSはXPで、ACCESSは2000です。 尚、パソコンは自作です。 ファイルサイズは 64MBあり、フォームの数はサブフォームをいれると50ぐらいあります。 よろしくお願いいたします。

みんなの回答

noname#182251
noname#182251
回答No.7

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1910185 で#5の方法は試されたでしょうか?

schako
質問者

お礼

返事がまた遅れてしまいました。 この方法は試してみましたが、やはりダメでした。 アクセスの環境については、近いうちに新しいパソコンでOffice Pro 2003 でやるしかないのかな と思っています。 いろいろとありがとうございました。 なお、#6のお礼も今回でさせていただきます。

noname#182251
noname#182251
回答No.6

特殊な状況だと考えます。原因を切り分ければ 1.PCが壊れている 2.OSが壊れている 3.アクセスが壊れている 4.MDBの中に異常な部分が紛れ込み除去できない など。1.2.及び3.はPCを変更してみることで確認できるでしょう。4.は最適化の方法で何かあったような気がしますが、現在判りません。 ところで、この「教えて!goo」は、質問が古くなると、読む人は激減します。多分、貴「補足」も、読んでいるのは私だけでしょう。現状をまとめ直して、新質問された方が良さそうです。蛇足かもしれませんが(^^;

noname#182251
noname#182251
回答No.5

何とも酷い開発状況のようで、同情いたします。私であればとっくに投げ出していると思います。 で、アドバイスできることはほとんどない(長いことアクセス開発環境は使用していないし、それ以前もウィザードは使ったことがない)のですが。 >他のデータベースへ移行して、VBでやるしかないのか 「他のデータベースへ移行」する必要は必ずしもないと考えます。私の場合フロントエンドはデルファイでDBはMDB(Jet)を使用しています。複雑なSQL文はアクセスのクエリで作成、試験後SQVビューでテキストに直しています。他の方法は知りませんが、取り敢えず満足しています。 ともかくDBを替えなければ、部分的に他言語に移行してゆくことができるので、そこら辺にメリットがありそうです。 ところで、今夜から一週間ほど旅に出るので、その間は反応できませんのであしからず(^^;

schako
質問者

お礼

返事が遅くなり失礼しました。 現在は、DBを分割して、処理を続行しております。 フォームとクエリの入ったDBのサイズは55MBです。 適当にフォームを作ってファイルサイズを100MBぐらいにしてみたのですが、OKでした。 問題は、DB間のオブジェクトコピーにもありました。 モジュールに作成したものを、他のデータベースにコピーすると、コピーされたDBが死んでしまうというのは何とも言いようがありません(情けないです、情けない限りです)。 最初はフォームのコピーだけだと思っていましたが... 何度も何度も回答を頂きありがとうございました 

noname#182251
noname#182251
回答No.4

>以前作られたDBのサイズはいくらぐらいでしたのでしょうか? 更に、データとそれ以外(フォームやクエリ)の割合はどのぐらいでしょうか MDB     A     B サイズ   11.5mb 6.8mb テーブル 57 40 フォーム 58 63 レポート 13 20 でした。 >フォームを削除してもコードが残ってしまうのです アクセス自体のバグである可能性もありそうです 以前、完全にデータとフォーム、クエリ、レポートを分離したアプリケーションを作成したことがあります >テーブルの変更も頻繁に出てくるし、 二つのMDBを、同時に開いておきます。テーブルの設計変更は、そのままリンク側に反映されます。ほとんど一つのMDBを操作しているのと同じ感じです >レコードセットにクエリーを使おうとすると これも、リンクテーブルと自前のテーブルで、クエリ側から見て差はありません

schako
質問者

お礼

またまた早速の回答ありがとうございます。 テーブル数やフォーム数はあまり変わりませんね。 私のにはレポートはありません。 帳票は、アクセス側からCSVデータを吐き出し、更にEXCELを呼び出して、Excelで作成しています。 フォームを削除してもコードが残る件ですが、前述したように、リンクフィールドを2つ使ったもので、サブファイルはフォームに無くてもレコード上にあれば問題ないのですが、親のフォームには、そのリンクフィールドがないとエラーになるようなのです。ウィザードで作成する時、元になるテーブルやクエリーを選択しても、非連結で使っているからかな、と思います。 DBは作成中なので、これを忘れて、DBを、保存してしまいます。 そうすると、次回、立ち上げると 早速 「イベント プロパティに指定した式 開く時 でエラーが発生しました。 ファイルへのアクセスでエラーが発生しました。 ネットワークへの接続が切断されている可能性があります。」 と、出ます。 更に、コードを開こうとすると、 「ファイルへのアクセスでエラーが発生しました。 ネットワークへの接続が切断されている可能性があります。」 と、出て、 コードを修正しようとしても、修正することが出来ないのです。  で、実際にはサーバーを共有して、アクセスを動かすのですが、ネットワークへ接続しなくても、正常に動いているフォームはいくらでもあるので、このエラーの意味がわからず、とても苦労しました。 いや、まだ苦労しています。   このエラーが出ると、もう、このDBは修正不可能になるので、前に戻るしかなく、最新のバックアップを使って、もう一度やり直す、という事を何度も繰り返してきました。    エラーになるのは、DBを作成中なんだから、当然なはずなのに、修正できないなんていうのは、アクセスのバグですよね。    この問題を解決しない限り、これ以上増やすのは限界で、後は、他のデータベースへ移行して、VBでやるしかないのか、と思っています。    で、私のフォームのコードの総数なんですが、42本で、スペース行は抜いて、コメント行も含めれると、ステップ数は16000行ぐらいあります。多いので1454行、500行を越えるものが11本あります。  このぐらいでは、限界じゃないと思っているんですが....

noname#182251
noname#182251
回答No.3

#2です。最近はアクセスのフォームをほとんどいじっていないので、あまりお役に立てそうもありませんが(^^; 1.過去に関わったものを調べたところ、フォーム数58と63のものがありました。当時勤務していた会社で、日常的に使用していたものですが、ご質問のようなトラブルは記憶にありません 2.こまめにバックアップを取っておられるようですが、「問題発生前」と「後」での差を分析できないのでしょうか? 3.#3のお礼で、フォームとデータ(テーブル)を分けることを考えておられましたが、これを進めてゆけば「フォーム群」とデータにできる、要するに関連の深いフォームをひとまとめのMDBにして、これを複数使用することはできないのでしょうか?上手く行けばメンテナンスも楽になるかも。

schako
質問者

お礼

早速、また回答を頂いてありがとうございます。 ちなみに、以前作られたDBのサイズはいくらぐらいでしたのでしょうか? 更に、データとそれ以外(フォームやクエリ)の割合はどのぐらいでしょうか? 今回の、アクセスに関しては、今までに無い現象がありました。 それは、フォームを削除してもコードが残ってしまうのです。 そうすると、もう更新が出来なくなってしまいました。  原因は正確には分からないのですが、そのフォームは、決まってサブフォームを取り込んでいて、前述したように連結キーが2つあったのですが、その設定が上手くいっていなかったフォームでした。  今回も、不要なフォームをとりあえず外そうとして、同じようなフォームを削除したら、同じエラーとなってしまいました。  フォームとテーブルの分割は考えましたが、システムが確立するまでは、テーブルの変更も頻繁に出てくるし、レコードセットにクエリーを使おうとするとDBをコード内で別に指定する必要があったような気がしたし、テーブルをリンクすると、バックアップの取り方にも工夫が必要なので、却って面倒くさくなると思い、落ち着いてからやろうと思っていました。

noname#182251
noname#182251
回答No.2

説明されていることから状況を推定すると 1.起動時の設定によるモジュール(?)がエラーを起こしている 2.何らかの理由でこのモジュールは終了できない 3.それ故に最適化できない(モジュールを実行している時は、モジュールの実行を中断する必要があります) なので、「起動時の設定」をやめて、最適化できないでしょうか? >フォームのDBのサイズに制限があるような気がしますがどうなのでしょうか? 根拠を示して否定はできませんが、通常あり得ないと考えます。

schako
質問者

お礼

回答ありがとうございます。 今度、同じような事が起きたら、「起動時の設定」をやめて、最適化をしてみます。 これからも、更にフォームが増える予定です。 その対応として随時バックアップを取っておき、いつでも前に戻れるようにして置こうと思っています。  ですが、前回までは、余計なフォーム(コピーしてとっておいたものが殆どですが)を削除して対応してきましたが、現在は、すべて必要なものばかりです。    フォームのサイズに制限がないとすれば、フォームの作り方、コードの書き方に問題があるとしか考えられないですよね。  ちなみに、サブフォームはすべて2つのフィールドを連結しています。 

回答No.1

別のAccessファイルを作り、全てのテーブル、クエリ、フォーム等をインポートしてもう一度起動時の設定をしてみては。

schako
質問者

お礼

やはり、その方法しかないのですか? 数が多いので大変なんです.... フォームのコードの頭に Public で Recordset を定義していますが、今はテーブルをそのままなんです。 これを、実際に使用するフィールドだけのクエリにするとファイルサイズが小さくなるんでしょうか? 現在は、バックアップを取ってあるので、いらないフォーム等を削除して、最適化を行い、それに更新をかけて少しでも小さくしています。 でも、これだと直ぐにでも「保存できない」状況になりそうです。 100MBぐらいのDBはざらにあると聞いていますが、現在は、フォームとテーブルを一緒に入れてあります。 これを分割した場合、 データだけのサイズは大きく出来ても、もう一方のフォームのDBのサイズに制限があるような気がしますがどうなのでしょうか?

関連するQ&A

  • クエリデザインを試みるとタスクがフリーズする

    今、Access 2010 32ビット版をインストールして使用しています。いつの頃から他の機能は正常だが、作成~クエリ・デザインをクリックするとその時点でフリーズし、クリックするとエラー音を返すだけで終了もできません。 タスクバーで ACCESS を右クリックし、ウィンドウを閉じるを選択するとエラー・メッセージが表示されます。「Microsoft Access を終了できません。 OLE または DDE を使う Visual Basic モジュールを実行しているときは、モジュールの実行を中断する必要があります。」 タスク・マネージャからタスク終了させるしかありません。 既存のクエリー編集は正常、テーブル・フォーム・レポートの新規作成も正常です。クエリーの新規作成だけができません。 このメッセージはどの MDB でも等しく発生します。ACCESS をいったん削除して再インストールしましたが症状は変わりません。 どなたかお知恵を拝借出来れば助かります。 よろしくお願いします。

  • ACCESSフォームのテキストボックスで指定と違うフォントで表示される

    Windows2000+ACCESS2000です。 ACCESSのフォームでテキストボックスのフォントを「MSゴシック」に設定しているにもかかわらず、実行すると「MSPゴシック」として表示されてしまいます。 このフォームは別のフォームのサブフォームなのですが、サブフォームを単体で実行しても、メインフォーム内のサブフォームとして実行しても、「MSPゴシック」で表示されてしまいます。 このときメインフォーム内で「MSゴシック」に設定しているところはちゃんと「MSゴシック」で表示されています。 原因と対処方法がわかる方、いらっしゃいますでしょうか。

  • Accessのナビゲーションフォームについて質問で

    Accessのナビゲーションフォームについて質問です。 ナビゲーションフォーム→ナビゲーションフォーム→メインフォーム→サブフォーム この最後のサブフォームを モジュールから呼びたく、 どのように記述すれば良いでしょうか?

  • OLE又はDDEを使うVISUAL BESICモジュールを実行している時は…と表示されます

    以前、下記の質問をさせていただいた者です。 教えていただいた方法を実行中に、別の問題が発生したため 新規に質問スレを立てさせていただきました。 バッチ処理をすると(Accessの)ldbが残ってしまいます ⇒ http://okwave.jp/qa5148407.html ------------------------------------------------------------------- OLE又はDDEを使うVISUAL BESICモジュールを実行している時は モジュールの実行を中断する必要があります ------------------------------------------------------------------- というエラーメッセージが表示されてしまいます。 (1)AccessのMDBファイルを直接叩く  → AoutExecで起動~作成~終了まで動作し、問題なく終了しました。 (2)元ネタのコピー~AccessのMDB起動までを含むBatファイルを叩く  → 「OLE又はDDEを使うVISUAL BESICモジュールを実行している時は     モジュールの実行を中断する必要があります」    と表示され途中で止まりました。 (2)の症状の場合 ・新規にMDBを作成しデーブル等をインポートし直す ・最適化する などの方法があるようですが…。 (1)ではエラーメッセージが表示されることもなく 終了できているので原因が不明です。 モジュールで途中停止することがなくなれば 先に質問させていただいた「ldbが残ってしまう」問題も 解決できそうな気がします。 ゜。.o。─* 補足 *─。o.゜。─**─゜。.o。─**─。o.゜。 ●前提 Accessバージョン: MS Access 2003 サーバのOS: Windows Sever 2003 R2 MDBファイルについて  サイズ: 2,772KB  最適化: 閉じるときに最適化(ツール→オプションで設定済) ----- ●前回の質問と変更した点 1.バッチファイル内の処理順番 <変更前> (1)別サーバからAccessで使うデータをコピーする (2)Accessを起動し、ファイル読込→CSV出力 という一連の処理をする (3)出力されたCSVファイルをバックアップフォルダにコピー&リネームする (4)バックアップフォルダの中身を最新2週間分残して削除する   ↓ <変更後> (3)前日に出力されたCSVファイルをバックアップフォルダにコピー&リネームする (4)バックアップフォルダの中身を最新2週間分残して削除する (1)別サーバからAccessで使うデータをコピーする (2)Accessを起動し、ファイル読込→CSV出力 という一連の処理をする としました。 Accessの処理が終わらないうちに次のバッチ処理が始まるからでは? という指摘を受けたからです。 2.ファイル形式の変更 Accessのファイル形式を「2000」→「2002-2003」に変更しいました。 実際に動かしているサーバにインストールされているのが、Access2003だからです。

  • Accessのサイトを教えてください。

    Access2002を使用してます。 「Access逆引き大辞典」のようなサイトを教えてください。 このような本は出版されていますが、Webサイトで見たいのですが… 例えば… 疑問【フォームで、検索するようなフォームをには?】 回答【サブフォームをつくる良い。その方法は…】 等のような、調べるようなサイトです。 どうぞよろしくお願いいたします。

  • access2003で質問です

    access2003初心者です。 下記サイトを参考にして、サブフォームと親フォームを連携させたリストを 作ろうとしています。 http://www.happy2-island.com/access/gogo03/capter40002.shtml データを更新、削除などしたい場合に、 サブフォームからで操作するだけでなく、親フォームからも操作できるようなものを 作りたいです。 どういった設定をすればよいか、教えていただけないでしょうか。

  • アクセスで、OLEサーバーもしくは・・というエラーがでます。

    マイクロソフトアクセス2000でデータベースを作成していますが、フォームにサブフォームを組み込んでいます。今まで順調に入力できていたのですが、突然「OLEサーバーもしくはActiveXと通信しているときにエラーが発生しました OLEサーバーを終了し単独でアプリケーションを起動してから、同じ操作をしてください」とでて、入力を続行すると、リンクフィールドに値が入力されません。 ちなみに、同じパソコンで、他のサブフォームを使っているフォームを使用すると、問題なく動きますが、このファイルを他のパソコンにコピーしても、同じエラーがでます。

  • アクセス2007でのエラー

    初めてアクセス使用してます。アクセス2007でマクロ実行でエラーが出て困っています。 「マクロ式またはVisual Basicコードで参照されている'***'フォームが見つかりません。」 後記として、'***'のフォームがないかコンパイルエラーかと表示されています。 '***'の名のフォームは存在しますので、どうしていいのかわかりません。アクセス自体をインストールし直すと正常に動作します。 素人作なので初歩的、根本的なミスなのかもしれませんが、良い方法があればお願いします。

  • Access2010 帳票サブフォームで

    Access2010 SP1を使用しています。 帳票サブフォームを含むフォームを作成しています。 1.そのフォームを開いている時、VBAで実際のフォーカス(カーソルがあって直接入力できる位置)が メインフォームにあるかそれともサブフォームにあるかを判断する方法はありませんでしょうか? メインで入力中でもRequery時などで、サブフォーム内のコントロールでEnterイベントが起きてしまい、 本当はサブフォーム内でカーソルが当たって入力する時だけに実行したい処理が動いてしまうのです。 そこでサブのイベントの方にメインで入力中は実行せず、サブで入力している時のみ実行するよう IFで分岐を入れたいのですができますでしょうか? 2.フォームフッタを含む帳票サブフォームでレコードソースが0件の時、 そのフッタにあるテキストボックスへのEnter時にSelLengthやSelStart、Textプロパティが実行できません。 Enter時なのに「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」 と出てしまうのです。 0件でなければエラーが出ないのですがどうすれば出るようになるのでしょうか?

  • アクセスでauto_openは使えない?

    エクセルの場合は、ブックを開いたと同時にマクロを実行させたい時は、 auto_openと言うマクロを標準モジュールに作れば可能ですが、 アクセスVBAの標準モジュールに、auto_openというプロシージャーを作って、 アクセスを再起動しても何も起こりません。 アクセスにおいて ファイルの起動と同時にマクロを実行させたいのなら、 どこかのフォームのOpenイベントに実行させたいコードを記載して、 起動時の設定で、そのフォームを選択するしかないのでしょうか?