Страница 2 из 2

Добавлено: 12 дек 2005, 19:41
edward_K
попробуйте вместо
_loop opt_dbt ordered by opt_dbt.date_dolg(desc)

dbt._loop opt_dbt ordered by index opt_dbt_5

а если просто loop то ошибок не возникает?
было еще, что при некоторых операциях незя мешать данные с разных вьюшек. А можно индекс и во from указать
from opt_dbt(opt_dbt_5,desc)

Добавлено: 12 дек 2005, 20:03
coolibin
Добавить нужно "opt_dbt_77=date_change+date_dolg," ?
Но это всеравно не решит проблемы "нет индекса", но попробую с радостью - делать нечего...
обращаю внимание, что если индекс по обеим датам, то ORDER BY не нужен вобще, единственно, что нужно установить порядок индекса или сразу в атрибутах указать

opt_dbt_77=date_change+date_dolg (desc)

Добавлено: 14 дек 2005, 19:36
Optimist
coolibin
ок, попробую пересоздать таблицу с добавлением такого индекса.

edward_K
Ваша конструкция заработала, только без "dbt." впереди.

Код: Выделить всё

_loop opt_dbt ordered by index opt_dbt_5
А можно ли в _loop как-то указать чтоб цикл был в обратном порядке?

Индекс во вьюхе указать не могу - выскакивает ошибка "нет индекса" - об этом я уже писал.

Добавлено: 21 дек 2005, 13:46
levtov
Table struct mySaldoMC
( Ykaz : date,
SummaMC : double )
With Index (Y = Ykaz(desс));
Считай в память и вип сам автоматом отсортирует по убыванию.

Добавлено: 23 дек 2005, 18:57
Optimist
levtov
а как считать в память? В АРД это прокатит или только в вип-интерфейсах?
Вообще уже сделал нужный отчет: 13000 контрагентов в АРД за почти четыре часа пересчитывает. Долговато, после НГ основной пересчет хочу в оффлайн выносить.

Добавлено: 26 дек 2005, 08:13
levtov
АРД я не знаю. А в випе примерно так:
Table struct SelectedOrgs
( NRec_Org : comp, // Организация
NRec_Dog : comp, // Договор
Nrec_DO : comp, // Документ основание
DO_Date : date, // Дата Док. Основания
SUM_SAL : double, // Сумма
Por_raschet : string, // Порядок расчёта
MC_USL : string // За что
)
with Index
( Y = NRec_Org (Unique), X=DO_Date(Desc) );
.........
_Loop по базе с выборкой NrecOrg
{......
if ( modifier GetFirst SelectedOrgs
Where (( NrecOrg == SelectedOrgs.NRec_Org )) = tsOk) then
{ SelectedOrgs.SUM_SAL := SelectedOrgs.SUM_SAL + MakeCrSum; SelectedOrgs.NRec_Dog:= NrecDog;
Update current SelectedOrgs; }
else
{ ClearBuffer( #SelectedOrgs );
SelectedOrgs.NRec_Org := NrecOrg;
SelectedOrgs.NRec_Dog := NrecDog;
SelectedOrgs.SUM_SAL := MakeCrSum;
SelectedOrgs.Nrec_DO := NrecDO;
SelectedOrgs.DO_Date := DateDo;
SelectedOrgs.MC_USL :='';
SelectedOrgs.Por_raschet:='';
insert current SelectedOrgs;
} // end ELSE
}
Насчёт нехватки ОЗУ можно не переживать - Галактика как мне кажется использует файл подкачки если ОЗУ не хватает.