Microsoft Access 掲示板

場合分けについて / 2

14 コメント
views
4 フォロー
2

りんご様

返信ありがとうございます。
switch関数で動くことは確認できたのですが、場合分けの数を増やしていったところ、16個ほどの条件で、指揮が複雑すぎます、というエラーが出るようになりました。
他に手法はないのでしょうか?(そもそもaccessはそういうツールではないし、Excelでやればどうにかなるのですが…)
ご教授いただけますと幸いです。
よろしくお願いいたします。

通報 ...
  • 3
    mayu 2021/07/12 (月) 19:49:09 修正 ef559@a99f1 >> 2

    ある属性X( 1 )を決めると、他の属性Y( AA )の値が一意に決まる
    ある属性X( 2 )を決めると、他の属性Y( AB )の値が一意に決まる
    ある属性X( 3 )を決めると、他の属性Y( AC )の値が一意に決まる
    ...
    場合、「 Y は X に関数従属している 」といいます。
    Y の種類が少数の場合は
    IIf関数やSwitch関数を使って X を定義するのもいいでしょうけど
    Y の種類が多い場合や、今後、Y の種類が増えることが想定される場合は
    テーブル設計を見直したほうがいいでしょう。

    CREATE TABLE t_分類マスタ
    (
          分類CD INT           NOT NULL PRIMARY KEY
        , 分類名 VARCHAR( 50 ) NOT NULL
    );
    
    分類CD分類名
    1AA
    2AB
    3AC
    4AD
     
    `sql
    CREATE TABLE t_分類トラン
    (

          入力ID  COUNTER  NOT NULL PRIMARY KEY
        , 分類    VARCHAR( 50 ) NOT NULL
    );

    | 入力ID |  分類 |
    |--------|:-----:|
    | 1      | AA-01 |
    | 2      | AB-01 |
    | 3      | AB-02 |
    | 4      | AA-02 |
    | 5      | AA-03 |
    | 6      | AC-01 |
    | 7      | AB-03 |
    | 8      | AA-04 |
    | 9      | AB-04 |
    | 10     | AB-05 |
     
    だとすると
    

    SELECT y.入力ID
         , y.分類
         , x.分類CD
    FROM t_分類マスタ x
       , t_分類トラン y
    WHERE x.分類名 = Left$( y.分類, 2 )
    ORDER BY 1 ;

    | 入力ID | 分類  | 分類CD |
    |--------|-------|--------|
    | 1      | AA-01 | 1      |
    | 2      | AB-01 | 2      |
    | 3      | AB-02 | 2      |
    | 4      | AA-02 | 1      |
    | 5      | AA-03 | 1      |
    | 6      | AC-01 | 3      |
    | 7      | AB-03 | 2      |
    | 8      | AA-04 | 1      |
    | 9      | AB-04 | 2      |
    | 10     | AB-05 | 2      |
    
  • 7
    りんご 2021/07/12 (月) 22:18:20 c564b@0e907 >> 2

     この回答は、お遊びですので、軽く流して下さい。

    テーブル1:フィールド1(短いテキスト型)
    テーブル2:フィールド1(短いテキスト型)・・・テーブル1をコピペして下さい。

    フィールド1
    A
    B
    C
    X
    Y
    Z

    クエリ1(テーブル作成クエリ)

    フィールド:フィールド1フィールド1英字分類:[テーブル1]![フィールド1] & [テーブル2]![フィールド1]
    テーブル:テーブル1テーブル2
    並び替え:昇順 昇順 
    表示:

     
     テーブル作成クエリを実行したら、1列目にオートナンバー型のフィールド「カラム」を挿入して下さい。データシートビューに切り替えると、オートナンバリングが実行されます。

    英字分類のテーブル

    カラム英字分類
    1AA
    2AB
    3AC
    674ZX
    675ZY
    676ZZ

     同じ要領で、数字分類(短いテキスト型)のテーブルを作ります。

    数字分類のテーブル

    数字分類
    00 ※
    01
    02
    97
    98
    99

    ※最初のレコード、00は削除して下さい。

     最後に、英字分類テーブルをテーブル1、数字分類テーブルをテーブル2に見立て、同じ要領で進めて下さい。

    クエリの途中経過

    カラム英字分類数字分類分類:[英字分類] & “-“ & [数字分類]
    1AA01AA-01
    1AA02AA-02
    1AA03AA-03
    676ZZ97ZZ-97
    676ZZ98ZZ-98
    676ZZ99ZZ-99