dポイントプレゼントキャンペーン実施中!

詳しい方ご教授願います。
Access2002を使用しています、下記のような場合に値を返すことは出来るのでしょうか。
よろしくお願い致します。

0~90 → 0
90~100 → 70

行ごとに値を返したいのです。

A 回答 (3件)

テーブル名をテーブル1として、



UPDATE テーブル1 SET テーブル1.判定 = IIf([頁数]>=0 And [頁数]<90,0,IIf([頁数]>=90 And [頁数]<100,90,100));

または、

UPDATE テーブル1 SET テーブル1.判定 = IIf([頁数]>=0 And [頁数]<90,0,70);


または、

UPDATE テーブル1 SET テーブル1.判定 = funcAAA([頁数]);

のような更新クエリを作成します。

クエリのデザインビューでは、

  フィールド|判定
   テーブル|テーブル1
レコードの更新|IIf([頁数]>=0 And [頁数]<90,0,IIf([頁数]>=90 And [頁数]<100,90,100))

または、

  フィールド|判定
   テーブル|テーブル1
レコードの更新|IIf([頁数]>=0 And [頁数]<90,0,70)

または、

  フィールド|判定
   テーブル|テーブル1
レコードの更新|funcAAA([頁数])

のようになっています。
    • good
    • 0
この回答へのお礼

この度は丁寧に教えていただきありがとうございました。
あとは工夫して自分なりにやりたいと思います。
また分からない場合はご教授願います。

お礼日時:2011/03/24 16:02

No1の返す値が違っていたようです。



Function funcAAA(num As Long) As Long
If num >= 0 And num < 90 Then
funcAAA = 0
End If
If num >= 90 And num <= 100 Then
funcAAA = 70
End If
End Function



クエリの判定2のところを以下。

判定2: IIf([データ]>=0 And [データ]<90,0,IIf([データ]>=90 And [データ]<=100,70,90))

あるいは、

判定2: IIf([データ]>=0 And [データ]<90,0,70)

No1ともども検討してみてください。
    • good
    • 0

方法はいろいろありますが。


以下を標準モジュールに貼り付け、保存します。

Function funcAAA(num As Long)
If num >= 0 And num < 90 Then
funcAAA = 0
End If
If num >= 90 And num < 100 Then
funcAAA = 90
End If
If num >= 100 Then
funcAAA = 100
End If
End Function


Ifの連荘ではなく、Select Caseを
使う方法もありますが、一応ベタなところで。


次に、クエリを作成します。
テーブルの名前をテーブル1、データを
表示しているフィールドをデータとします。

SELECT テーブル1.データ, funcAAA([データ]) AS 判定
FROM テーブル1;

のようにして判定を表示します。
自作関数の代わりにIIfの入れ子で対応する方法も
ありますが、データの範囲が今ひとつわからないので、
IIfの入れ子とfuncAAAの両方を使った方法を以下に
表示しておきます。

SELECT テーブル1.データ, funcAAA([データ]) AS 判定1, IIf([データ]>=0 And [データ]<90,0,IIf([データ]>=90 And [データ]<100,90,100)) AS 判定2
FROM テーブル1;

この回答への補足

prioin654さん早速ありがとうございます。

仮にテーブルを作るとして、

書名  頁数  判定

とした場合に、頁数に"95"を入れた場合に"70"が判定に入るようにしたいのですが、可能でしょうか。
何分素人です、よろしくお願いします。

補足日時:2011/03/24 08:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!