mayu
2021/09/26 (日) 20:21:02
ef559@34308
テーブルが同じ構造の複数のCSVの場合を教えて頂けないでしょうか。
リンク元となっているファイルの種別をCSVに限定したいということでしたら
MSysObjects テーブルの connect フィールドあたりを参照すればいいでしょう。
( 厳密な判定なら他のシステムテーブルも併用する必要がありそうですが面倒です )
テーブルはCSVで特定のパスにあります。
同様に、MSysObjects テーブルの database フィールドの値を参照すればいいでしょう。
SELECT [name] as リンクテーブル名
, foreignname as 参照元ファイル名
, [database] as リンク元のパス
, [connect] as ファイルの種類
FROM msysobjects
WHERE [type] IN ( 4, 6 )
;
といった感じで各フィールドの値を確認した後、
任意の抽出条件を指定すればいいのではないでしょうか。
例えば、CSVリンクテーブルに限定して Lookup するのでしたら、以下のような感じになるでしょう。
SELECT x.TableName
, x.[item#] As item
, dlookup(
"[qty]"
, "[" & x.TableName & "]"
, "[item#] = '" & x.[item#] & "'"
) As qty
FROM Search x
INNER JOIN MSysObjects y
ON x.TableName = y.[Name]
WHERE y.[Type] = 6
AND y.[connect] Like '*FMT=Delimited*'
AND y.foreignname Like '*[#]csv'
;
ちなみに、DLookUp関数を使ったクエリは
Searchテーブルのデータが 1,000 件程度でも画面のちらつきと重さが半端ないですね。
扱うデータ件数が20万ということですと、運用構築とも
どんなに高性能な端末であっても、ちょっと現実的ではないと思います。
通報 ...