![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
環境:ACCESS 2000 Win 2000
ACCESSで顧客データベースを作成しています。
・顧客データの件数は約6,000件
・テーブルの数は19
・テーブルのみのデータベースAとそのテーブルからリンクをしてデータを抜いてきているデータベースBとAのテーブルのみをリンクしているデータベースCがある
・Aにはテーブルのみで、データを蓄積する目的のみに使用
・Aはローカルではなくサーバー上にある
・Bはデータ入力用で複数の人で使う場合もある
・Cは別のソフトからAのデータを呼ぶためにある
上記の状態でBの入力用データベースを触っているのですが、フォームの保存やフォームを開くときなどにすごく時間がかかります。長いときは4・5分かかってしまいます。
このようにACCESSのレスポンスが悪くなるのはどういうことに原因があるのでしょうか?
あまり詳しい状況の説明ができていなくて、分かりにくいかと思いますが、どなたか教えてください。
No.2ベストアンサー
- 回答日時:
何か、フォーム側の処理で重い事をしているのでしょうかねぇ。
例えば、インデックスが効かない様な重いクエリを作ってしまって、その結果を表示させたりしてるんじゃないでしょうか。
あるいは、クエリ中でテーブルの結合の仕方をミスって、すんごい量のレコードを引っ張ってくるようになってしまっているとか。
そうであれば、クエリの部分を出来るだけ軽くすればいいんですよね。
あとは、ネットワークに流れるデータ量を最小にすることです。高々6千件のデータ量であっても、複数人数が同時に使うとなると、かなりのトラフィックになります。
レコードソースにテーブル名を指定しただけの単純なフォームだと太刀打ちできないかもしれません。(だって、フォームを開いたすべての人に、要りもしないデータを6千件、送りつけるんですよ。)
もし入力専用のフォームでしたら、プロパティの「データ入力用」を設定してやればいいでしょう。
入力も照会もというのであれば、例えば、こんな感じにするといいでしょう。
まず、検索用フォームと表示/入力用フォームとを分けて作ります。
表示/入力用フォームは常にデータを1件だけ表示するようにします。(顧客No等で絞り込んだSQLを、フォームのレコードソースに設定します。)
フォームに他の人のデータを表示したいときには、
検索用フォームを起動して、条件で絞り込んで検索→該当する人を一覧表示(*1)→その中から一人を選ぶ→選んだ人を表示するようなSQLを組み、表示用フォームのレコードソースに設定する。
ってな感じでしょうか。
*1:絞込みをする際に、Top句を使用すれば、大量のデータが返ってくるような検索条件を指定されても、重くなる前に対処できます。
まずは、重いクエリを軽くすること、次に、ネットワークのトラフィックを最小にすること。この二つを行えば、かなり快適になると思うんですが。
クエリの見直しをしたら、かなり早く動くようになりました。
あとはネットワークに流れるデータ量の方も最小にできるよう頑張ってみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータを更新したらそ...
-
「バリアント型でない変数に Nu...
-
前のレコードの値を自動で入れたい
-
Accessフォームが入力できません。
-
access別のテーブルを参照して...
-
access ダブリ登録を防止したい
-
アクセスのテキストボックスで
-
ACCESS2000の帳票フォームでテ...
-
アクセスのフォームの必須項目...
-
Accessのフォームでデータ入力...
-
アクセスでコードを入れると名...
-
インデックスまたは主キーにはn...
-
ACCESSで定型入力の〒が表示さ...
-
ACCESSでフォームのチェックボ...
-
Access サブフォームでの選択行...
-
エクセルで、抽出したデータだ...
-
Access チェックボックスを利用...
-
ACCESS 複数のフォームから同一...
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
インデックスまたは主キーにはn...
-
Accessフォームが入力できません。
-
access別のテーブルを参照して...
-
入力した値をコンボボックスに...
-
ACCESSでフォームのチェックボ...
-
テキスト型のフィールドでハイ...
-
ACCESS フォームで入力データ...
-
AccessVBAの値によっ...
-
アクセスでコードを入れると名...
-
「バリアント型でない変数に Nu...
-
アクセスのフォームの必須項目...
-
access ダブリ登録を防止したい
-
Accessのフォームでデータ入力...
-
ACCESSで定型入力の〒が表示さ...
-
accessでオプションボタンを使...
-
Accessで、最後(更新)にエラ...
-
Accessで、オートナンバー型を...
-
ACCESS2000の帳票フォームでテ...
おすすめ情報