10/02/2021

Access。並べ替え。Excelと違ってデータ型を考えないといけません。【SORT】

Access。並べ替え。Excelと違ってデータ型を考えないといけません。

<並べ替え>

Accessのテーブルを用途に合わせて並べ替えをしたいときに、Excelと違って、そのフィールドの「型」を考えて実行しないと、きちんと並べ替えができません。


用意したのは次のテーブルです。


最初に、担当NOフィールドと件数フィールドの「型」を確認しておきます。


担当NOフィールドは、「短いテキスト型」。文字型ですね。

件数フィールドは、「数値型」。

というように設定されています。


それでは、クエリをつかって、件数フィールドを降順に並べてみましょう。


作成タブの「クエリデザイン」をつかって、クエリをつくっていきます。


件数フィールドの並べ替えに「降順」と設定したら、実行して確認してみましょう。


このように、件数フィールドは、降順で並べ替えを行うことが簡単にできます。

これは、文字型でない数値型フィールドだったので、並べ替えを実行した場合、すんなり並べ変わったわけですが、担当NOフィールドを昇順で並べ替えをしようとしたら、うまく並べ替えができません。


担当NOフィールドに並べ替えの昇順設定をしたら、実行して確認してみましょう。


残念ながら、担当NOフィールドは、おかしな順番で並べ替えが実行されています。


実のところ、昇順といえば、昇順で並べ替えされてはいるのです。

この担当NOフィールドは、「短いテキスト型」ということで、文字なのが、希望のように並ばない原因です。


原因が、文字型だからとわかったところで、元のフィールドの「型」を文字型から数値型に変換していいのでしょうか?

意味があって文字型にしているはずです。


そこで、元のデータの「型」を変更するのではなく、クエリ上で、文字型を数値型に変換することができる「関数」があります。


それが、CLng関数。

CLng関数は、長整数型に変換してくれる関数です。

注意点は、整数だけを扱うフィールドの時に使用することができます。


小数点の場合は、CDbl関数を使います。

なお、金額の場合は、CCur関数を使います。


CLng関数をつかった演算フィールドを作っていきます。


演算フィールドには、

担当NO_C: CLng([担当NO])

と設定しました。

それでは、実行して確認してみましょう。


 

このように、昇順で並べ替えができました。


算出するようなことがある場合は、数値型をつかって、算出することがなければ、文字型でいいように考えてしまいますが、並べ替えのことも考慮して、算出はしないけれども、並べ替えはおこなうことが、想定される場合は、数値型のフィールドで設定しておくと、このような変換系の関数をつかわなくても済みます。


Excel以上に、Accessでは、「型」というのが重要になりますので、Excelのときから「型」という意識をもって作成や処理をしていくといいかもしれませんね。