3

フォームに奇妙な問題があります。データソースの executeQuery() メソッドでレコードをフィルター処理する範囲を追加しました。これは、フォームを開くときに正常に機能しますが、グリッド ヘッダーで手動でフィルターを設定すると、ExecuteQuery() メソッドで設定された範囲は機能しません。適用。私の範囲は次のように定義されています:

this.query.dataSourceNo(1).AddRange(fieldnum(MyTable,MyField)).Value('MyRangeValue');

ビューをフォーム DataSource として使用していますが、これが問題なのかもしれません。グリッドにフィルターを手動で追加する場合でも、常に範囲を適用し、それを維持するためのアイデアはありますか? ご協力いただきありがとうございます

4

1 に答える 1

5

super()inの前にフィルターを適用する必要がありますexecuteQuery()

しかし、あなたの問題は、executeQuery()実行するたびにフィルターを追加して、生成された SQL 式に OR が発生することだと思います。

これはそれを行う方法です:

QueryBuildRange qr = SysQuery::findOrCreateRange(this.query.dataSourceNo(1), fieldnum(MyTable,MyField));
qr.value(queryValue('MyRangeValue'));
qr.status(RangeStatus::Locked); // Or ::Hidden
于 2013-01-23T11:13:08.240 に答える