Показать сообщение отдельно
Старый 30.04.2003, 17:36   #1  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
большое кол-во фильтров
необходимо отфильтровать таблицу(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" - при попытке сохранить таблицу возникает ошибка "Размер Источника больше буфера получателя"

может есть какие нибудь советы для решения подобной задачи?