• ベストアンサー

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とすべてのパターンを作っておけばよいのでしょうが、もっと良い方法はありませんか? お手数おかけします。 よろしくお願いします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

<データ> 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 関数をテーブル参照方式にすればいいでしょう。 しかし、こういうテーブル設計を要求されるケースに未だ遭遇したことがありません。 よっぽど特殊なアプリケーションの開発でもしているのでしょうかね。

xchoxcho
質問者

お礼

回答ありがとうございます。 「特殊なアプリケーション」というわけではなく(^^;) 基準となるマスタが、「数値が2~8の場合は・・・A」とか数値範囲が指定されていて、困ってしまっています。 100や200くらいの数値なら、すべてのパターンでマスタを作っておこうかと思いましたが、何万もの量なので無理だと思いまして↑上記の質問をさせていただきました。 挑戦してみます。ありがとうございました。

その他の回答 (2)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

私なら・・・って参考意見です マスタは#1さんと同じ感じで 参照は、 DLookUp("値","マスタ",[数値] & " Between 下限 And 上限") と、DLookUp関数を使うか?サブクエリにしますが・・・

xchoxcho
質問者

お礼

回答ありがとうございます。 挑戦してみます。 再度不明な点が出ましたら、補足させていただくかもしれません。 よろしくお願いします。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

下限 上限 値 2   8  A 9 15 B 16 100 C クエリデザインビューに他のテーブルとマスタテーブルを取り込み 結合はしないで他のテーブルの数字とマスタの値をとりだし 数字の抽出条件欄に between 下限 and 上限 のようにします

xchoxcho
質問者

お礼

回答ありがとうございました。 やってみます。 再度不明な点が出ましたら、補足させていただくと思いますがよろしくお願いします。

関連するQ&A