Microsoft Access 掲示板

テーブルをテーブルから指定するSQL / 6

6 コメント
views
4 フォロー
6

テーブルが同じ構造の複数の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万ということですと、運用構築とも
どんなに高性能な端末であっても、ちょっと現実的ではないと思います。

通報 ...