みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access クエリ内のクエリ

クエリの中で、他のテーブルと一致するデータを抽出したいのですが、結果が0件の結果しかかえって来ません。
何処が間違っているのかお教え頂けたら幸いです。

何がしたいかと言うと、「dbo_VIEW_CIJ用売上伝票」の下記項目の中の「T_得意先」の中の抽出フラグのTrueデータを抽出し新しい「T_税抜」テーブルを作成したいのですが、結果は0件しかかえって来ません。
ちなみに、得意先CDのIN句を抜くとちゃんとデータは抽出されます。

《テーブル》
【dbo_VIEW_CIJ用売上伝票】(SQL Serverリンクテーブル)
・納品日付
・伝票NO
・得意先CD
・税抜金額
・消費税区分
・商品名
・摘要
・数量
・単位名
・単価
・金額

{T_得意先】
得意先CD
抽出フラグ(YES・NO型)

《抽出条件》
納品日 : >=#(開始日変数)# And #(終了日変数)#
消費税区分 : 1
得意先CD : IN(SELECT [T_得意先]![得意先CD] FROM [T_得意先] WHERE[T_得意先]![抽出フラグ]='True')

《SQL》
SELECT
dbo_VIEW_CIJ用売上伝票.納品日付, "" AS 部門コード,
dbo_VIEW_CIJ用売上伝票.伝票NO,
dbo_VIEW_CIJ用売上伝票.得意先CD, "" AS F,
dbo_VIEW_CIJ用売上伝票.税抜金額,
dbo_VIEW_CIJ用売上伝票.消費税区分, "" AS 商品CD,
dbo_VIEW_CIJ用売上伝票.商品名,
dbo_VIEW_CIJ用売上伝票.摘要, "" AS ケース数, "" AS 入数,
dbo_VIEW_CIJ用売上伝票.数量,
dbo_VIEW_CIJ用売上伝票.単位名,
dbo_VIEW_CIJ用売上伝票.単価,
[dbo_VIEW_CIJ用売上伝票]![消費税区分]*[dbo_VIEW_CIJ用売上伝票]![税抜金額] AS tmp小計,
[dbo_VIEW_CIJ用売上伝票]![数量]*[dbo_VIEW_CIJ用売上伝票]![単価] AS tmp単価計
INTO Tmp税抜
FROM dbo_VIEW_CIJ用売上伝票
WHERE
(((dbo_VIEW_CIJ用売上伝票.納品日付)>=#10/21/2013# And (dbo_VIEW_CIJ用売上伝票.納品日付)<=#11/20/2013#) AND
((dbo_VIEW_CIJ用売上伝票.得意先CD) In (select [T_得意先]![得意先CD] from [T_得意先] Where [T_得意先]![抽出フラグ] = True)) AND
((dbo_VIEW_CIJ用売上伝票.消費税区分)=1))
ORDER BY dbo_VIEW_CIJ用売上伝票.納品日付;
※上記SQL文は、SQLビューを記載してますが、デザインビューで作成し、得意先CDのIN句の部分は、得意先CDにビルドを使って入力しました。

参考にしたURL
http://office.microsoft.com/ja-jp/access-help/HA010206111.aspx
・サブクエリをクエリ フィールドの抽出条件として使用する

Access2010
Windows7

投稿日時 - 2014-01-19 10:35:42

QNo.8436507

困ってます

質問者が選んだベストアンサー

デザインビューで、得意先コードをSELECTする条件のうち、下記の部分がうまく動いていないのだと思います。

誤:[T_得意先]![抽出フラグ]='True'
正:[T_得意先]![抽出フラグ]=0

#ちなみに、Trueは0、Falseは-1と同義です

シングルクオートで括ってしまう('True')と、通常文字列として判断されてしまいます。
ただ、SQLビューで確認できるSQLでは、きちんとシングルクオートを外している(True)ようです。
さらに、上記SQLがエラーが出ている(型違いなど)訳でもなさそうなので、私の指摘の方向が誤っていることも考えられます。

一応、ご参考ということ、宜しくお願い致します。

投稿日時 - 2014-01-19 11:23:36

お礼

ありがとうございます、お教え頂いた「[T_得意先]![抽出フラグ]=0」で期待通りの抽出が出来ました。

投稿日時 - 2014-01-19 17:34:41

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> ちなみに、得意先CDのIN句を抜くとちゃんとデータは抽出されます。
IN の内のSQLのみ別クエリとして保存し実行したらどうなりますか?
select [T_得意先]![得意先CD] from [T_得意先] Where [T_得意先]![抽出フラグ] = True;
だけで。

テーブル名!列名で、テーブル名が長いとチェックしづらく無いですか?
T1やT2のような別名付けて正式名はFromにのみ残し、
SelectやWhereはT1やT2で修飾したほうがデバッグしやすいですよ

投稿日時 - 2014-01-19 14:05:03

補足

IN句の中を別クエリを作ると、期待通り抽出フラグにチェックを入れた業者のみ抽出されます。

《SQL》
SELECT T_得意先.[得意先CD]
FROM T_得意先
WHERE (((T_得意先.[抽出フラグ])=True));

投稿日時 - 2014-01-19 17:33:30

お礼

ありがとうございます。
No1の方のやり方で、期待通りの抽出が出来ました。

投稿日時 - 2014-01-19 17:34:01

あなたにオススメの質問