設計の問題点と解決手法は hatenaさんが完璧な回答をなさっているので、あくまで補足として。
フィールドの名前に記号や予約語が含まれる
TableNameフィールドに
カレントデータベースに存在しないテーブル名が誤って記述されていた場合、
DLookupを使った演算フィールドはエラーになる
という理由で、SQLは念入りに記述したほうがいいかもしれないですね。
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] IN ( 1, 4, 6 )
;
通報 ...