いつもお世話になります。Access2007を使用しています。
表計算のMatch関数はAccessには必要ないというということをここの質問と回答で読みました。
必要なものをテーブルから読むからです。
今、IDと氏名、生年月日、性別のフィールドを持つテーブルがあります。
その人の年齢・性別によってある決められた点数を付与するというものを作りたいです。
年齢はクエリ又はフォームの中で表示できますから、下のようなフィールドを持つテーブルを作ったとしても、関連させることができません。
年齢 男 女
20 1 2
30 2 3
40 5 7
どのような考え方をしたらよいでしょう?Accessの操作が詳しくない者に出来る方法ありましたら、よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
解決しましたか。
関数を作成して判定する方法で。テーブル名を「対象テーブル」、「判定テーブル」
とします。
(1) テーブル
対象テーブル:
ID(オートナンバー、主キー)
氏名(テキスト型)
生年月日(日付/時刻型)
性別(テキスト型)
判定テーブル:
判定ID(オートナンバー、主キー)
年令(数値型)
男(数値型)
女(数値型)
(2) 関数
以下の関数をコピーして標準モジュールに
貼り付け、保存してください。
DAOを使っているので、コード表のツールから参照設定
を選択して、Microsoft DAO xx Object Library に
チェックを入れて、優先順位ボタンで上がるところまで
移動してください。
Function funcJudge(ByVal myage As Integer, ByVal mysex As String)
Dim db As Database
Dim rs As Recordset
Dim fld As Field
Dim i As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("判定テーブル")
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
'クエリの年代と判定テーブルの年令が同じものを探す
If myage = rs!年令 Then
'対象テーブルの性別と判定テーブルのフィールド名が同じものを
'探して関数に返す
For Each fld In rs.Fields
If mysex = fld.Name Then
funcJudge = fld.Value
Exit Do
End If
Next fld
End If
rs.MoveNext
Loop
End If
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Function
(3) クエリの作成
以下のSQL文を新しいクエリのSQLビューに貼り付け
保存してください。
SELECT 対象テーブル.ID, 対象テーブル.氏名, DateDiff("yyyy",[生年月日],Date())-(Format([生年月日],"mmdd")<Format(Date(),"mmdd")) AS 年令, 対象テーブル.性別, ([年令]\10)*10 AS 年代, funcJudge([年代],[性別]) AS 判定
FROM 対象テーブル;
クエリを実行すると判定というフィールドに
点数が表示されます。
分からないところがあれば補足してください。
No.1
- 回答日時:
>IDと氏名、生年月日、性別のフィールドを持つテーブルがあります。
>その人の年齢・性別によってある決められた点数を付与するというものを作りたいです。
>年齢はクエリ又はフォームの中で表示できますから、下のようなフィールドを持つテーブルを作ったと
>しても、関連させることができません。
年齢 男 女
20 1 2
30 2 3
40 5 7
上のテーブルはクエリで簡単にできるので不要。
>その人の年齢・性別によってある決められた点数を付与するというものを作りたいです。
これも演算で簡単にできるので
クエリ1つですみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
テーブルに表示されているもの...
-
AccessVBAで任意の複数リンクテ...
-
access vbaにてテンポラリーテ...
-
ACCESSでテーブルをコピーしよ...
-
Microsoft Access 「Form」のボ...
-
AccessのフィールドにIPアドレ...
-
アクセス2016 チェックボックス...
-
外部MDBのリンクテーブルの...
-
Accessのリンクされたテーブル...
-
ACCESS テーブル同士の照合
-
accessエラー回避について
-
Accessでリストの並び順を変更...
-
Acccessで2つのテーブルから1...
-
アクセスのクエリで
-
Access2013で年齢を表示したい。
-
Access システム改築の質問
-
アクセス 部分一致の抽出
-
最新日のデータのみ抽出するク...
-
AccessでのリンクテーブルとADO...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
テーブルに表示されているもの...
-
ACCESSユニオンクエリから新テ...
-
Accessでリストの並び順を変更...
-
access vbaにてテンポラリーテ...
-
Acccessで2つのテーブルから1...
-
Accessのリンクされたテーブル...
-
ACCESS テーブルを見比...
-
Accessのテーブルで、リンク?...
-
クエリで同一テーブルの複数回...
-
ACCESSでテーブルをコピーしよ...
-
アクセス 部分一致の抽出
-
アクセス2000でのリンク先...
-
Accessでリンクテーブルからロ...
-
Microsoft Access 「Form」のボ...
-
ACCESS テーブルを見比...
-
access2000・・テーブルをデー...
-
ACCESSのODBCリンクテーブルの...
-
Accessで使用しているリンクテ...
おすすめ情報