2015年2月13日金曜日

[MSAccess] クエリの入力には、1つ以上のテーブルまたはクエリが必要です

SELECT 句にサブクエリが含まれると、エラーとなる場合がある。

(エラーとなるサンプル)
SELECT
  Now As 日付,
  (SELECT Price FROM テーブル1 WHERE code='0001') As 時価

エラーメッセージ:[3067] クエリの入力には、1つ以上のテーブルまたはクエリが必要です。

Access SQL では、こういう場合に無用なダミーテーブルを準備する必要はない。ただし迂回策として、サブクエリの代わりに DLookup 関数を使う方法がある。

(修正したSQL)
SELECT
  Now As 日付,
  DLookup("Price", "テーブル1", "code='0001'") As 時価


■ 参考資料

[ACC2003] DLookup() の使い方、例、トラブルシューティング
http://support.microsoft.com/kb/285866/ja