большое кол-во фильтров
необходимо отфильтровать таблицу(MyTable) по большому количеству полей (22) и затем подсчитать сумму decimal поля.
подход может быть наипростешим:
SETFILTER(Field1, 'Filter1');
...
SETFILTER(Field22, 'Filter22');
IF FIND('-') THEN
REPEAT
Amount := Amount + "Decimal Field Value";
UNTIL NEXT = 0;
но работает это все естественно медленно при большом кол-ве записей.
другой подход через SumIndexField - но здесь проблема - ключ не может быть больше определенного кол-ва байт - не составить необходимый ключ
и еще один подход - создать дополнительную таблицу
с полями "Field1 Filter" (Flow Filter), ....., "Field22 Filter" (Flow Filter)
поле "Decimal Field Value" (FlowField) Table Relation у нее будет следующий:
MyTable."Decimal Field Value" WHERE (Field1=FIELD(Field1 Filter),...Field22=FIELD(Field22 Filter))
но и здесь свои грабли - при добавлении 22 фильтра для "Decimal Field Value" - при попытке сохранить таблицу возникает ошибка "Размер Источника больше буфера получателя"
может есть какие нибудь советы для решения подобной задачи?
|