- ベストアンサー
ACCESSのエラー
WINXPでACCESS2000を使っています。まだ初心者です。 アンケートの入力をするようなデーターベースを作成し、複数の人が 使ってい入力をしています。その方々がWINXPを使っているかは わかりません。 そうすると、人によって 「強制終了」または「レコードが大きすぎます」のメッセージが出たり、 「open formの実行はキャンセルされました」という エラーメッセージがでて、入力が進まず、今まで入力したものも保存され と、色々不具合が生じてしまうようです。 設計自体がやはり悪いのでしょうか? また、普通ACCESSを閉じると自動的に保存されるはずが 保存されない!と言う人もいます。 とっても困っています。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> テーブルをひとつにしてしまっていることで > 何か不具合(強制終了など)が要因はあるのでしょうか? 恐らくフォームは「連結フォーム」を使っていると思います。 となると、レコードソースにテーブル名をそのまま入れていれば、例えフォーム上に40ぐらいのテキストボックスしかなくてもフォームの見えないところでは256のフィールドを抱えてしまうのではないでしょうかね。 常に256フィールドの値を保持している。 しかもフォーム上の移動ボタンでレコードを前後に移動でき、フォームは「編集可能」のフォームである。 この状態、Win9x系では破綻しやすいんです。 データシート形式のフォームを作成してレコードを表示し、下方向にスクロールさせてみてください。 一気にリソースが減るかと思います。(Win95の時はフリーズしちゃいました) Excelもそうなのですが、レコード数(行数)よりもフィールド数(列数)のほうがファイルサイズや動作スピードに与える影響が大きいのです。
その他の回答 (4)
- O_cyan
- ベストアンサー率59% (745/1260)
スタンドアロンでAccessを使用してDBに入力している状態なら 他の人達のOSや環境に結構依存してしまうと思います。 例えばWin98でAccess2000を使うとメモリ不足になる傾向が高いとか・・。 リソースが50を切ると不安定になりやすいとか・・。 その辺が原因のエラーだと思います。
お礼
早速の回答、ありがとうございます。 >Win98でAccess2000を使うとメモリ不足になる傾向が高いとか・・。 >リソースが50を切ると不安定になりやすいとか・・。 理由がわかって対処ができます。 O_cyanさんは以前にもお世話になっていましたよね。 今回もありがとうございました!!
【使用状況】 ・何台かのPCにAccess2000をインストールし、Access2000で開発したMDBファイルをれぞれのPCに配ってローカルで使用している。 ・各々のPCはOSのバージョンがバラバラである。 ・フィールド数が256に達している ・フォームを閉じるイベントでマクロを呼び出し、そのマクロで何らかの処理を行なっている。 【不具合状況】 ・強制終了する。 ・「レコードが大きすぎます」のメッセージが出る。 ・「Open Formの実行はキャンセルされました」というメッセージが出る。 ・Access終了時に自動保存される(何が自動保存されるはずなの?)はずがされないケースがある。 これってメモリ不足とかリソース不足じゃないですか? フィールドを限界まで使い切ってしまうと言うことは設計に無理があるのではないでしょうか。 ユーザーは1回の編集作業で256フィールド分の入力をおこなうのですか? もし「何度かの編集作業で256フィールド分のデータが埋まる」And「その編集区切りはある程度固定である」というような法則があるのでしたら、 tbl01Main tbl02Phase01 tbl02Phase02 tbl03Phase03 というように、1レコードの核となるフィールドをメインテーブルに格納し、それ以外の何グループかのフィールドは別テーブルに格納。 tbl01Mainとtbl02Phase01、tbl01Mainとtbl02Phase02、tbl01Mainとtbl03Phase03をそれぞれIDフィールドかなにかで1対1のリレーションで結び付けてはどうでしょうか。 テーブルを分けたからと言って、フォームに全フィールドを持ち込んでは今までと同じですから、フェーズごとにフォームもわける、と。 こんなところでどうでしょうか。
お礼
早速の回答、ありがとうございます。 >Access終了時に自動保存される(何が自動保存されるはずなの?)はずがされ>ないケースがある。 そうなのですか。閉じると、いつも保存されしまい「あ~間違えた!」 と言うことが、あったのでACCESSは閉じれば必ず保存されてしまうのか と勝手に思ってしまいました。 勉強します! >これってメモリ不足とかリソース不足じゃないですか? #1のO_cyanさんも同じことをおっしゃっていました。 理由がわかりました。 >フィールドを限界まで使い切ってしまうと言うことは設計に無理があるので>はないでしょうか。 そうですね。テーブルをしっかり分けたいと思います。 >こんなところでどうでしょうか。 使用状況なども書いていただいて 今度からは、こう書くとわかりやすいですよね。 気をつけます。 ありがとうございました。
補足
お礼を言った後にで申し訳ありませんが >ユーザーは1回の編集作業で256フィールド分の入力をおこなうのですか? いえ。使いません。 ですので、テーブルを分けたほうがよかったですよね。 そこで、質問なのですが フォームは何種類かあって 1フォームには、40フィールドぐらいを使用しています。 テーブルをひとつにしてしまっていることで 何か不具合(強制終了など)が要因はあるのでしょうか? 宜しくお願い致します。
- O_cyan
- ベストアンサー率59% (745/1260)
>複数の人が使ってい入力をしています どの様な状態で使っているのですか?サーバーにデータベースを置いてLANで繋いでですか? Accessは各PCにインストールしてあるのですか?
補足
言葉が足りず申し訳ありません。 1つのデーターベースを複数の人に配って 個々の人がそれぞれのPCで入力している状態です。 ACCESSは各PCにインストールされています。 宜しくお願いいたします。
- mnabe
- ベストアンサー率33% (427/1283)
Access のファイルを複数の人で”同時”に使用する事はできません。どうしても、複数で利用したい場合には、データベース部分にはMSDEを使って、Access はフロントエンドだけにする等の策が必要です。 それを踏まえて・・・。 エラーメッセージは正確に記述してください。また、問題なければ前後のソース(モジュール)を記載して下さい。 設計が悪いと思うのでしたら、設計(どう考えているのか)を記述して下さい。
補足
言葉が足りず、申し訳ありません。 1つのデーターベースを複数の人に配って 個々の人がそれぞれのPCで入力している状態です。 >エラーメッセージは正確に記述してください。 そうですよね。申し訳ありません。 フォームで入力して、フォームを閉じるというボタンを押すと 今まで、エラーが出たことがなかったのに 「closeアクションの実行がキャンセルされました」 と出てしまいます。そのエラーがでると、右上の×を押しても 閉じれません。 モジュールと言ってもアクセスのマクロの「フォームを閉じる」 を使用しただけなのです。 なので、設計と言うほどのものでなかったです。 関係ないかも知れませんが テーブルの項目数は全て使いました。 宜しくお願いいたします。
お礼
ありがとうございます。ACCESSの設計自体に無理があったようです。 かなり大変なことですが、もう一度作り直してみるつもりです。 色々なアドバイスをいただき皆様ありがとうございました。