30.04.2003, 17:36 | #1 |
Участник
|
большое кол-во фильтров
необходимо отфильтровать таблицу(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" - при попытке сохранить таблицу возникает ошибка "Размер Источника больше буфера получателя" может есть какие нибудь советы для решения подобной задачи? |
|