人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Microsoft Accessの質問です。組織に18歳から55歳までの人間が100人近くいて、それらの人に体力測定を行うとします。24以下&25?29、…、45?49&50以上といった具合に年齢区分し、さらにその中でタイムに応じて点数をつけたいのですが、どういった式にすればいいのでしょうか? switch関数やIIf関数を使えばよいところまではわかったのですが、それらをどのように組み合わせたらよいのかがわかりません。なお、年齢ごとにテーブルやクエリを分割することなく、一つのテーブルもしくはクエリにて、一つの数式(式が長くなるでしょうが)で計算したいです。よろしくお願いします!

●質問者: July_Star
●カテゴリ:コンピュータ
✍キーワード:access Microsoft switch クエリ タイム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● らいず
●35ポイント

クエリの中に全ての条件を組み込むのはめんどくさいし、大変なのでモジュールを1つ作成しておいて、そのモジュールをクエリ内で実行させるのがスマートだと思います。

【モジュール】
Public Function age2point(a As Integer, b As Single)
 Dim point(2, 3) As Integer
 

 'a に年齢
 'b にタイム
 
 '年齢別にポイントを設定する
 '1 -29
 point(0, 1) = 1
 point(0, 2) = 2
 point(0, 3) = 3

 '2 30-44
 point(1, 1) = 4
 point(1, 2) = 5
 point(1, 3) = 6
 
 '3 45-
 point(2, 1) = 7
 point(2, 2) = 8
 point(2, 3) = 9
 
 
 '年齢に応じたポイントを返す

 Select Case a
 Case Is < 29 '29歳以下の場合
 Select Case b
 Case Is < 10 'time 10以下
 age2point = point(0, 1)
 Case 11 To 20 'time 11?20の間
 age2point = point(0, 2)
 Case Else 'それ以外
 age2point = point(0, 3)
 End Select
 Case 30 To 44 '年齢30?44まで
 Select Case b
 Case Is < 10
 age2point = point(1, 1)
 Case 11 To 20
 age2point = point(1, 2)
 Case Else
 age2point = point(1, 3)
 End Select
 
 End Select
 

End Function

上のモジュール「age2point」をクエリに組み込みます。

SELECT [テーブル1].[age], [テーブル1].[time], age2point([age],[time]) AS point
FROM テーブル1;

上のSQLをクエリのデザイン画面でSQlビューに変えて貼り付ければクエリ内での記述方法が出てきます。

参考にしてみてください。

◎質問者からの返答

ありがとうございます!


2 ● ikjun
●35ポイント

「その中でタイムに応じて点数をつけたい」というのがなにを意味しているのか良くわかりません。想像するに同じ結果でも年齢が高い人ほど点数をよくするということだろうとは思うのですが?

VBAは使いたくないということなのかも知れませんが、次のような関数をVBAを使って書くとクエリーででも使えるので便利だと思います。

Function class(age)
 Select Case age
 Case Is < 24
 class = 1
 Case 25 To 29
 class = 2
 Case 30 To 34
 class = 3
 Case 35 To 39
 class = 4
 Case 40 To 49
 class = 5
 Case Else
 class = 6
 End Select
End Function

この程度のプログラムなら「Select Case」だけわかれば理解できます。結果は

1=class(20)

2=class(27)

6=class(60)

のようになります。これを応用すればおたずねのことは長い式を使わなくても出来るのではないかと思います。

◎質問者からの返答

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ