Microsoft Access 掲示板

コンボボックスのリストを昇順にしたい / 1

16 コメント
views
4 フォロー
1
hatena 2024/04/20 (土) 05:03:41 修正

全角数字はVal関数では数値と判断されずに0になります。
StrConv関数で半角に変換してVal関数で数値化すればいいでしょう。

SELECT T_昇順実験.短いテキスト型, Val(StrConv([短いテキスト型],8)) AS 式1
FROM T_昇順実験
ORDER BY 2;

StrConv 関数 (Visual Basic for Applications) | Microsoft Learn


そもそも論ですが、数値順にならべたいフィールドを、テキスト型で全角数字にする意味が不明です。
素直に数値型のフィールドにしておけば無駄なことをせずにすみます。
StrConvやValで囲むことで無駄な処理が増えて、かつインデックスが無効になるので重くなります。

もし、表示上、全角にしたいのなら、フィールドのデータ型は数値型にしておいて、表示するときに全角に変換すればいいでしょう。

SELECT StrConv(T_昇順実験.数値型,4) AS 数値型
FROM T_昇順実験
ORDER BY T_昇順実験.数値型;
通報 ...
  • 2
    驚天動地!前任者失踪丸 2024/04/20 (土) 08:33:03 23e8e@44ebd >> 1

    同じフィールドにアルファベットが入る可能性があるので数値型に出来ません。

  • 3

    ならばデータ例もそうのように提示すべきですね。
    全角数字のあとにアルファベットがくるのですか。
    であるなら、前回の回答の最初のクエリでいいでしょう。

    商品コード的なもので、数字+アルファベット という書式のものなら、
    数字部分とアルファベット部分にわけて、それぞれ数値型、テキスト型フィールドにするという設計もあります。

    というようなこともあるので、どのような書式になるのか、データ例もあげて、仕様を明確に提示してください。

    4
    驚天動地!前任者失踪丸 2024/04/20 (土) 09:58:17 23e8e@44ebd >> 3

    説明不足で申し訳ありません。
    ひとつ前の質問と関連するのですが、他のコンボボックスで選んだものによって選択肢が変わります。

    例えば昇順に並べ替えたいコンボボックスがcmb_検索2だとすると、cmb_検索1でAを選ぶと1~20が、Bを選ぶとA~Zがリストに表示されるといったような感じです。