- ベストアンサー
Accessで、マスター情報を参照して値を抽出したいがキーが数字範囲の場合
いつも大変お世話になっております。m(_ _)m Accessの質問をさせてください。 マスタテーブルを作成し、マスタ情報を元に他テーブルで値を参照したいのですが、マスタのキーになるフィールドの情報が「数値範囲」の場合は、どのように参照できるのでしょうか? 例) 数字が 2~8の場合はA 9~15の場合はB 16~100の場合はC というようなマスタがあり、他テーブルの情報は (1)・・・5 (2)・・・12 (3)・・・80 という数値が入っています。 マスタ情報を参照して (1)・・・5/A (2)・・・12/B (3)・・・80/C というように参照したいのですが、マスタテーブルの作り方やクエリでの算出の仕方を教えてください。 2~8の場合は、2,3,4,5,6,7,8とすべてのパターンを作っておけばよいのでしょうが、もっと良い方法はありませんか? お手数おかけします。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<データ> ID___数値 1____5 2____12 3____80 <クエリ1> ID______数値__翻訳結果 1_____5_________A 2____12________B 3____80________C このクエリをSQLビューで参照すると・・・ SELECT データ.ID, データ.数値, XferValue([数値]) AS 翻訳結果 FROM データ; Public Function XferValue(ByVal N As Integer) As String Dim R As String Select Case N Case 2 To 8 R = "A" Case 9 To 15 R = "B" Case 16 To 100 R = "C" Case Else End Select XferValue = R End Function 質問者は、この関数の条件文と戻り値をテーブルにしようとしているのでしょうか? ならば、XferValue 関数をテーブル参照方式にすればいいでしょう。 しかし、こういうテーブル設計を要求されるケースに未だ遭遇したことがありません。 よっぽど特殊なアプリケーションの開発でもしているのでしょうかね。
その他の回答 (2)
- Dxak
- ベストアンサー率34% (510/1465)
私なら・・・って参考意見です マスタは#1さんと同じ感じで 参照は、 DLookUp("値","マスタ",[数値] & " Between 下限 And 上限") と、DLookUp関数を使うか?サブクエリにしますが・・・
お礼
回答ありがとうございます。 挑戦してみます。 再度不明な点が出ましたら、補足させていただくかもしれません。 よろしくお願いします。
- CHRONOS_0
- ベストアンサー率54% (457/838)
下限 上限 値 2 8 A 9 15 B 16 100 C クエリデザインビューに他のテーブルとマスタテーブルを取り込み 結合はしないで他のテーブルの数字とマスタの値をとりだし 数字の抽出条件欄に between 下限 and 上限 のようにします
お礼
回答ありがとうございました。 やってみます。 再度不明な点が出ましたら、補足させていただくと思いますがよろしくお願いします。
お礼
回答ありがとうございます。 「特殊なアプリケーション」というわけではなく(^^;) 基準となるマスタが、「数値が2~8の場合は・・・A」とか数値範囲が指定されていて、困ってしまっています。 100や200くらいの数値なら、すべてのパターンでマスタを作っておこうかと思いましたが、何万もの量なので無理だと思いまして↑上記の質問をさせていただきました。 挑戦してみます。ありがとうございました。