Microsoft Access 掲示板

Access が重すぎて集計できません。

6 コメント
views
4 フォロー

今まで、Aceessでdsum, dcount を使用してクエリの集計をダイアログボックスに表示していましたが、先日会社のシステム変更により、常時mdbファイル が非常に重くなり、集計結果を表示出来なくなりました。パソコンが固まります。通常のクエリの実行も大変時間が掛かっています。そこで、mdbファイルはオンラインですので、ローカルな環境である、Excelにエクスポートして、excelでdsumを使い答えの値をValueで取得しダイアログボックス表示するしようと考えていますが、他にいい方法がありましたらご教授お願いいたします。

YS
作成: 2020/12/30 (水) 22:47:53
通報 ...
1
hatena 2021/01/03 (日) 11:56:55 修正

mdbファイルはオンラインですので、

オンラインとは具体的にどのようなことでしょうか。
イントラネット上にあるということでしょうか。

DSum, DCount は重たい処理ですので(特にネットワーク上で共有している場合)、別の方法を検討された方がいいでしょう。

例えば、下記のリンク先の方法で更新クエリで集計値をテーブルに格納しておくとか。

更新クエリで定義域集計関数を使わずに集計する - hatena chips

あるいは、必要なデータをローカルにテーブルとしてインポートして利用するとか。(わざわざエクセルにする必要はないでしょう。メリットは何もありません。)

2

ネットワーク上で共有しています。プロパティにオンラインとなっていた為、オンラインなのかと思っていました。フォームのボタンに集計結果をダイアログボックスに表示するコードを入れてありこのコードを再利用したいと思っています。となると後者の方法でしょうか?また、更新クエリを使う場合の方法のリンク先を貼って下さると助かります。宜しくお願い致します。

3

リンクを貼るのを忘れてました。前回の回答にリンクを追記しておきましたのでご参照ください。

ただし、この方法はテーブルに集計値格納用のフィールドを追加する方法ですので、共有しているファイルでテーブルデザインの編集ができる必要があります。

いままで、普通に使えていたのが、「会社のシステム変更」により著しく遅くなったとしたら、どのような変更をしたのか、それがどのように影響しているのか、の確認がまずは必要でしょう。

4

テーブルは、恐らくオラクルとのリンクテーブルになっており多くの端末で共有していると思います。ですので一個人の為にテーブルデザインを変える事は出来ません。私は、会社のシステムを扱う部署にいない為詳しく分かりませんが、オラクルサーバーのテーブルそのものを全く違うテーブルに変更しています。タスクマネージャーでは、何か分からない大量のタスクが夕方から昼にかけて起動しています。office 2000 からoffice2016に代わり負荷が掛かってレスポンス低下を招いている事も一因です。インポートもテーブルをインポートする際、接続エラーがでて一部のテーブルしかインポート出来ません。今は、私の作ったマクロが動かない為、事務の方がexcelにクエリをコピペしてsumで集計しています。この状況を打開する為、確実に動きそうなexcelにdaoでエクスポートを思い付きました。
もっと簡単な方法が有れば良いのですが。

5

インポートもテーブルをインポートする際、接続エラーがでて一部のテーブルしかインポート出来ません。

リンクテーブルでリンクできているなら、接続エラーにならずにインポートできると思います。
インポートがだめなら、リンクテーブルから追加クエリでローカルテーブルにデータ追加すればいいでしょう。

確実に動きそうなexcelにdaoでエクスポートを思い付きました。

daoで接続できるなら、エクスポート先はExcelでもAccessでも同じことでは?

6

集計結果を表示出来ない原因が参照先のクエリが開けなくなっていだ事が原因だと分かりました。社内SEが式に合わせる為、フィールド名を変更していた様で何処かでバグが起きて開けなくなっていました。開けるクエリと置き換え式のフィールド名を変えた所表示できました。今までと違い違うパソコンからそのクエリを開こうとするとodbc接続に失敗しましたというエラーがでたり色々分からない事が多いですが取り敢えず集計ボックス表示はできたので助かりますました。有難う御座いました。