Access2010での更新クエリの抽出条件の設定方法

このQ&Aのポイント
  • Access2010を使っている場合、更新クエリを使用してレコードの抽出条件を設定する方法について教えてください。
  • 具体的な例として、TBL_1の期間2フィールドをTBL_2の日付フィールドの値に置換する場合の抽出条件の書き方を知りたいです。
  • また、TBL_2に該当する社員コードが存在しない場合は置換しないように設定する方法も教えてください。
回答を見る
  • ベストアンサー

更新クエリでの抽出条件の設定がわかりません

お世話になります。 Access2010を使っています。 今、TBL_1の社員コードの中で、期間2の日付を、TBL_2の日付フィールドの 値に置換したいです。 TBL_1はIDをオートナンバーで振っており、置換したいレコードは社員コードID値が最大の レコード内の期間2フィールドになります。TBL_2は全社員コードはなく、社員 コードがある場合のみTBL_1の期間2を置換します。 テーブル1名:TBL_1 ID 社員コード 期間1   期間2   1  00123   2012/6/30  2014/3/31 2  00123   2014/4/1   2015/3/31 3  00456   1995/9/15  2008/3/31 4  00789   2001/6/2  2013/3/31  ・ 10 00456   2008/4/1  2016/3/31  ・ 30 00789   2013/4/1  2015/3/31  ・ 50 00123   2015/4/1  2017/3/31  ・ テーブル2名:TBL_2 社員コード 日付      00123   2016/10/31  00456   2015/5/20 上の例では結果として、 IDが10のレコードの期間2を2015/5/20に置換します。 IDが50のレコードの期間2を2016/10/31に置換します。 テーブル1名:TBL_1 ID 社員コード 期間1   期間2   1  00123   2012/6/30  2014/3/31 ←変わらない 2  00123   2014/4/1   2015/3/31 ←変わらない 3  00456   1995/9/15  2008/3/31 ←変わらない 4  00789   2001/6/2  2013/3/31 ←変わらない  ・ 10 00456   2008/4/1  2015/5/20 ←期間2:2015/5/20に  ・ 30 00789   2013/4/1  2015/3/31 ←変わらない  ・ 50 00123   2015/4/1  2016/10/31 ←期間2:2016/10/31に 更新クエリを使えばいいと思っていますが、抽出条件をどのように 書いていいのかわかりません。 恐れ入りますが、宜しくお願い申し上げます。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

社員コードがテキスト型の場合です。 UPDATE TBL_1 INNER JOIN TBL_2 ON TBL_1.社員コード = TBL_2.社員コード SET TBL_1.期間2 = [日付] WHERE TBL_1.ID=DMax("ID","TBL_1","社員コード='" & [tbl_1]![社員コード] & "'")

vesper580109
質問者

お礼

m3_makiさん ご回答ありがとうございます。また、お礼が遅くなり申し訳ございませんでした。 行いたい処理ができ、追加クエリの抽出条件も、少しわかってきたような感じです。 本当にありがとうございました。

関連するQ&A

  • [Access]クエリの抽出条件について

    アクセス初心者です。よろしくお願いします。 クエリの抽出条件に別テーブルのフィールドをあいまい検索で入れたいのですが方法がわかりません。 データシートビューには検索したいテーブル(tbl_1)と 検索する文字列が入ったテーブル(tbl_2)の2つを表示させています。 デザイングリッドは検索したいフィールドを表示し、 抽出条件にLike "*[tbl_2]![フィールド名]*"と入れましたが該当するものがあっても表示されないのです。 どうしたらよいでしょうか。ご伝授ください。

  • ACCESSクエリーの抽出条件について

    OS WIN7 ACCESS 2007使用です。 クエリーの抽出条件について何ですが、テーブルにコードというフィールドがありまして、そこには数値が入力されています。 コード 1 2 3 4 5 ・ ・ このテーブルを元に選択クエリーを作りたいのですが、条件としてコードの値に2と3両方がある場合、2のレコードだけを表示せず、どちらか一方の数値だけの場合またはどちらもない場合は、全てのレコードを表示するようにしたいのです。 抽出条件はどのように書けばよいのでしょうか? いろいろ試したのですが、うまくいきません。 どなたかお助け下さい。

  • クエリの抽出条件について

    売掛管理を作成しようと思っています。 「請求書T」と「入金T」 「商品T」「取引先T」を作成しました。 元帳作成にあたって、に必要なテーブル・クエリの組み方を教えてください。。 請求書テーブル フィールド名;請求番号、請求日、得意先番号、 売上額、摘要(商品名など) 入金テーブル フィールド名;ID(オートNo.)、取引先コード、入金日、入金額、調整(振込手数料等)、摘要 クエリで売上明細と商品Tをつなぎ、売掛元帳を作りたいのですが、 クエリのひっぱりかたがわかりません・。。 元帳 → 日付、取引先コード、取引先名、売上額、入金額、繰越残高、残高 (繰越残高は、取引先Tに持たせます) ※残高= 繰越残高 + 売上額 - 入金額 どうぞよろしくお願いします。

  • クエリの抽出条件

    アクセス2003/2007のクエリの抽出条件について テーブル名:履歴 フィールド1:名前 フィールド2:履歴No フィールド3:履歴の内容 フィールド4:日付 とあります。 履歴Noは0の人、1~3まである人、1~10まである人と様々。 指定した名前毎に「履歴Noの最大値から3レコードを抽出してレポートにしたいです。 下記のようにしてみました。 Between Val(DMax("履歴No","履歴"))-2 And Val(DMax("履歴No","履歴")) これでは抽出出来ませんでした。 試しに Between 3-2 And DMax("履歴No","履歴") と直接引き算の式を入れると抽出されました。 ※Valはあってもなくても同じでした。 「履歴Noの最大値から3レコードを抽出」をうまく出来る方法は無いでしょうか。 よろしくお願いします。

  • 条件指定の特定レコードのフィールド値の差をとりたい

    お世話になります。 テーブル1(TBL_1)の社員コードそれぞれにおけるレコードのフィールド値のデータ1と別テーブル(TBL_2)のデータ2との差をとる方法が知りたいです。差をとりたいレコードは以下の条件によります。 ・テーブル2の期間1と期間2の範囲にはいっているテーブル1のレコードのみ差をとる。 ・データ1とデータ2の差がマイナス(-)になることはありません。 ・社員コードは百程度、レコード数は数千にのぼります。 ・フィールドの期間1と期間2は同一社員コードにおいて重複することはありません。 ・テーブル2(TBL_2)は年度をまたいでの期間設定は基本しません。年度をまたぐ場合はレコードを増やします。 テーブル1名:TBL_1 社員コード 期間1   期間2   データ1 00123   2012/6/30  2014/3/31  30 00123   2014/4/1   2015/3/31  100   00456   1995/9/15  2008/3/31   15 00789   2001/6/2  2013/3/31  224  ・ 00456   2008/4/1  2016/3/31  628  ・ 00789   2013/4/1  2015/3/31  1089  ・ 00123   2015/4/1  2017/3/31   95  ・ テーブル2名:TBL_2 社員コード 期間1     期間2  データ2 00123   2012/11/6  2013/3/31   5 00123   2013/4/1   2013/11/5   13 00456   2013/6/12  2013/10/6   22 00789   1995/6/7   2000/2/11   6 具体的には、上記例においてテーブル1を下記の結果にしたいです。 テーブル1名:TBL_1 社員コード  期間1    期間2     データ1 00123   2012/6/30  2014/3/31    12 ←30-(5+13)=12 00123   2014/4/1   2015/3/31   100 ←変わらない 00456   1995/9/15  2008/3/31    15 ←変わらない 00789   2001/6/2   2013/3/31   224 ←変わらない  ・ 00456   2008/4/1   2016/3/31   606 ←628-22=606  ・ 00789   2013/4/1   2015/3/31  1089 ←変わらない  ・ 00123   2015/4/1   2017/3/31   95 ←変わらない  ・ なにとぞお力添えをお願い致します。

  • Accessクエリの抽出条件

    Access2000を使用しています。 クエリの抽出条件にテーブルの値を使用したいのですが、その方法がわかりません。 テーブルAには、「日付」、「当者コード」 などの項目があります。 テーブルBの項目は「担当者コード」のみです。また、1レコードしか登録 されていません(2レコード以上になることはありません)。 そこで、テーブルAに対するデータ抽出条件を、テーブルBの「担当者」としたいのですが、 どのように記述すればよろしいでしょうか・・・? よろしくお願いします。

  • [MS Access]クエリで変換 hhmm(数値型)⇒hh:mm(日付/時刻型)

    テーブル上で”930”や”1030”というように数値型になっているデータを、 クエリ上では”9:30”や”10:30”の日付/時刻型へ変換したいと考えております。 この場合、どのようなSQL文で記述をすればよろしいでしょうか? テーブルやフィールは下記のようになっております。 ■テーブル名 tbl_サンプルテーブル ■フィールド名 ID(オートナンバー型) 時刻(日付/時刻型)

  • acccess:クエリの抽出条件

    助けてください_(._.)_ アクセスの選択及び更新クエリで あるテーブル「t_抽出」の「社員番号」フィールドと一致したレコードのみ選択して情報を更新したいのですが。 式ビルダを使ってで抽出条件のところに [t_抽出]![社員番号] と入れるのですが 実行するとパラメータが出てくる どうして?何がいけないのでしょうか(・・? どうぞよろしく

  • Access 抽出漏れ行をみつけるクエリ

    図のようなテーブル「TBL_A」がCSVファイルの形で提供されます。この「TBL_A」は全レコードのテーブルあり「正」データばかりのマスターと考えてください。 このCSVデータをACCESSによみこみテーブル「TBL_A」としてあります。 「TBL_A」をいろいろな人が加工したり、抽出作業をしているのですが、「TBL_B」のような抽出をかけて渡してきた人がいたので、「データ(レコード)が足りないので、不一致クエリで足りないのを見つけておいてください」と頼んだところ、何度やってもみつけられないというので、自分でも試してみました。 図でいえば、ピンク色のレコード(行)をみつければいいのですが、Accessで不一致クエリをかけてみたところ、図の下部のようなデータしか抽出できませんでした。 やったことは2つ 1) TBL_Aを左にし、右にTBL_Bを右に配置し、不一致クエリウィザードでの矢印(→)で商品コードを紐付けた 2) 最初にTBL_AとTBL\Bをクエリで「商品コード」「価格」ぞれぞれ結びつけ(つまり2つの線)、「商品コード」「価格」を「クエリ1」として抽出。その「クエリ1」を上のTBL_Bの位置にもってきて、不一致クエリ。 どちらとも、結果は図の下のようになってしまいます。 図の上部のピンクの部分を確実に抜き出すには、どのようなクエリ(またはSELECT文)が必要でしょうか。 メモ: ・商品コードは「テキスト型」です。 ・商品コードが同じでも販売場所やいろいろな経緯で価格が違っていたり、返品の場合は返金するためマイナス金額がつくことがあり、商品コードと価格はかならずしも合致しません。 ・Accessは2010か2013を使っています。 ※今回はVBAの質問ではありません。

  • Access クエリで新規テーブルを作成

    お世話になります。 クエリで新規テーブルを作成することは可能でしょうか。 テーブル作成クエリだと、既存のテーブルで抽出した内容で新規に作成する ことになるかと思います。 今回はまっさらな新規のテーブルを作成したいところです。 例えば、フィールド名とデータ型が  ID オートナンバー  受注日 日付型  商品   テキスト型 の場合だと、どのようになりますでしょうか。 ご教授の程、宜しくお願い致します。

専門家に質問してみよう