- ベストアンサー
ACSESSでのデータの抽出方法について教えてください
- 注文番号が同じで完成日がすべて入力されているデータを抽出する方法を教えてください。
- データ抽出方法についてアドバイスをお願いします。注文番号が同じで完成日がすべて入力されているデータをフォームに表示させたいです。初心者レベルのVBAです。
- ACSESS2000を使用している際のデータ抽出方法についてアドバイスをお願いします。注文番号が同じで完成日がすべて入力されているデータをフォームに表示させる方法を教えてください。初心者レベルのVBAです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 う~ん、質問が間違っていましたか・・・・ では、こんな形でどうでしょうか? 1.元テーブルから「完了日」が入っていない(Null)のものを抽出し、「注文番号」でグループ化したクエリー(a)を作成する (これは前回と同じです) 2.元テーブルとクエリー(a)で不一致クエリー(b)を作成。(比較は「注文番号」) 表示する項目は「注文番号」「担当会社」「処理日」の3項目で良いです。 ウィザードで作った方が早いので、設定した後に一旦保存して下さい。 不一致クエリー(b)をそのまま開くと注文番号が"2"と"4"のものが表示されるはずです。 3.不一致クエリー(b)を再度デザインで開き、以下の設定を追加 ・「処理日」の「抽出条件」に「Is Null」を設定 ・ツールバーの「クエリ(Q)」から「クロス集計(B)」を選択。 ・再度、ツールバーの「クエリ(Q)」から「選択(S)」を選択。 ・集計の欄が全て「グループ化」になっていると思いますが「処理日」と「注文番号(クエリー(a)」の集計を「Where条件」に変更。 ・「処理日」の「表示」にチェックが入っていると思いますのでチェックを外して下さい。 ・これで設定終了ですので、保存して下さい。 これで、注文番号:"4"が表示されるはずです。 また何かあれば、補足をお願いします。 ではでは・・・
その他の回答 (3)
SELECT 注文番号, 担当会社 FROM TABLE GROUP BY 注文番号, 担当会社 HAVING Count(注文番号) = Count(完成日)
- paz777
- ベストアンサー率47% (77/163)
こんにちは。 >>まず、「完了日」の入っていない(Null?)のものを抽出し、注文番号でグループ >>化したクエリー(a)を作って下さい。 > >この際、「注文番号」の他の項目はすべて「最大」などの表示でよろしいでしょ >うか? このクエリー(a)では、注文番号以外の項目は不要です。 他の項目は無くても良いですし「最大」でも「最小」でも「先頭」でも構いません。 >>次に、今作ったクエリー(a)と元テーブルでクエリー(a)の注文番号が無い元テー >>ブルの不一致クエリー(b)を作って下さい。 > >クエリー(a)と元テーブルで不一致クエリー(b)を作成するのですね。 >(注文番号が無い元テーブルとはなんでしょうか?) はい。その通りです。 日本語が少し変でした。すみません。 >その際、「関連付けるフィールド」は「注文番号」でいいのでしょうか? 「注文番号」で良いと思います。 ではでは・・・
補足
paz777さん、何度もありがとうございました。 どうしてもうまくいかないため最初から見直していましたところ、 私の質問の仕方が間違っていたようです。 正しくは 同じ「注文番号」の中で「完成日」がすべて入力されているにも係らず、 処理日が入力されていないものを抽出したい ということでしたm(__)m ↓の例ですと「注文番号4」のみが該当します。 本当に申し訳ございません。 お時間がありましたらアドバイスお願いいたします。 注文番号 完成日 担当会社 業務 No. 処理日 1 2003/12/1 A社 01 1 2003/12/2 A社 04 1 A社 05 1 2003/12/7 A社 11 2 2003/12/10 B社 32 2004/1/5 2 2003/12/30 B社 47 2004/1/5 2 2003/12/14 B社 02 2004/1/5 2 2003/12/9 B社 03 2004/1/5 2 2003/12/22 B社 12 2004/1/5 2 2003/12/5 B社 30 2004/1/5 3 2003/12/17 C社 56 3 C社 22 3 2003/12/17 C社 78 4 2003/12/3 D社 39 4 2003/12/9 D社 68 4 2003/12/10 D社 80 4 2003/12/20 D社 82 4 2003/12/11 D社 88
- paz777
- ベストアンサー率47% (77/163)
こんにちは。 余り難しく考えることはないですよ。 処理は遅いかも知れませんが、クエリーだけで対応できると思います。 まず、「完了日」の入っていない(Null?)のものを抽出し、注文番号でグループ化したクエリー(a)を作って下さい。 次に、今作ったクエリー(a)と元テーブルでクエリー(a)の注文番号が無い元テーブルの不一致クエリー(b)を作って下さい。 後は、不一致クエリー(b)で注文番号と担当会社をグループ化すれば、希望するデータが抽出できると思います。 一度、お試しください。 ではでは・・・
補足
paz777さん、さっそくの回答ありがとうございました。 ちょっとうまくいかないのですが、 >まず、「完了日」の入っていない(Null?)のものを抽出し、注文番号でグループ化したクエリー(a)を作って下さい。 この際、「注文番号」の他の項目はすべて「最大」などの表示でよろしいでしょうか? >次に、今作ったクエリー(a)と元テーブルでクエリー(a)の注文番号が無い元テーブルの不一致クエリー(b)を作って下さい。 クエリー(a)と元テーブルで不一致クエリー(b)を作成するのですね。 (注文番号が無い元テーブルとはなんでしょうか?) その際、「関連付けるフィールド」は「注文番号」でいいのでしょうか? お手数ですが、もう一度アドバイスをよろしくお願いします。
お礼
paz777さん、何度もありがとうございました。 実際のデータベースの構成はもっと複雑なので悪戦苦闘しましたが、おかげさまでなんとかうまく抽出できたようです。 ただし、 >1.元テーブルから「完了日」が入っていない(Null)のものを抽出し、「注文番号」でグループ化したクエリー(a)を作成する で、クエリー(a)を「注文番号でグループ化」するとうまくいかず、これをやめたらうまくいきましたが、大丈夫でしょうかね? とにかくホントにありがとうございました! また何かありましたらぜひよろしくお願いします。