![]() |
#6 |
Участник
|
Есть временная таблица rowQuota с ДатаС, ДатаПо и Периодом. Если Период меньше, чем кол-во месяцев между датами, то создаём новую строку, где ДатаС = ДатаС+месяц(Период)
Таблица не очень большая, около 100к записей. Да, с индексом в 2 раза быстрее получилось. И решил использовать RecordInsertList X++: ttsbegin; list = new RecordInsertList(rowQuotaTmp.TableId); while select rowQuota index hint Idx { buf2buf(rowQuota, rowQuotaTmp); monthDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Month); dayDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Day); while(rowQuotaTmp.UsagePeriod <= monthDiff && dayDiff > 0) { rowQuotaTmp.DateFrom = dateMthFwd(rowQuotaTmp.DateFrom, rowQuotaTmp.UsagePeriod); rowQuotaTmp.DatePotreb = rowQuotaTmp.DateFrom; //rowQuota.insert(); list.add(rowQuotaTmp); monthDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Month); dayDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Day); } } list.insertDatabase(); ttscommit; |
|
|
|