- ベストアンサー
[Excel ADO]条件にマッチした伝票の出力
- Excel2007 ADOを使って売上伝票の条件にマッチした伝票の出力方法について教えてください。
- 売上伝票の条件に合致する明細を含む伝票全体を取得する方法について教えてください。
- 検索対象を含む売上伝票の伝票番号リストを取得した後、日付と番号でWHERE句を使用するか、EXISTSなどを使用するかについて教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のようにして下さい。 SELECT T_売上.* FROM T_売上 WHERE ((([伝票日付] & "##" & [伝票番号]) In (SELECT 伝票日付 & "##" & 伝票番号 as 式1 FROM T_売上 WHERE 取引先='A社' AND 商品名='鉛筆' GROUP BY 伝票日付,伝票番号))); 伝票日付と伝票番号を連結した物を使って「WHERE ~~ IN (サブクエリ)」で抽出しています。 連結時に「##」を挟んでいる理由は、挟まずにそのまま連結してしまうと 日付 番号 2016/7/1 123 2016/7/11 23 というデータがあった場合、連結結果が、どちらの場合でも 2016/7/1123 になってしまい、2つの違いを区別できなくなるからです。 なので、連結結果が 日付 番号 連結結果 2016/7/1 123 ⇒ 2016/7/1##123 2016/7/11 23 ⇒ 2016/7/11##23 となるように「データに出現しない文字を間に挟む」のです。
その他の回答 (2)
- msMike
- ベストアンサー率20% (364/1804)
ADOって何のこと? ActiveX Data Objects のこと?
補足
その通りです 私もまだまだ勉強中ですが、すごく便利ですね
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 「1つの伝票」の集合体は「T_売上」というテーブルとして、 「含まれる複数明細」はどこ? 前提条件の説明が不足しているので分かりにくいです。 EXSISTSとかJOINとか、条件によって何が使えるのかどうかかと思います。
お礼
コメントありがとうございます
補足
端折りすぎでした。申し訳ございません T_売上内のひとつのレコードが以下のようになっており、 伝票日付,伝票番号,明細番号,商品名・・・ ある伝票番号の伝票に含まれる複数明細は、 明細番号を連番したレコードです
お礼
文字列として連結し、ユニークなキーにするのですね (連結時の留意点まで示していただき感謝です) それをそのままWHERE IN のリストに渡す、と 意図した結果が得られました。ありがとうございます。