以下の内容はDataverseをデータソースとする場合の挙動についてです。
他のデータソースを使用した場合同現象が発生するのかはまだ検証していないです。
取得行数が2000行以上になる場合の注意点
検索機能を実装する場合、関数で取得した結果が2000行以上でありかつギャラリーコントロールを使用して表示しようとすると正しい表示結果が表示されなくなります。※エラーにもなりません。
このため回避策として、検索機能を実装する場合コレクション機能を使用する必要があります。
また、取得した結果の行数が2000行以上の場合はギャラリーを表示しない、などの仕様の検討も必要です。
(2023/03/15 追記)
委任の問題が絡んでいるようです。
複数の検索機能を実装する場合の注意点
-
様々なコントロールのイベントプロパティで同様の処理を何回も呼び出す必要が生じます。
対策としては、非表示のボタンを追加してファンクションのように扱い、トリガーとしたいイベントのプロパティにはselect(非表示ボタン)と記述し、非表示ボタンをクリックさせます。- ただし、別の画面からselect関数を実行することはできません。
-
完全一致の検索を行うFilter関数と部分一致検索を行うSearch関数は同時に実行することが不可能です。(動きはしますが、警告文が出ます。)
このため、- 完全一致検索の結果をコレクションに格納
- 部分一致の条件に当てはまる行をコレクションから削除する
などの処理をコーディングすることで実装することでができます。
【実装例】検索機能1および検索機能2の条件に該当する行を取得する
ClearCollect(
Collection1,
ForAll(
Filter(任意のデータソース下の任意のテーブル,
列名 = 検索機能1.Value
),
{Collction1の新しい列名1:ThisRecord.元データの列1, Collction1の新しい列名2:ThisRecord.元データの列2, Collction3の新しい列名:ThisRecord.元データの列3})
);
//検索機能コントロール2
If(IsEmpty(Trim(検索機能2.Value))<>true,
RemoveIf(Collection1, !OR(検索機能2の条件));
);
UpdateContext({NumberRows: CountRows(Collction1)});
上記の場合、ギャラリーのItemプロパティには
If(NumberRows<2000, Collection1)
と記述します。