#545 | 並べ替えクリア後にレコードソースがリセットされないときの対処法 | フォーム、VBA | |
下記のような条件のフォームにおいて、VBAでサブフォームに対する並べ替え処理をいろいろ行ったあと、並べ替えをクリアしても、そのあとサブフォームのフィルタ(正確にはレコードソースのクエリのWHERE条件)がうまく働かないという現象が起こることがあります。
このプログラムによって並べ替えは確かにクリアされます。しかし、メインフォームの抽出条件となるテキストボックスには何らかの値が代入されているので、本来であればその値が参照されそれに一致するレコードだけが抽出されるべきところなのですが、サブフォームを再クエリしても全レコードが表示されてしまうという現象です。サブフォームにカーソルを置きShift+F9でも更新されませんし、一方で直接クエリを開いてみると正しく抽出されています。 このようなときは、次のように、サブフォームのレコードソースのプロパティを丸ごと入れ替えてしまいましょう。入れ替えるとはいってもまったく別のクエリを指定するのではなく、デザイン時に設定されている既定のクエリを改めて指定し直すということです。 With サブフォームコントロール名 .OrderBy = "" .OrderByOn = False .RecordSource = "ここに既定のクエリ名" .Requery End With |
|||
|
Copyright © T'sWare All rights reserved |