У меня есть набор данных, я хочу применить фильтр на основе количества записей в полях типа набора данных, например: 'NESTED_DATASET_FIELD.RecordCount> 0'
Если набор данных поступает из механизма хранения на основе SQL, используйте запрос select distict для объединенной таблицы, в котором в результирующем наборе содержатся только поля из основной таблицы. Пусть движок SQL сделает всю работу за вас.
В зависимости от вашей ситуации вы можете использовать:
В OnFilterRecord мероприятии вы можете:
OnFilterRecord
Принять: = myDataSetField.NestedDataSet.RecordCount> 0;
Если у вас есть SQL-сервер, вы можете использовать Exists или Count, чтобы получать только те записи, которые вам нужны. Возможно, это лучший подход, если вы находитесь в сети. Однако я не знаю, какая у вас инфраструктура.
Exists
Count
В событии OnFilterRecord вы можете:
Принять: = не myDataSetField.IsNull; // Просто проверяем, является ли поле DataSet пустым - это один из быстрых способов сделать это ... но это зависит от структуры ваших данных / набора данных и т. д.
Иногда лучше иметь специальное поле в вашем наборе данных / таблице, чтобы указать этот статус, потому что обычно получение такой информации из вложенного набора данных может быть дорогостоящим. (Нужно взять его хотя бы частично и т. Д.)
Кроме того, по тем же соображениям (см. 4. выше), возможно, у вас может быть Хранимая процедура (если позволяет ваш бэкэнд БД) для получения этой информации.
НТН