背景情報:
10 を超える (そして増加している) リンクされたテーブルを含む ms access 2010 データベースを取得しました。ソースは「ダーティ」であり、追加のコードを含む挿入クエリを使用してそれらをクリーンアップし、後でパフォーマンスを向上させるためにインデックスを付けてローカルテーブルにレコードを保存します。ローカル テーブルは、最初に削除クエリで空にされます。挿入クエリはAfter Insert: LogEvent
、USysApplicationLog のローカル テーブルにデータ マクロと共に記録されます。データ マクロは USysApplicationLog に大量のレコードを生成しますが、挿入ごとにテーブルごとに 1 つで十分です。未解決の問題ですが、現時点ではそれほど重要ではありません。
ローカル テーブルは、接尾辞「-local」が付いたリンク テーブルと同じ名前を持ちます。
例: csvMachines / cvsMachines-local、csvCustomers / csvCustomers-local など。
現時点では、手動ですべてをチェックし、すべてのクエリを実行しています。しかし、これをさらに自動化する方法を探しています。
ローカル テーブルでデータベースを使用する前に、次のことを確認します。
- ローカル テーブルは最新
であり、USysApplicationLog および UDF 関数を照会してソースの変更日を確認することで、この種をカバーしています。 - ローカルテーブルはここで私の質問の理由で満たされています
次の作業クエリを組み合わせるスマートな方法 (sql、vba、または udf) を探しています
SELECT MSysObjects.NAME AS LinkedTableName
,[LinkedTableName] & "-local" AS LocalTableName
FROM MSysObjects
WHERE (((MSysObjects.DATABASE) IS NOT NULL));
単純なSELECT count(*)
ローカル テーブル名ごと。
以下を試しましたが、Access は LocalTableName をテーブルとして見つけることができません。
SELECT MSysObjects.NAME AS LinkedTableName
,[LinkedTableName] & "-local" AS LocalTableName
,(
SELECT count(*)
FROM [LocalTableName]
) AS LocalTableRecordCount
FROM MSysObjects
WHERE (((MSysObjects.DATABASE) IS NOT NULL));
Create table - dynamic name of tableおよびMS Access query with dynamic from statementなどの古い同様の質問を見ましたが、私の状況でそれらのソリューションを実装する方法がわかりませんでした。