- ベストアンサー
Access2002 データ範囲について
詳しい方ご教授願います。 Access2002を使用しています、下記のような場合に値を返すことは出来るのでしょうか。 よろしくお願い致します。 0~90 → 0 90~100 → 70 行ごとに値を返したいのです。
- みんなの回答 (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([頁数]) のようになっています。
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
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ともども検討してみてください。
- piroin654
- ベストアンサー率75% (692/917)
方法はいろいろありますが。 以下を標準モジュールに貼り付け、保存します。 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"が判定に入るようにしたいのですが、可能でしょうか。 何分素人です、よろしくお願いします。
お礼
この度は丁寧に教えていただきありがとうございました。 あとは工夫して自分なりにやりたいと思います。 また分からない場合はご教授願います。