• 締切済み

パラメータークエリーからそれ以外の条件変化させたい(ACCESS 2003)

環境:ACCESS 2003 以下のテーブルがあるとします。 <テーブル EMP> NUM ADD 1001 TOKYO 1001 TOKYO 1001 OOSAKA 1002 NAGOYA 1002 OOSAKA 1002 OOSAKA その際パラメータークエリーにてNUMの値を 1001と入力した時 AND ADD = TOKYO 1002の時 AND ADD = OOSAKA にするにはどのようにしたら良いでしょうか。 できれば回答はSQLかデザインでお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

条件用のテーブルを作成しておく。 NUM,ADD 1001,TOKYO 1002,OOSAKA ・ ・ ・ で、クエリはあらかじめ対象のテーブルと条件テーブルをNUMとADDで結合させておけば、NUMの値がパラメータで決まればADDの値も自動的に決まります。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

パラメータークエリーで、NUM の列の抽出条件にパラメータを設定したままで、ADD の列の抽出条件のも別の名前でパラメータを設定するというのはダメなんでしょうか?(パラメータの入力を NUM と ADD の2回することになりますが。)

ibdij
質問者

補足

実はその後さらにAND にて条件文が20以上ございます。 具体的には 1001と入力した時 AND ADD = TOKYO AND AAA = 1 AND BBB = 2 AND CCC = 1   :   : 1002の時 AND ADD = OOSAKA AND AAA = 3 AND BBB = 2 AND CCC = 5   :   : となりNUMのパラメータを入力すれば、 その後の条件は固定されております。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

そういうのはクエリーだけでは無理だと思います。 私ならフォームを作って、そこにテキストボックスと ボタンを配置します。 ボタンが押されたときのアクションで、 テキストボックス=1001 のときは  select * from ・・・ where num = 1001 and add =tokyo それ以外のときは  select * from ・・・ where num = 1002 and add = oosaka にすればいいと思います。

ibdij
質問者

お礼

そういう方法もあるのですね。 参考にさせていただきます。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access ADO パラメータークエリー

    Access ADOでフォームのコントロールを参照するパラメータークエリーを開こうとすると、どうしても「SQLステートメントが正しくありません・・・」のエラーが発生してしまいます。 もちろん、クエリー単体では正常に動作しますが、クエリーのパラメーターに参照するコントロールを登録してもADOでは開けません。 現在はパラメータークエリーの抽出結果を一時テーブルに書き込んで、これをADOで開くという非効率極まりない方法で凌いでいますが、どうすれば良いのでしょうか。

  • クエリのパラメータについて教えてください(Access2000)

    Access初心者です。 クエリのデザインビューでフィールドに条件を設定するために[](角かっこ)でパラメータを設定しました。 人から聞いたのですが、そのあとにメニューバーの「クエリ」-「パラメータ」でも設定をした方がいいと言われました。 これはどういう理由からでしょうか? また、設定をしなくてもできるのですが、どんな不都合があるのでしょうか? 私自身、初心者なのですが、人に教えないといけないんです。 わかりやすくご指導ください。 よろしくお願いします。

  • ACCESS クエリの抽出条件

    毎度お世話になります。 クエリをレコードソースとするフォームから、コマンドボタンでアクションクエリを実行するときの抽出条件の書き方を教えて頂けないでしょうか? 二つのテーブル(別のACCESSファイルからリンク)を基にパラメータクエリを作っています。 そのクエリを基にフォームを作っています。 さらに、そのフォームに追加クエリを実行するボタンを置いています。 フォームに表示してあるレコードだけ(パラメータで抽出されたレコードだけ)、他のテーブルに追加しようと思っているのですが、実行ボタンを押すともう一度パラメータが出てきてしまいます。 多分テキストボックスの値を読み取る際にレコードソースがテーブルでないのが問題じゃないかと思うのですが。。。 テーブル:Container / Items クエリ:From_Con(パラメータは[Container]フィールド) フォーム:From_Con(テキストボックス名は[txtContainer]) 追加クエリ:From_Con_App(抽出条件は[Forms]![From_Con]![txtContainer]としてみたがうまく動きません。) デザインビューの抽出条件を使う方法? SQLを使う方法? QueryDefを使う方法? いろいろありそうですが、ネットで検索してもヒットしません。 分かりにくい説明で申し訳ありませんがご教授願います。

  • パラメータクエリでの範囲検索方法

    こんにちは。現在VB.NET2005とOracle10gで開発をしています。 SQLについてはセキュリティー対策のためパラメータクエリでおこなっています。 困ったことにパラメータクエリで範囲検索ができないのです。 以下のソースです。 Imports System Imports System.Data Imports Oracle.DataAccess.Client private sub getdata() Dim OraCommand As OracleCommand = New OracleCommand Dim OraParameter(0) As OracleParameter 'パラメータ 'コネクションのセット OraCommand.Connection = _Connection'オープンされたコネクション 'パラメータSQLをセット OraCommand.CommandText = "select * from Table1 where UpdateTime >= :UpdateTime and UpdateTime <= :UpdateTime" '名前によるパラメータ識別をON OraCommand.BindByName = True OraParameter(0) = OraCommand.Parameters.Add("UpdateTime","2007/01/23") ReDim Preserve OraParameter(1) OraParameter(1) = OraCommand.Parameters.Add("UpdateTime","2007/01/24") 'SELECT実行(結果は0件) Return OraCommand.ExecuteReader() TableAには二件のレコードが入っていて片方はUpdateTime列が 2007/01/23もう片方が2007/01/24です。 TableAのUpdateTime列のデータ型はTimestampです。 どなたかパラメータクエリで日付範囲検索の経験のある方 教えていただけないでしょうか?

  • アクセスのクエリでパラメータを表示させない方法は?

    超初心者の質問ですみません。。 アクセスのクエリで、ある数字の全体に対して占める割合を求めるため、以下のような式をいれています。 フィールドC: [フィールドA]/[フィールドB] このクエリを開いたときに毎回パラメータが表示されるのですが、これを表示させないためにはどのようにすればよいのでしょうか?OKを2回押せばきちんと計算された値が入ってくるのですが、毎回OKを押さずに開けるようにしたいです。 ちなみに、フィールドAとフィールドBは、あるテーブルに入っている値をクエリ側で 集計 を「合計」に設定して求めた値が入っていて、フィールドA~Cは同じクエリの中にあります。 VBAやSQLはまったく理解できません。 よろしくお願いします。

  • AccessのVBAでパラメータクエリー設定

    お世話になります。 AccessのVBAで質問させてください。 「クエリーA」に設定している「ID1」のパラメータを 「テーブルA」の「IDX」の値を設定したいと思っております。 「ID1」にパラメータ2を設定する方法は分かったのですが、 下記の2つの方法がわかりませんでした。 ・「ID1」のパラメータを「テーブルA」の「IDX」の値を設定する方法 ・「テーブルA」は複数レコードあるので、その数だけfor文的なループで回したい お手数で申し訳ございませんが、 「クエリーA」に設定している「ID1」のパラメータを 「テーブルA」の「IDX」の値を設定する方法VBAコードを 教えて頂ければと思います。 本当に勝手いいますが、コードを記載して頂ければと思います。 宜しくお願い致します。 -----「ID1」にパラメータ2を設定する方法----- Set qdf = dbs.QueryDefs("クエリーA") With qdf .Parameters("ID") = 2 Set rst = .OpenRecordset End With

  • Accessでパラメータークエリのパラメータを、フォームのリストボックスから選択することってできませんか?

    Accessで パラメータークエリのパラメータを、フォームのリストボックスから選択することってできませんか? あと、抽出されたテーブルの最後のリストの値を、テキストボックスに表示させるような、イベントプロシージャってどうのように書きますか? 以上、よろしくお願いします。

  • Microsoft Access:クエリのフィールドが消える

    仕事でWindows XP Professional、Microsoft Access 2003を使用しています。 Accessの知識は低いです(本を見ながらVBAを組んだりする程度)。 データベースは、5年ほど前にAccess 2000で作ったもので、ネットワークドライブにあり、現在、改良等はAccess 2003で行っていますが、データベースを使用するクライアントは、Windows 2000(Access 2000)とWindows XP Pro(Access 2003)の複数環境です。 データベースは、1つのテーブルに、1つの抽出クエリ、レポートはそのクエリから呼び出して表示すると考えてください。 レポートを表示させるときに、クエリからデータを引っ張ってくるのですが、数ヶ月前から、突然必要のない「パラメータの入力」ウィンドウが複数回表示されるようになりました。 直接の原因は、クエリに存在しているはずのフィールドが、数個消滅していて、再度クエリにフィールドを追加すれば直ります。 直してしばらく使えるのですが、4~5日経つと、また壊れるという状況です。 また、データベースには、1年以上大きな変更を加えていません。 レポートのラベル(単なる文字)や位置を変更するのみのメンテナンスしか行っていません。 ちなみに、このデータベースファイルのテーブルへは、別のデータベースファイルからも「テーブルのリンク」としてリンクされていますが、クエリやレポートは単独です。 個人情報を扱うファイルのため、外部に持ち出せず、職場でOK Waveにアクセスしづらい状況で、知識も乏しいことから、あまり詳しく提示できないのですが、勝手にクエリ内のフィールドが消えてしまう原因は、どういうことが考えられますか? 参考程度でも結構ですので、アドバイスをお願いします。 (この程度のレベルの人が、重要なデータベースを管理していることに一番の問題があるのは分かっているのですが…)

  • パラメータで同じ値を入れたいとき。

    【テーブルA】 日付 名前    会員番号 0101  山田一郎  0001 0102  山田次郎  0002 【テーブルB】 日付 名前    会員番号 0101  山田三郎  0011 0102  山田四郎  0012 次のようなテーブル2つがあり、2つのテーブルの 中から、1月1日のものだけを抽出したいとします。 やり方として、 クエリAでテーブルAの日付の項目をパラメータで0101と指定しました。 クエリBでテーブルBの日付の項目をパラメータで0101と指定しました。 二つのテーブルをマージする。 という方法をとりたい。 上記の作業がやりたい場合に、いちいち、クエリAとクエリBで 同じ値を入れるのがめんどくさいので、 クエリAで数値を指定すれば、自動的にクエリBでも同じ値を入れるように できないものでしょうか。

  • 抽出条件のあるクエリにADOで新規にレコードを追加

    抽出条件のあるクエリにADOで新規にレコードを追加する事は不可能でしょうか? フォーム1にテキスト0を配置し SELECT テーブル1.色 FROM テーブル1 WHERE (((テーブル1.色)=[Forms]![フォーム1]![テキスト0])); というクエリを作成しました。 テーブル1のデータは 色 黄 黒 青 赤 です。 ADOでクエリにデータを追加したいのですが Public Sub Exsample() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Set CN = CurrentProject.Connection Set RS = New ADODB.Recordset SQL = "SELECT * FROM クエリ1" ここの時点で 「実行時エラー:'-2147217904 (80040e10)': 1つ以上の必要なパラメータの値が設定されていません。」 と表示されてしまいます。 「クエリ1」を「テーブル1」にしたらうまくいきます。 だったらテーブルに追加したら?と思われると思いますが 今回は例であり、実際はクエリに追加したいです。 回避方法があれば教えてください。 よろしくお願い致します。 (ヴァージョンはアクセス2003です)

専門家に質問してみよう