複数のフィールドから検索し、択一表示

このQ&Aのポイント
  • 複数のフィールドから検索し、指定した工場のみのデータを作業1工場、作業2工場のフィールドから抽出する方法を教えてください。
  • 初心者ですが、クエリで複数のフィールドから検索し、指定した工場のみのデータを択一表示する方法を教えてください。
  • 工場別の納期表を作成するため、作業1工場と作業2工場のフィールドから指定した工場のデータを検索し抽出する方法を教えてください。
回答を見る
  • ベストアンサー

access 複数のフィールドから検索し、択一表示

お世話になります。 初心者です。 工場別の納期表を作りたいと思ってます。 作業1工場、作業1納期、作業2工場、作業2納期 というフィールドに、 A工場、B工場、C工場が 作業1工場と作業2工場のフィールドの区別なく入り、納期も付随してそれぞれ入ります。 (例えば、あるレコードではA工場が作業1工場、別のレコードでは作業2工場に入ったりします。 ちなみに、1レコードにA工場が作業1と作業2で両方入ることはありません。) 検索フォームで指定した工場のみのデータを作業1工場、作業2工場の両方のフィールドから抽出し、 できれば、レポートの同じ場所に表示し、納期日でグループ分けなどしたいと考えています。 クエリでやろうとしましたが、うまくいきません。 説明不足がありましたら、加筆します。 どうぞよろしくお願い致します。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.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/HA010206109.aspx http://makoto-watanabe.main.jp/access/dasqlunion.htm ユニオンクエリをサブクエリにして 抽出条件を1つで済ませる方法もありますが、 サブクエリは Access のバージョンによって 書き方が変わったりしますので ここでは避けています。 必要でしたら、ご自分の環境に合わせて研究してください。

akakak123
質問者

お礼

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

その他の回答 (2)

  • MRT1452
  • ベストアンサー率42% (1392/3296)
回答No.2

単純に考えて、分解と結合の2アクションになるかと。 作業1工場、作業1納期、作業2工場、作業2納期 ↓ 分解(2つのテーブルに諸条件でInsert) 作業1工場、作業1納期のデータ群 作業2工場、作業2納期のデータ群 ↓ 結合(SelectでUnion) 工場、納期 それを分けて作るか、一つのSQLで作るかは自由だと思います。 他にもVBAを介して行うって方法もありますし。

akakak123
質問者

お礼

どうもありがとうございます。 すみません、NO.1の方の検証でいっぱいいっぱいで・・・ やり方は似ていると思うのですが、あとで理解したいと思います。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

> クエリでやろうとしましたが、うまくいきません。 どんなクエリを作ってどんな結果になったか書くと 素早く良い回答が得られることが多いです。 この場合はユニオンクエリの出番です。 SELECT 作業1工場 AS 工場, 作業1納期 AS 納期 From 納期テーブル UNION ALL SELECT 作業2工場, 作業2納期 From 納期テーブル これが基本形。 これにWhere条件を追加するか、 レポートを開くコードに Where条件を付けるとかですね。 なお、フィールド名の全角英数はトラブルの元です。

akakak123
質問者

お礼

ありがとうございます。 クエリでは抽出条件の設定だけと、レポートの表示の仕方でなんとかならないかと考えていました。 SQLも知らなかったので・・・ 回答者様の式で見事にデータが結合されて入りました。 これにWHRER条件をとやってみたのですがまたうまくいきません。 SELECT 作業1工場 AS 工場, 作業1納期 AS 納期 From 納期テーブル UNION ALL SELECT 作業2工場, 作業2納期 From 納期テーブル where 工場 ="A工場" をいれたのですが、外注先のパラメータが出てきて そこにデータを入れても入れなくても、作業1工場のデータがすべて出てきてしまいます。(空白のデータも含まれてます) 実際は where 工場 = [Forms]![F_2000納期表]![工場名入力] といれたいです。 ずっと調べていたのですが、where句の場所など入れ替えたりしたのですが、ここまでしかわかりませんでした。 すみませんがもう少しご教授して頂けた嬉しいです。

関連するQ&A

  • Access2000: 複数のフィールド内の特定文字を含むレコードの検索・抽出をどのように設定方法

    一つのレコード内にField01, Field02, Field03があります。 Access2000を使用しています。 Main Form(MF)に設置したText Box01 とTex Box02に任意のあいまいな文字をエントリーした場合、 (1) その両方(2)そのいずれか、 の文字を含む複数のレコード検索・抽出を行いたいと思います。 事情に応じて(1)或いは(2)の結果をQuery(FormやReportのベース)に表示させる良い方法を 教えて下さい。(QueryやVBA等のコードの書き方等)

  • Access2002 255以上のフィールドをレポートで表示させたい

    Access2002を使っています。Accessは初心者です。 255以上あるフィールドをレポートでA3用紙(横)1枚におさめたいと思っています。 構造は,下の通りです。 テーブル1,テーブル2,テーブル3,テーブル4 クエリ1(テーブル1~3をもとに)・・・フィールドが200あります クエリ2(テーブル4をもとに)・・・・・フィールドが150あります 初心者判断で,クエリ1とクエリ2をもとに350あるフィールドを1枚のレポートにおさめるには,A3用紙の右側の部分にサブレポートを作成すると解決できるのではと考え,マニュアルを読んで,レポート1にサブレポートを追加する作業を進めました。しかし,「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージが表示され作成できませんでした。 サブレポートの概念がよくわからないのですが,サブレポートにこだわらず,350もあるフィールドをA3用紙(横)1枚にレポートで出力できる最も簡単な方法があったら教えて下さい。何分,Accessは初心者なので,よろしくご教示下さい。よろしくお願いします。

  • アクセスフィールドの抽出条件について。

    アクセスに取り込んだデータに 連続番号があったとします。 クエリの抽出条件で 連続番号が奇数の場合のレコードを抽出 連続番号が偶数の場合のレコードを抽出というように 奇数偶数の作業列を作らず 抽出条件を一気に判定することは出来ますでしょうか。 一応試したのが作業列を作る方法ですが 例えば50フィールドあるクエリを作成し 連続番号をキーに フィールド mod 2 とすると 奇数偶数の判定が出来 抽出条件は満たすのですが フィールドのmodの判定で 連続番号が上書きされてしまいます。 また http://www.mahoutsukaino.com/ac/ac2000/ac2000/nigyo/gyo02.htmの ようにすると フィールド数が足りなく すべてのフィールドが追加出来なくなります。 どなたかアドバイスよろしくお願いします。

  • ACCESSの複数フィールドの検索

    私がしたい事はおそらくかなり初歩的なことと類推されますので、がっくりされないようにお願いします。 「報告書」のテーブルがあります。 その報告書のフィールドは 報告日 報告者氏名 A店の感想 B店の感想 C店の感想 となっていると考えてください。 このテーブルをもとに、表形式で一覧の出るフォームを作っており、この一覧のフォームフッターにテキストボックスがあります。 このテキストボックスに例えば「D商品」と入力してエンターを押すと「A店の感想 B店の感想 C店の感想」中に「D商品」が出てくるレコードすべてが抽出されるというようにしたいと思っています。 1つのフィールドでのやり方がとあるサイトにあったので、私は Private Sub テキスト28_AfterUpdate() Me.Filter = "A店の感想 like'*" & Me!テキスト28 & "*'" Me.FilterOn = True End Sub という式を作成しました。 これだと「A店の感想」フィールドにキーワードがあればヒットしますが、B店、C店にキーワードがあってもA店にキーワードが無ければ反応はありません。 これを3つのフィールドで出来るようにいくつか試してみましたがどれも失敗でした。 どのようにすれば、複数フィールドのキーワード検索・抽出が出来るのでしょうか。 私の取ったやり方に近いもの、別の全然違うやり方、ともに勉強になるので色々教えてください。 それと、これでも結構検索したのですが、検索ワードが不適切なのか、ありそうなニーズにも関わらずぴったりくるものを見つけられませんでした。 もしよければACCESSをわかりやすく学習出来るサイトを教えてください。有名そうなところをいくつかは知っております。

  • アクセスのテキスト型フィールドの初期値

    アクセスのテーブルにテキスト型フィールド「●●日付」を作成しました。さらに、定型入力の方法として、日付(____/__/__)を指定しています。 このテーブルから、クエリでデータを取得する際、●●日付にデータを入力していないレコードのみを取得したいと思い、クエリの抽出条件として=""(ダブルクォーテーション)や=''(シングルクォーテーション)と記載したのですが、レコードが1件も抽出されません(もちろん●●日付にデータを入れていないレコードは複数あります)。一方で、<>""や<>''で、●●日付にデータが入力されているレコードを抽出しようとした場合は、●●日付にデータが入力されているレコードが抽出されます。 テキスト型フィールドにデータが入力されていないレコードを抽出するクエリはどのようにしたら作成できるのでしょうか?

  • 【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです

    【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです。 Access2003を使っています。 困っている状況は以下のようなもです。 ■テーブル1  ・フィールド1 ■クエリ1  ・フィールドA:フィールド1  ・フィールドB:[フィールドA]   【抽出条件】>=10 このような条件で、クエリを実行すると、 「パラメータの入力 フィールドA」というダイアログが立ち上がってしまいます。 上記載のクエリ1でフィールドAの[]は自然についてしまうのではずせません。 今はもう一つクエリを作る事でこの状況はなんとかしましたが、フィールドに別名をつける毎にクエリを作るとクエリの数が多くなってしまうので困っています。 クエリでフィールドに別名をつけた場合は、そのクエリ上でその別名を使って抽出をかけることはできないのでしょうか? よろしくお願いします。

  • Access クエリのフィールドに他のクエリの複数条件を満たすレコードの項目を表示させる

    Accessに関する質問です。 クエリの中で、あるフィールドに、 他のクエリの特定の条件を満たすレコードの項目を表示させたいのですがどのような方法があるかお教えいただけますでしょうか? 具体的には下記のようなクエリを組みたいと考えています。 データ元とするクエリの構成: 【フィールド1】社員番号 【フィールド2】時間帯別業務内容 【フィールド3】業務割合 組みたいクエリの構成: 【フィールド1】社員番号:上記クエリの「社員番号」 【フィールド2】業務内容_Aの割合:上記クエリのレコードの中で、フィールド1の「社員番号」と上記クエリの「社員番号」が一致し、かつ「時間帯別業務内容」が"業務内容_A"であるレコードの「業務割合」 【フィールド3】業務内容_Bの割合:フィールド2と同様のロジック 【フィールド4】業務内容_Cの割合:フィールド2と同様のロジック ・・・ ビルドの欄でDlookupを使うのかと考えましたが上手くいきません。 初心者的質問で大変恐縮ではありますが、お教え頂けると助かります。 お手数をおかけしますが、以上よろしくお願いいたします。

  • アクセス:フィールドが非表示で消えるのを防止する式

    アクセス2010を使っています。 アクセスのクエリのデザインにおいて、あるフィールドAで並び替えも抽出条件もなく非表示の状態にして、結果を開き、また閉じると、そのフィールド自体が消えます。 これを防止したいのですが、並べ替えは必要ないので、抽出条件式を何か使いたいと考えました。抽出条件式はどのようなものが無難でしょうか。「is null」や「is not null」は試しましたが、だめなようでした。これ以上いろいろと試すうちにクエリ自体を妙なことにしてしまいそうで悩んでいます。 フィールドAに入るのは短い日本語の文字列です。人名です。 フィールドAは、表示すると後の段階で困るのですが、ある別のフィールドBの条件式の材料(?)としてデザインの中に開いておかなければならないようです。完全に消してしまうとフィールドBがエラーになります。しかし(並び替えと条件式なしで)非表示にすると、フィールドAが消えてしまいます。 初心者ゆえに不首尾な質問と思いますので、必要があれば補足いたします。どうぞ上級者の方、教えてください。

  • Access 複数の抽出条件

    Access2002 windows2000 (例)次のようなテーブルとします。 フィールド名:名前 年齢 性別 レコード1 :山本 30 男 レコード2 :鈴木 40 女 レコード3 :田中 45 男 レコード4 :森本 26 女 クエリを利用して抽出する時、年齢が40以上で男を条件とすれば (1)年齢フィールドの抽出条件:>=40 (2)性別フィールドの抽出条件:男 として、田中が抽出されます。 では年齢が40以上で男、そして女は全て抽出したい時は(1)(2)の条件はどの様にすればいいでしょう? 抽出結果が 田中、鈴木、森本となりたいのです。 複数のクエリを作れば出来ますが、1つのクエリでは無理なのでしょうか。

  • Access2010 更新データのレポート表示

    Access初心者です。 新規データを入力しても、レポートが更新されずに困っています。 (テーブルや、フォーム内では、データは更新されています) エクセルデータをAccess2010にインポートして、元テーブルを作成しました。 元テーブルを元に、フォーム・レポート・検索クエリ(年度別・分類別)等を作成しました。 ここまでの作業で、新規データの入力はありませんでした。 ところが・・・ 新規データをフォームに入力すると、元テーブルは更新されますが、既に作成しているレポートには、新規レコードが表示(反映)されません。 更新されている元テーブルを元に、もう一度レポートを作成しても、新規レコードは表示されません。 ホームタブの「全て更新」ボタンをクリックしても、新規レコードはレポートには表示されません。 尚、Access初心者です。 「更新クエリ」なるものは、作成していません。というか、「更新クエリ」って何?状態です。 また、クエリそのものが良くわかっておらず、作成したクエリは全て「検索」のためのクエリで、抽出条件に「 [] 」を入力したり、フィールドに「 年度: Year(DateAdd("m",-3,[発送日])) 」を入力したりしかできません。 勿論、リレーションシップって何???状態です。 どうしたらよいのでしょうか??? どなたか、初心者でもわかるように、教えていただけないでしょうか? 宜しくお願いいたします。

専門家に質問してみよう