最速怪談選手権

クエリの中で、他のテーブルと一致するデータを抽出したいのですが、結果が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/HA …
・サブクエリをクエリ フィールドの抽出条件として使用する

Access2010
Windows7

A 回答 (2件)

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



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

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

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

一応、ご参考ということ、宜しくお願い致します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/01/19 17:34

> ちなみに、得意先CDのIN句を抜くとちゃんとデータは抽出されます。


IN の内のSQLのみ別クエリとして保存し実行したらどうなりますか?
select [T_得意先]![得意先CD] from [T_得意先] Where [T_得意先]![抽出フラグ] = True;
だけで。

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

この回答への補足

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

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

補足日時:2014/01/19 17:33
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/01/19 17:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す