プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
初心者です。
工場別の納期表を作りたいと思ってます。

作業1工場、作業1納期、作業2工場、作業2納期
というフィールドに、
A工場、B工場、C工場が
作業1工場と作業2工場のフィールドの区別なく入り、納期も付随してそれぞれ入ります。

(例えば、あるレコードではA工場が作業1工場、別のレコードでは作業2工場に入ったりします。
ちなみに、1レコードにA工場が作業1と作業2で両方入ることはありません。)

検索フォームで指定した工場のみのデータを作業1工場、作業2工場の両方のフィールドから抽出し、
できれば、レポートの同じ場所に表示し、納期日でグループ分けなどしたいと考えています。

クエリでやろうとしましたが、うまくいきません。
説明不足がありましたら、加筆します。
どうぞよろしくお願い致します。

A 回答 (3件)

No.1 です。


> 実際は
> where 工場 = [Forms]![F_2000納期表]![工場名入力]
> といれたいです。

ユニオンクエリは選択クエリを結合するものですから
その、それぞれが正しく動くようなものでなければいけません。
抽出条件のフィールド名は、もとのテーブルにあるものでなければいけませんから

where 作業1工場 = [Forms]![F_2000納期表]![工場名入力]
where 作業2工場 = [Forms]![F_2000納期表]![工場名入力]

をせれぞれの部分に記入します。

SELECT 作業1工場 AS 工場, 作業1納期 AS 納期
From 納期テーブル
where 作業1工場 = [Forms]![F_2000納期表]![工場名入力]
UNION ALL
 ・・・
という具合です。

ただし、Order By は最後に1つ記入し、その並びになります。
(前の方に書いても無視されます。)

ユニオンクエリは入門書にあまり詳しく書かれていませんから
参考までに。
http://office.microsoft.com/ja-jp/access-help/HA …
http://makoto-watanabe.main.jp/access/dasqlunion …

ユニオンクエリをサブクエリにして
抽出条件を1つで済ませる方法もありますが、
サブクエリは Access のバージョンによって
書き方が変わったりしますので
ここでは避けています。
必要でしたら、ご自分の環境に合わせて研究してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。出来ました。
もとのテーブルのフィールド名だったんですね。
すべて試したみたつもりが、まったく抜けていました。

order by もうまくいきました。
研究していきたいと思います。

本当にありがとうございました。

お礼日時:2011/01/17 17:41

単純に考えて、分解と結合の2アクションになるかと。



作業1工場、作業1納期、作業2工場、作業2納期

↓ 分解(2つのテーブルに諸条件でInsert)

作業1工場、作業1納期のデータ群

作業2工場、作業2納期のデータ群

↓ 結合(SelectでUnion)

工場、納期

それを分けて作るか、一つのSQLで作るかは自由だと思います。
他にもVBAを介して行うって方法もありますし。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

すみません、NO.1の方の検証でいっぱいいっぱいで・・・

やり方は似ていると思うのですが、あとで理解したいと思います。

お礼日時:2011/01/13 18:19

> クエリでやろうとしましたが、うまくいきません。



どんなクエリを作ってどんな結果になったか書くと
素早く良い回答が得られることが多いです。

この場合はユニオンクエリの出番です。

SELECT 作業1工場 AS 工場, 作業1納期 AS 納期
From 納期テーブル
UNION ALL
SELECT 作業2工場, 作業2納期
From 納期テーブル

これが基本形。
これにWhere条件を追加するか、
レポートを開くコードに Where条件を付けるとかですね。

なお、フィールド名の全角英数はトラブルの元です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

クエリでは抽出条件の設定だけと、レポートの表示の仕方でなんとかならないかと考えていました。
SQLも知らなかったので・・・

回答者様の式で見事にデータが結合されて入りました。
これにWHRER条件をとやってみたのですがまたうまくいきません。

SELECT 作業1工場 AS 工場, 作業1納期 AS 納期
From 納期テーブル
UNION ALL
SELECT 作業2工場, 作業2納期
From 納期テーブル
where 工場 ="A工場"
をいれたのですが、外注先のパラメータが出てきて
そこにデータを入れても入れなくても、作業1工場のデータがすべて出てきてしまいます。(空白のデータも含まれてます)
実際は
where 工場 = [Forms]![F_2000納期表]![工場名入力]
といれたいです。

ずっと調べていたのですが、where句の場所など入れ替えたりしたのですが、ここまでしかわかりませんでした。
すみませんがもう少しご教授して頂けた嬉しいです。

お礼日時:2011/01/13 18:15

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