【Access】クエリ抽出結果をデータシートからコピー時、時間がかかる(遅い)改善対策

Access

「AccessのデータシートビューからExcelに張り付けているけど、コピーに時間がかかるので改善できない?」というご相談。

現状調査

解析すると、フォーム中のサブフォームでデータシートビューが埋め込まれており、そのデータシートは2つのSQLServerのビューのリンクをクエリで結合されていました。
データシートビューの表示速度に関してはストレスは無いので、特にクエリに対しては負荷もかかっていないようで問題は無さそうです。

データシートビューに割り当てされているクエリを単体で実行後、データをコピーするとやはり劇的に遅い事が確認されました。
更にデータを開いたまま、エクスポートの確認。
メニュー[外部データ]-[Excelスプレッドシートにエクスポート]から、[書式設定とレイアウトを保持したままエクスポート]のチェックを外してエクスポートすると、一瞬で出力されます。
逆に[書式設定とレイアウトを保持したままエクスポート]のチェックを入れてエクスポートすると、データシートビューのコピーと同様に遅い事が確認されました。

原因は判明したものの・・・

整理すると、
[書式設定とレイアウトを保持したままエクスポート]のチェックOFFは早い。
[書式設定とレイアウトを保持したままエクスポート]のチェックONは遅い。
データシートのコピーは、自動的にONの状態でコピーされているものと思われます。

解決はどうするか

コードやマクロを組んで[書式設定とレイアウトを保持したままエクスポート]のチェックOFFでエクスポート対応させようと試してみましたが、どうやら対応されていないようです。
もう一度サブフォーム内のプロパティのデータを確認しながら眺めていると、データセットが標準のダイナセットになっていました。
今回のビュー表示は更新もなく、リアルタイム性も不要なのでスナップショットに変更しました。

まとめ

更新不要なデータシートでExcel等へ出力される場合は、スナップショットへの変更がおすすめです。
標準ではダイナセットになっている為、設計や運用時に見極めて使い分けをすればいいでしょう。

コメント