2

私は現在、6 個の Excel スプレッドシートにリンクしています。主な理由は、ユーザーが Excel でデータを編集する方が簡単で優れているためです (彼らは Access を使用したことがありません)。また、新しい列が追加された場合など、変更はすぐに反映されます。その後、クエリですぐに使用できるようになります。

しかし、このデータをインポートする代わりにリンクすると、パフォーマンスが低下するのでしょうか? 私のクエリの中には、1 ~ 2 分と遅いものもあれば、クエリを保存するだけで 2 ~ 3 分かかるものもあります。データベースが開かれるたびにこれらのシートの新しいバージョンをインポートするように Access を設定するにはどうすればよいですか?

4

3 に答える 3

2

リンクされたスプレッドシートのパフォーマンスに関してすぐに思い浮かぶ 4 つの要因があります。

  1. ネットワーク性能
  2. スプレッドシートのリンクの数 (約 6 とおっしゃいました)
  3. クエリの複雑さ
  4. データセットのサイズ (人々が定期的に編集する場合、おそらく 10,000 行をはるかに下回ると推測されます)

クエリの保存が遅いことが多いことを考えると、私の推測では、#1 が主なボトルネックです。はい、インポートではなくリンクを使用するとパフォーマンスにわずかな影響がありますが、ユースケース (データセットが小さく、リンクが多すぎない) では、このペナルティは非常に小さくなります。一方、低速のネットワークでは、Access データベース自体への変更の保存を含め、すべての操作が遅くなります。

于 2012-11-27T21:37:16.187 に答える
1

データの自動更新を含め、上記の問題をほぼ解決したため、最終的な解決策を示します。

tblStoreDetails、tblPromotions など、クエリで使用する適切な Access テーブルを用意する

スプレッドシートを使用してデータを維持します。これは、Access でフォームやフロント エンドを作成せずにこれらを更新/表示する最も柔軟な方法であるため、他の誰もデータベースを使用しないため、実際には時間の価値がありません。直接。

ExcelStoreDetails、excelPromotions など、Access 内のこれらのテーブルへのリンク

Access テーブルを空にする削除クエリと、リンクされた Excel テーブルの行を Access テーブルに追加する追加クエリを使用して、起動時に実行される Autoexec マクロを設定します ([マクロを有効にする] ボタンがクリックされた場合)。

これにより、テーブルの削除/再インポートによって引き起こされる問題を回避できます。主に、それらはすべて未割り当てオブジェクト グループに分類されます。または、インポート仕様を使用しようとして、タイプの不一致が発生します。

于 2013-01-09T09:28:41.037 に答える
0

ADODB 接続を介して Excel ファイルに接続し、ADODB.recordset で開くことができます。とても速いです。実際、「実際の」データベースへの接続と同じくらい高速です。

このようなソリューションを実装できるかどうかは、クエリをレコードセットに「変換」できるかどうかによって異なります。レコードセットを生成し、その内容を画面 (またはレポート) に表示するためのコードを作成する必要があるため、VBA および ADODB オブジェクトに関する十分な知識が必要です。

于 2012-11-27T12:47:35.157 に答える