• ベストアンサー

ACCESSのエラー

WINXPでACCESS2000を使っています。まだ初心者です。 アンケートの入力をするようなデーターベースを作成し、複数の人が 使ってい入力をしています。その方々がWINXPを使っているかは わかりません。 そうすると、人によって 「強制終了」または「レコードが大きすぎます」のメッセージが出たり、 「open formの実行はキャンセルされました」という エラーメッセージがでて、入力が進まず、今まで入力したものも保存され と、色々不具合が生じてしまうようです。 設計自体がやはり悪いのでしょうか? また、普通ACCESSを閉じると自動的に保存されるはずが 保存されない!と言う人もいます。 とっても困っています。 宜しくお願い致します。

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

  • ベストアンサー
noname#102878
noname#102878
回答No.5

> テーブルをひとつにしてしまっていることで > 何か不具合(強制終了など)が要因はあるのでしょうか? 恐らくフォームは「連結フォーム」を使っていると思います。 となると、レコードソースにテーブル名をそのまま入れていれば、例えフォーム上に40ぐらいのテキストボックスしかなくてもフォームの見えないところでは256のフィールドを抱えてしまうのではないでしょうかね。 常に256フィールドの値を保持している。 しかもフォーム上の移動ボタンでレコードを前後に移動でき、フォームは「編集可能」のフォームである。 この状態、Win9x系では破綻しやすいんです。 データシート形式のフォームを作成してレコードを表示し、下方向にスクロールさせてみてください。 一気にリソースが減るかと思います。(Win95の時はフリーズしちゃいました) Excelもそうなのですが、レコード数(行数)よりもフィールド数(列数)のほうがファイルサイズや動作スピードに与える影響が大きいのです。

katakko
質問者

お礼

ありがとうございます。ACCESSの設計自体に無理があったようです。 かなり大変なことですが、もう一度作り直してみるつもりです。 色々なアドバイスをいただき皆様ありがとうございました。

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

スタンドアロンでAccessを使用してDBに入力している状態なら 他の人達のOSや環境に結構依存してしまうと思います。 例えばWin98でAccess2000を使うとメモリ不足になる傾向が高いとか・・。 リソースが50を切ると不安定になりやすいとか・・。 その辺が原因のエラーだと思います。

katakko
質問者

お礼

早速の回答、ありがとうございます。 >Win98でAccess2000を使うとメモリ不足になる傾向が高いとか・・。 >リソースが50を切ると不安定になりやすいとか・・。 理由がわかって対処ができます。 O_cyanさんは以前にもお世話になっていましたよね。 今回もありがとうございました!!

noname#102878
noname#102878
回答No.3

【使用状況】 ・何台かの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のリレーションで結び付けてはどうでしょうか。 テーブルを分けたからと言って、フォームに全フィールドを持ち込んでは今までと同じですから、フェーズごとにフォームもわける、と。 こんなところでどうでしょうか。

katakko
質問者

お礼

早速の回答、ありがとうございます。 >Access終了時に自動保存される(何が自動保存されるはずなの?)はずがされ>ないケースがある。 そうなのですか。閉じると、いつも保存されしまい「あ~間違えた!」 と言うことが、あったのでACCESSは閉じれば必ず保存されてしまうのか と勝手に思ってしまいました。 勉強します! >これってメモリ不足とかリソース不足じゃないですか? #1のO_cyanさんも同じことをおっしゃっていました。 理由がわかりました。 >フィールドを限界まで使い切ってしまうと言うことは設計に無理があるので>はないでしょうか。 そうですね。テーブルをしっかり分けたいと思います。 >こんなところでどうでしょうか。 使用状況なども書いていただいて 今度からは、こう書くとわかりやすいですよね。 気をつけます。 ありがとうございました。

katakko
質問者

補足

お礼を言った後にで申し訳ありませんが >ユーザーは1回の編集作業で256フィールド分の入力をおこなうのですか? いえ。使いません。 ですので、テーブルを分けたほうがよかったですよね。 そこで、質問なのですが フォームは何種類かあって 1フォームには、40フィールドぐらいを使用しています。 テーブルをひとつにしてしまっていることで 何か不具合(強制終了など)が要因はあるのでしょうか? 宜しくお願い致します。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>複数の人が使ってい入力をしています どの様な状態で使っているのですか?サーバーにデータベースを置いてLANで繋いでですか? Accessは各PCにインストールしてあるのですか?

katakko
質問者

補足

言葉が足りず申し訳ありません。 1つのデーターベースを複数の人に配って 個々の人がそれぞれのPCで入力している状態です。 ACCESSは各PCにインストールされています。 宜しくお願いいたします。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

Access のファイルを複数の人で”同時”に使用する事はできません。どうしても、複数で利用したい場合には、データベース部分にはMSDEを使って、Access はフロントエンドだけにする等の策が必要です。  それを踏まえて・・・。  エラーメッセージは正確に記述してください。また、問題なければ前後のソース(モジュール)を記載して下さい。  設計が悪いと思うのでしたら、設計(どう考えているのか)を記述して下さい。

katakko
質問者

補足

言葉が足りず、申し訳ありません。 1つのデーターベースを複数の人に配って 個々の人がそれぞれのPCで入力している状態です。 >エラーメッセージは正確に記述してください。 そうですよね。申し訳ありません。 フォームで入力して、フォームを閉じるというボタンを押すと 今まで、エラーが出たことがなかったのに 「closeアクションの実行がキャンセルされました」 と出てしまいます。そのエラーがでると、右上の×を押しても 閉じれません。 モジュールと言ってもアクセスのマクロの「フォームを閉じる」 を使用しただけなのです。 なので、設計と言うほどのものでなかったです。 関係ないかも知れませんが テーブルの項目数は全て使いました。 宜しくお願いいたします。

関連するQ&A

  • access2003のエラーについて!!

    access2003のエラーについて!! ACCESSでデータを入力中に突然テーブルのレコードが「レコード削除された」のメッセージが表示され、レコードが消えてしまいました。 また、フォームでは、レコードが表示されていないにもかかわらず、データが表示されます。 新規にレコードを作製しようとしても「レコードは削除されています」のメッセージが表示され、 作成できません。 この状態を、元に戻す方法はないでしょうか?

  • エクセルのテンプレートを保存するときに。

    WinXP、Excel2002を使っています。納品書テンプレートに、ユーザ設定で、自分の会社のデータを入力し、「ファイル」メニューから「名前をつけて保存」を選択すると、必ず、「このブックの内容はレコードとしてデータベースに保存されていません。処理を選択してください」というメッセージが表示されます。選択肢として、「新しいレコードを作成する」と「更新せずに表示する」とありますが、どちらを選べばいいのかわからないので、「キャンセル」を選んでいます。キャンセルを選んでも保存はできているみたいなので、違いを知っている方がおられましたら、詳しく教えていただきたいと思います。宜しくお願いいたします。

  • Access97で新しいレコードが入力できない

    ちょっと困り果てました。 今まで何も問題なくテーブルの追加が行えていた アクセス97のデータベースなんですが、 おとといから突然新しいレコードを追加できなくなって しまったのです。 もちろん、データベースにはセキュリティーを いっさい掛けていません。 現象の詳細を簡単にまとめると・・・ 問題のデータベースは・・・ ・開くことができる ・テーブルとフォームの参照ができる。 ・ファイルサイズは700kB程度なので、容量の限界が  原因ではない。 ・アクセス97の不具合ではない  (友達のパソコンで開いても同じ症状がでるので) ・見かけ上で新規レコードの追加ができる。 ・レコードの追加をした後、上書き保存のボタンを  押してもエラーメッセージはでてこない。  ただし、ディスクアクセスのランプはついていないので  どうやら保存されていないようだ。 ・レコードの追加をした後ファイルを閉じることも、  アクセスを終了することもできるが、上書き保存の  確認メッセージがでてこない。 以上です。 おそらく私が気づかないうちに、どこかの 設定をいじってしまったものと考えていますが、 どうやって直せばよいのかわかりません。 お手数おかけしますが、よいアドバイスがありましたら 教えてください。 [ End of Message ]

  • Accessでのエラー

    Access修行中の身で、勉強をかねて書類BOXのデータベースを作成中です。 親テーブルのフィールド  ID(主キー、オートナンバー)、タイトル名、・・・・・、保存箱ID 子テーブルのフィールド  保存箱ID(主キー、オートナンバー)、保存箱名、・・・・ リレーション  親:保存箱ID-子:保存箱ID という構成です。 クエリで以下のような複合テーブルを作成し、 複合テーブルのフィールド  ID(主キー、オートナンバー)、タイトル名、・・・、保存箱名、・・・・ データを入力しようとすると、「レコードを追加できません。テーブルの結合キーがレコードセットにありません。」というエラーがでます。また、保存箱IDに入力のないレコードは、抽出されません。 どのようにしたいかというと、保存箱IDは入力しなくてもいいフィールド(関連させなくてもよいデータ)にしたく、複合テーブルで保存箱名を入れると、子テーブルに新たにレコードが追加されるようにしたいです。 できれば、SQLを使用せずに解決したいと甘えておりますが、無理でしょうか。

  • ACCESS2000 テーブルを分けてアンケートを集計するには?

    いつもお世話になっております。 WINXPでACCESS2000SR-1を使用し、 現在、アンケートを集計するデータベースを作成しています。 アンケート項目(フィールド)は、255近くあるので テーブルを何種類かに分けてデータベースを作ろうと思います。 例えば Aテーブルには「名前」 B,C,Dテーブルにはアンケートの回答を入れようと思います。 この場合、Aのレコードに対してB,C,Dのレコードを関連付けるにはどうしたらよいですか? また、クエリーでテーブルを合体すれば良いのですが フィールド数が多いためダメです。 宜しくお願い致します。

  • [Access]削除時のエラーメッセージを変更

    クライアント側にMicrosoft Access 2010、サーバ側にSQL Server 2008 R2を使った業務ソフトを開発しています。 少々込み入った質問をしますが、お付き合いください。 帳票フォームである列のデータをdeleteキーで削除しようとすると、 「DELETEステートメントはREFERENCE制約"xxxx"と競合しています。競合が発生したのは、データベース "zzzzz"、テーブル"yyyyy"です。」 というメッセージが出ることがあります。 このメッセージですが、子レコードを持つレコードを消そうとした時に出ることはわかっています。 今回、このメッセージを出さずに、「子レコードを消してから親を消してね」というメッセージに差し替えたいと考えています。 既定のメッセージはシステム的でわかりづらいので。 しかし、イベントプロシージャで上記メッセージを感知する方法がわかりません。 Private Sub Form_Delete(Cancel As Integer) ~~~~~ End Sub というサブプロシージャの中でどうコードを書くか色々調べたのですが、 どうやってもメッセージは出てきてしまいます。 Err.Numberも0と表示されます。 通常のエラーではないので、感知することはできないのでしょうか。 ご存知の方はアドバイスお願いします。

  • Accessデータ入力について

    Access2000です。 フォームにてデータ入力をしており、以下の処理をしたいと思っています。 **** 1レコードの入力が終わってENTERで格納する前にメッセージを表示する。 メッセージのOKを選択するとレコードがテーブルに格納される。 キャンセル等を選択するとそのレコードはテーブルに格納せず削除される。 マクロでやってみたのですが、初心者なのでよくわかりませんでした。 力を貸してくださいませんか。

  • access で「open formの実行はキャンセルされました」

    初めまして。初心者ですが、フリーの顧客管理ソフトをダウンロードしてaccess2000にて顧客情報を入力していたところ、「open formの実行はキャンセルされました」と出て、入力がこれ以上できなくなりました。ヘルプ等で見ても解らず困っています。既に300人ほど入力したので、出来れば続けて入力したいので、どうか宜しくお願い致します。これだけの説明では無理でしょうか?accessもこの度、初めて使います。

  • Access2010で、名簿を作って使っています

    Access2010で、名簿を作って使っているのですが。 Access2010で、名簿を作って使っているのですが、 普通の単票形式で、フォームを作って、そこで新規登録したり閲覧したりしています。 その人の顔写真を1データごとに1枚ずつ載せているのですが、 970件を超えたあたりで、いきなりファイルが壊れます。 先に写真以外のデータ(すべて文字)は入力を1000件以上しても、普通に動作しました。 最後に写真だけ貼る作業をしたのですが、970件を超えたあたりで必ず壊れるので、写真が関係あるのかなあ、と勝手に思いまして…。 症状としては、写真を貼って「次のレコード」の繰り返しで貼る作業をしていたのですが、 必ず970件を超えたあたりで「次のレコード」ボタンを押したときに「指定したレコードに移動できません。」と表示されます。 そうなると、もうレコードを移動できません。 仕方がないので閉じようとすると「データベース"を開くことができません。アプリケーションで認識できないデータベースであるか、またはファイルが破損しています。」と出て、 「このレコードを保存できません。」と出ます。 「はい」を押すと強制的に閉じれるのですが、もう一度そのファイルを開くと 「レコードは削除されています。」と出ます。 そしてフォームは開けません。 開こうとすると「レコードは削除されています。」と出ます。 一番メインのテーブルを開いて中を見てみると、 写真が貼れなくなった人(指定したレコードに移動できません。)と表示された時の人のデータが 全項目「#Deleted」になっています。 この症状に身に覚えがある方、 解決方法を知っていらっしゃる方、 おりましたらぜひ、ご教授ください…。 よろしくお願いします。

  • Accessのデータベースの容量見積もり

    Access2007でデータベースを設計しようとしています。 利用者がレコードを追加していくタイプのもので、ファイル形式はAccess2000です。 ファイルサイズが2GBを超えないように最大件数などを決めていきたいのですが、何件データを入れると大体どのくらいのサイズになるかというのは、どういう計算で求めればいいのでしょうか? ちょっと試しにデータを入力してみると、実際に入力したデータ量と比べてファイルサイズはかなり大きくなっていて、単純にフィールドサイズの合計×レコード件数で求めるというわけではないみたいで困っています。 よろしくお願いします。

専門家に質問してみよう