こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessでのiif関数について

はじめまして。
Microsoft Accessの関数についての質問です。

例えばクエリの「商品名」の値AをBに置き換えたい場合、
=iif([商品名]=A,B)とします。
また、商品番号1000~9999まであるとして、1000~1999を抽出したい場合は、Like "1*" もしくは、Between 1000 And 1999 とします。
この時に 商品番号1000~1999を一律1000と置き換えたい場合、クエリでやるとしたらどのようにすれば良いのでしょうか。
イメージ的には
=iif([商品番号]="1*",1000)なのですが、「"1*"」の部分をどうやってもうまくいきません。
どなたか詳しい方いらっしゃいましたらお教え頂けないでしょうか。
お忙しいところ申し訳ございませんが、宜しくお願い致します。

投稿日時 - 2008-11-07 16:03:49

QNo.4460469

すぐに回答ほしいです

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

何をしたいのかがいまいちわからないので試される際は複製のMDBでお試しください。

アクセスには更新クエリがありますのでそれを利用されるのが良いかと思います。
(ただし商品番号が重複なしのインデックスである場合は同じ値に変更することはできません。)
1000から1999までの数値を1000さらに2000から2999を2000、、、、と置き換えるためには
=int([商品番号]/100)*100
100で割ったものの整数値を100倍にするという方法がありますのでこれを更新クエリのレコードの更新に入れると良いのかもしれません。
ただ、1000から1999のみが対象の場合はこれらの値を選択するクエリを作成し、それを更新クエリに変更し更新する値に1000と入れればよいだけです。

投稿日時 - 2008-11-07 16:22:35

お礼

はじめまして。
早速ご解答頂きありがとうこざいます。

Int関数を利用する方法は「なるほど」と思いました。
今試していますがうまくいきません。
Int関数は使えそうなのでもう少しがんばってみます。
本当にありがとうございました。

投稿日時 - 2008-11-07 18:15:11

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

商品番号は数値項目ですよね?
もしも、文字列であるならIif関数ではなくLike演算子を使います。
WHERE 商品番号 Like "1*"
あるいはVal関数で数値化します。
WHERE Val(商品番号) BETWEEN 1000 And 1999

投稿日時 - 2008-11-07 19:15:35

お礼

はじめまして。
ご連絡遅れて申し訳ありません。
アドバイス頂いた方法で試してみます。
ありがとうございました。

投稿日時 - 2008-11-10 10:42:32

ANo.2

Iif(商品番号>=1000 And 商品番号<=1999, 1000, ~)
または
Iif(Int(商品番号/1000)=1, 1000, ~)

本筋は第1案です。第2案は理屈が分かっていないで使うと、仕様変更が
あった時に修正できないでしょう。

投稿日時 - 2008-11-07 16:36:09

お礼

はじめまして。
早速ご解答頂きありがとうございます。
ご教授頂いた方法(両方)で試してみたのですがうまくいきませんでした。
ただ、ヒントになる部分もありましたので、改良して試してみます。

ありがとうございました。

投稿日時 - 2008-11-07 18:11:46

あなたにオススメの質問