次の方法で共有

ListBoxのソート指定が反映されない場合がある

Anonymous
2018-12-20T07:05:01+00:00

Yamaと申します。

Access2016のリストボックスでおかしな現象が発生しております。

◎OS

Windows7/Windows10

◎Office

Office2016

◎現象

画面上にリストボックスを配置したフォームを起動した際、毎回では無いが

表示されるデータのソートが逆転する。

→値集合ソースにてテーブルを選択し、メインテーブルのキー項目(数値型)にて昇順で

並べ替えている。

◎試してみたこと

・リスクボックスを複製 →解決せず

・リストボックスを作り直し →解決せず

・ソート用列を追加してみてそちらで並べ替え →解決せず

・値集合ソースをVBA内で生成(SQL文、キー項目列の昇順)してセット →解決せず

・参照元のリンクテーブルのリンク貼り直し →解決せず

・パッチの適用状況を確認 →最新

上記現象について、何かしらの対策をご存じの方がいらっしゃいましたら情報提供頂けると

幸いです。

以上、ご教授の程何卒宜しくお願い申し上げます。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-12-21T05:22:34+00:00

    hatena19さん

    回答ありがとうございます。

    値集合ソースを動的に書き換える処理は、マクロやイベントプロシージャー

    のいずれでも行っておりませんので、

    ・フォームの作り直し

    ・データベースファイルの作り直し

    を先ずは試してみようと思います。

    以上、宜しくお願い致します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2018-12-21T04:30:51+00:00

    あと、考えられるのは、どこかでマクロかイベントプロシージャでリストボックスの値集合ソースを書き換える処理が走っているぐらいですね。

    それもないとすると、そのフォームと同様のフォームを一から作り直してみるとか。

    新規にデータベースファイルを作成して、同様のフォーム、リストボックスを作成して再現するかどうか確認するとか。

    Officeをアンインストールして、再インストールするとか。

    私からアドバイスできるのはこれぐらいですかね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-12-20T23:33:06+00:00

    hatena19さん

    ご回答頂きまして有難うございます。

    値集合ソースですが、並べ替えを指定したクエリにしています。

    元々はリストボックスのプロパティで指定しています。

    試しにプロパティからでは無く、VBA側でSQL文(並べ替え指定あり)の

    文字列を生成して、RowSourceにセットする方法をとってみたのですが

    こちらでも同じでした。

    動きとしては、並べ替えを指定しているにもかかわらず、その指定がランダムで

    リストボックスに反映されないという感じの動作をします。

    (正常な時)

    1 TEST01

    2 TEST02

    3 TEST03

    100 TEST100

    (おかしい時)

    100 TEST100

    1 TEST1

    キー項目で昇順に並んでいるのが希望する動作なのですが、まれに順番が逆転して

    表示される。(毎回では無く、何度か画面を開きなおすと発生する)

    ただ不思議なのは、逆転している時の値集合ソースをみても、正常な時と比べて

    差が無いのです。

    以上、大変お手数ですが宜しくお願い致します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2018-12-20T10:51:00+00:00

    値集合ソースには、並べ替えを指定したクエリまたはSQLにしてますか。

    SELECT * FROM テーブル名 ORDER BY キー項目;

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません