• ベストアンサー

アクセスの更新クエリについて教えてください

Access2000を使用しています。 例えばあるテーブルの「性別」フィールドには 漢字で「男」、「女」、「不明」と入っております。 男なら「男の子」、女なら「女の子」、不明なら 「不明者」と更新したいのですが、更新クエリで 一発で更新できるのでしょうか? できる場合、条件と更新の値をどこにどういう風に 記述したらよいのでしょうか? 初心者ですがよろしくお願いいたします。

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

  • ベストアンサー
  • prettyfly
  • ベストアンサー率65% (15/23)
回答No.1

新規クエリ作成で、更新クエリを選択。 「性別フィールド」を選択し、レコードの更新部分に IIf([性別]="男","男の子",IIf([性別]="女","女の子","不明者")) と入れれば更新できると思います。 性別フィールドに男、女、不明以外のものが入っている可能性が あるならば、 IIf("性別"="男","男の子",IIf("性別"="女","女の子",IIf([性別]="不明","不明者","該当なし"))) とかやった方がいいかもしれませんね。

enako
質問者

お礼

すばやい回答ありがとうございます。 解決できました。 ところで、いつも思うのですが「if」と 「iif」ってどちらを使用するかいつも 迷いますが(私は「if」を使用しています) どちらのほうがよろしいのでしょうかね・? 何はともあれありがとうございました。

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

その他の回答 (1)

noname#4564
noname#4564
回答No.2

書籍などでもIif関数による方法が紹介されている場合が多いですが、お世辞にもわかりやすい(読みやすい)プログラムとは言えませんし、性能上の問題もありますので、更新クエリを3回実行した方が無難と思います。(性能検証はしてませんが) DB設計的には、「性別」は文字列ではなく、数値(一例ですが、「男」 = 1、「女」 = 2、「不明」 = 999 といった具合に)で持たせた方が正規形に適っていると思われます。

enako
質問者

お礼

ありがとうございます。 件数が多くなればなるほど更新って 怖いものですので、より信頼のおける 手段を選択したいと思います。

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

関連するQ&A

  • アクセス2000でクエリにデータ追加ができる表示がでません

    アクセス2000で、氏名と性別コード(1or2)のあるテーブルを作りました。 性別を漢字で表示したいので、1=男、2=女というべつのテーブルを作って リレーションシップを設定しようとして、氏名と性別コードのあるテーブルを もとにクエリを作成して、1=男、2=女というテーブルを表示したところ、 クエリにデータ追加ができる表示がでなくなりました。 また、そのクエリをもとに、フォームを作ったら、性別コードの部分が「この データは更新できません」というようなメッセージが出て、データの修正も、 できません。 どうしてでしょう? どうしたら、解決するでしょうか?

  • クエリでのデータ更新について

    ACCESS2000で更新クエリの質問です。 フィールドの値の合計、カウントなどの集計値を計算するクエリから取り出された値を、更新クエリでデータを更新したいのですが、 「更新可能なクエリでありません」とエラーがでます。 LOOPする方法もあるのですが、できればクエリで一括更新したいと思います。 どなたかご教授お願いします。 やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> コード  個数 1     1 1     2 1     3 2     4 2     4 3     5 3     6 <Bテーブル> コード  個数 1      2      3    ↓↓↓更新後 <結果:Bテーブル>   コード  個数 1     6 2     8 3     11

  • アクセスの更新クエリ

    私は以前に、アクセスの桁あわせについての質問をしたことがあるものです。その時は『Format関数』を利用してやる方法を教えていただいたのですが、新たに疑問が出たので質問をさせていただくことにしました。 状態としましては、今エクセルのシートを二つインポートし、片方は1~20の連番のフィールド(テキスト型)があります。もう一つは01~20の連番のフィールド(テキスト型)です。この二つのテーブルの間にリレーションシップをとりたいので型は揃えていないといけないので、『Format関数』を利用し、【Format(Val([code]),"00")】と入力し更新クエリを実行しました。 実際に処理をしていくと、フィールド名が同じのテーブルが幾つもある状態なのですが、この場合その都度更新クエリをテーブルの数だけ作成しなくてはいけないのでしょうか?それとも、フィールド名が同じの場合何か1つの更新クエリで桁をあわせることは可能なのでしょうか? 長くなってしまいましたが、どなたかご存知の方教えて下さい。お願いします。

  • Access2003 更新クエリについてご教授下さい。

    初めまして。 今回、初めてご質問させていただきます。 Access2003の更新クエリについてご教授お願いします。 AテーブルとBテーブルがあります。 ■Aテーブル(ALLテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型) ■Bテーブル(更新させたいテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型)  (※Aテーブルと同じです。) Bテーブルの内容をAテーブルへ更新させたいのですが 名前/完了のフィールドは、更新クエリで完成出来ましたが 備考欄の更新が出来ません。 (※備考欄には、コメントがそれぞれ入っています。) どのような形でクエリを作成すれば Aテーブルへ更新が可能になるのでしょうか? 以上、ご教授お願い致します。

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

    アクセス2002を使用しています。 更新クエリ実行時に、あるフィールドの値を1加算したいです。どのように設定すればいいですか?

  • アクセスのクエリで

    アクセスのクエリで、テーブルAのフィールド1が空白の場合は、0と表示し、(数値型)そうでない場合はフィールド1の値を表示するにはどの様にしたら良いですか? 誰か教えて下さい。よろしくお願いします。

  • アクセスクエリ

    アクセスクエリのフィールド MS-accessのクエリで質問です クエリで、3つのテーブルがあります。 どのテーブルのフィールドにも[売上]があります。 この3つのテーブルの[売上] フィールド1列に表示させる方法はありませんか

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

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

  • アクセスのクエリで

    アクセスのクエリで、テーブルAのフィールド1が"a"又は、"b"の場合は、"ABC"と表示し、それ以外の場合は、テーブルAのフィールド2に対応している、テーブルBのフィールド1の値を表示させる事はできますか? 誰か教えて下さい。よろしくお願いします。

  • Access更新クエリの「レコード更新」をフォームから指定する方法

    お世話になっています。 早速ですが質問があります。 テーブルにあるフィールドの値を全て変更する更新クエリを作成したのですが、出来ればフォームから指定したいのです。 どうやったら「レコードの更新」の値をフィールドから指定出来るのでしょうか? 以上、よろしくお願いします

専門家に質問してみよう