• ベストアンサー

Access2002 データ範囲について

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

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.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([頁数]) のようになっています。

yahhoo-2011
質問者

お礼

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

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

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)
回答No.1

方法はいろいろありますが。 以下を標準モジュールに貼り付け、保存します。 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;

yahhoo-2011
質問者

補足

prioin654さん早速ありがとうございます。 仮にテーブルを作るとして、 書名  頁数  判定 とした場合に、頁数に"95"を入れた場合に"70"が判定に入るようにしたいのですが、可能でしょうか。 何分素人です、よろしくお願いします。

関連するQ&A

専門家に質問してみよう