• ベストアンサー

更新クエリーについて

更新クエリーについて教えて下さい。 元テーブルのAフィールドに値1,2,3 が入力されいます。それを 1を0 に 2を5 に 3を10に 更新する設定方法について教えてください。 <私が行った設定> 更新クエリーのレコードの更新欄に IIf ( [A] = 3 , 10, [A]) or IIf ( [A] = 2 , 5, [A]) or IIf ( [A] = 1 , 0, [A]) で実行したのですが、更新後の値が-1になります。  

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

  • ベストアンサー
  • takasgy
  • ベストアンサー率42% (30/71)
回答No.1

or条件がまずいのが原因だと思いますので、iif関数を使用するならこんな感じ... IIf([a]="1","10",IIf([a]="2","20",IIf([a]="3","30",[a]))) aの値が"1"だったら"10"に、そうでなければ今度は"2"だったら...と入れ子状態です。 Switch関数を使用するならこんな感じ... Switch([a]="1","10",[a]="2","20",[a]="3","30",True,[a]) aの値が"1"だったら"10"に、そうでなければ...iif関数といっしょですが、Trueは該当する値が条件になければaの値を使用する。 いかかでしょうか?

関連するQ&A

  • 更新クエリがわからない

    windows-xp、Access2003を使っています。 参考書に載っている更新クエリは「同一のテーブル内でデータを更新する」という内容で載っているのを見ました。 が、そうではなく・・・ 更新クエリを作成すると「レコードの更新」という欄が出てくるのですが、そこに、別のテーブルや別のクエリのデータを”ビルド”で作成することはできないのでしょうか? 試みたのですが、”パラメータの入力”というものが出てきてしまいました。 ついでにおわかりになれば、これも教えてください。 ↓↓↓ テーブルAとテーブルB(或いはクエリB)に、同じIDをもつデータがあります。そこで、テーブルAの指定するフィールドへ、テーブルBの新しいデータを入れ込みたい(更新)させたい。 すみませんが、宜しくお願い致します。

  • Access2003の更新クエリ、レコードの更新欄のフィールド名を自動的に入力するには?

    AとBという2つのテーブルが、全く同じフィールドを30個持っています。 AとBでIDが同一のモノのみ、AにBのデータを丸々更新したいのですが [B].[フィールド名1]というように、IDを除いた残り29個のレコードの更新の欄に 手入力する方法で現在行っています。 追加クエリなどだとフィールドが同じ場合は自動的にレコードの追加欄にフィールド名が現れるのですが 同様に更新クエリでもフィールド名を自動的に出す方法はありますか? 現在上記のような更新クエリを10件以上新規で作成しなければならないのですが 各件に29個も手入力で行うのが非常に面倒でなりません。 やはりSQL等で仕組んでいくようにするのでしょうか?

  • Accessの更新クエリについて質問です。

    よろしくお願いします。 集計したクエリを元に更新クエリを実行すると、更新できません。 やりたい作業としては、売上データテーブルのレコード数を得意先ごとにカウントして、得意先マスタテーブルのレコード件数フィールドを更新する作業です。 追加クエリで一度テーブルに追加してから、テーブル同士で更新も考えたんですが、レコード数が多いためにDBのサイズが爆発的に増えて廃案になりました。 何か良い方法があれば教えてください。

  • アクセスの更新クエリについて

    アクセスの更新クエリにおいて、各レコードで繰り返し同じ数を入力しなければならないフィールドが3つあります。その3つをパラメータを設定し、更新クエリを設定して実行しようとすると2つまではパラメータで聞いてくるのですが、1つだけ聞いてきません。アドバイス宜しくお願い致します。

  • アクセスの更新クエリの質問です。

    ちなみにAccess2007を使用しています。 A,B,C,Dというフィールドが有り、AフィールドにはCodeが入っています。 Bフィールドには"bb"という言葉、Cフィールドには"cc"という言葉にそれぞれ書き換え、Aフィールドには、今から更新する1レコードを抽出するため、更新クエリ実行時に、パラメーターを入力するように設定しました。 しかし、更新するレコードは、全45000件中、6000件くらいあり、いちいちコードを入れるのが大変です。 もともと、書き換えるためのコードリストがエクセルデータとして有り、Accessにインポートすれば、コードリストをAccessのテーブルにする事も出来ます。このテーブルを使って簡単に、書き換えることは出来ないものなのでしょうか?

  • テーブル間の更新クエリにおいて

    Access2010で入力フォームを作成しています。 一時データとしてテーブルAを連結サブフォームとして編集します。保存ボタンをクリックするとメインのテーブルB(Aとフィールド構成は同じ)へA、Bのフィールド間で値が異なる場合、上書き保存をするという更新クエリを用意しています。 質問はテーブルAでフォーム上、オプショングループのラジオボタン(項目はテキスト型 値リストは0と1)に設定した項目が初期値のnullから入力したデータがメインのテーブルBに更新できないので困ってます。 連結フォームなので、テーブルAに値が入っており且つBと値が異なるのはデータビューで確認しています。ただ更新クエリでの選択(データビュー)に載ってこない。 この項目がテーブルBに反映されるのは予めインポートで0もしくは1が入力されていた状態から変更した場合と他の項目も合わせて値に変更があった場合のみでした。 クエリの抽出条件はテーブルA.項目<>テーブルB.項目としています。他の項目もor条件で同じ設定にしています。切り分けのため、このオプショングループの項目だけを変更した場合のクエリにしても反映はされませんでした。 考慮すべき点あればご教示ください。 よろしくお願いいたします。 どうかお助けくださいませm(__)m

  • access クエリで集計した数値を別クエリで使いたい

    access2003で2000ファイル形式で以下のものを作っています。 テーブル「A」(フィールドは登録番号(主キー)、 書名) 「B」(登録番号(主キー)、 書名) がある。Aの「登録番号の最大値」(100とする)をクエリ(クエリ名「集計クエリ」)で集計して得た。 テーブルBの登録番号(1~30とする)を更新クエリで(1+100 ~ 30+100)に更新したい。そこでデザインビューで登録番号フィールド(テーブルB)の「レコードの更新」欄にビルダーで「[B]![登録番号]+[集計クエリ]![登録番号の最大値]」と入力して実行したら 実行できなかった。(仕方ないので「[B]![登録番号]+100」として実行したら更新できた。)今後もあるので「集計クエリ」で得た値を直接呼んで、更新クエリを実行したいのだが・・・。 わかりにくい質問で恐縮です。ご理解頂けたならば、ご教授ください。

  • ACCESSの更新クエリのエラー

    更新クエリを使い条件にあ合ったレコードの値を削除して空白にしたいと思います。 しかし抽出条件を入力し、レコードの更新に空白のまま実行すると「クエリには、出力フィールドがひとつ以上必要です」と言うエラーが出ます。 このような場合クエリではどう対処したらいいのでしょうか。 よろしくお願いします。

  • クエリ上でのデータ更新

    Accessのクエリで、クエリ実行した画面の抽出されたデータ上で、データの書き換え・更新ができるクエリと、「このレコードセットは更新できません」と左下に記載されてしまい更新できないクエリがありますが、この2つにはどんな違いがあるのでしょうか? おそらく、元になっているテーブルの何かの設定が違うのだろうかと思うのですが、それがよくわかりませんので投稿しました。 よろしくお願いいたします。

  • 更新クエリー

    ACCESS2000です。 Aというテーブル(レコード件数500件くらい)のValue1というフィールドをBというテーブル(レコード件数1件)のValue1というフィールドの値で全件更新したいのですが、どのようなSQLを書けばよいのでしょうか。 基本的なことだと思いますがよろしくお願いいたします。