問題タブ [database-reconciliation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
672 参照

sql - アクセス、VBA を使用して 2 つのレコードセット間でレコードを自動照合する

Access にデータベースがあり、Excel に別のテーブルがあります。

アクセス内で調整マクロを作成しようとしています。これにより、Excel で一致するエントリを持つアクセス内のすべてのレコードがマークされることが期待されます。Excel にもマークが付けられるので、どのレコードが一致しなかったかを手動で確認できます。

これまでに行ったことは、Excel テーブルを配列に変換し、それをレコードセット "ldict" に移動して、ワークシートの相互作用を減らし、うまくいけばマクロを高速化することです。

Access のテーブルでも同じことを行い、それをレコードセット "RS" に移動しました。

この時点で、ネストされたループを使用しています。ldict の各レコードを移動し、次に RS の各レコードをループして一致を見つけます。

一致が見つかった場合、RS にブール フィールド「CMN_REV」があり、一致したことを示すために TRUE に設定されます。

ldict では、一致したものの記録として、一致した PK_ID を RS からコピーします。

コードは完全に機能しますが、残念ながら遅すぎます。レコードセットごとに平均 10 万件のレコードがあり、数日ではないにしても数時間かかるようです。

ldict の各レコードに移動すると、RS の先頭を再びループします。

RSで一致するレコードが見つかったときに削除する可能性があるため、次のループで同じレコードを再度調べる必要はありませんが、これによりAccessのテーブルからも削除されると思います。

結合された SQL クエリを使用する方が高速であるという提案をいくつか読みましたが、これにアプローチして同じ結果を得る方法がわかりません。

誰にもより良い提案がありますか?

ありがとうございました。