Как реализовать выборку без лог. таблицы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение 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)
coolibin
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 29 мар 2005, 17:49

Сообщение coolibin »

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

opt_dbt_77=date_change+date_dolg (desc)
Optimist
Постоянный обитатель
Сообщения: 104
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Moscow
Контактная информация:

Сообщение Optimist »

coolibin
ок, попробую пересоздать таблицу с добавлением такого индекса.

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

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

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

Индекс во вьюхе указать не могу - выскакивает ошибка "нет индекса" - об этом я уже писал.
levtov
Постоянный гость
Сообщения: 60
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Казахстан, Экибастуз, АО "ЕЭК"
Контактная информация:

Сообщение levtov »

Table struct mySaldoMC
( Ykaz : date,
SummaMC : double )
With Index (Y = Ykaz(desс));
Считай в память и вип сам автоматом отсортирует по убыванию.
Лучше перебдеть, чем недобдеть!
Optimist
Постоянный обитатель
Сообщения: 104
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Moscow
Контактная информация:

Сообщение Optimist »

levtov
а как считать в память? В АРД это прокатит или только в вип-интерфейсах?
Вообще уже сделал нужный отчет: 13000 контрагентов в АРД за почти четыре часа пересчитывает. Долговато, после НГ основной пересчет хочу в оффлайн выносить.
levtov
Постоянный гость
Сообщения: 60
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Казахстан, Экибастуз, АО "ЕЭК"
Контактная информация:

Сообщение 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
}
Насчёт нехватки ОЗУ можно не переживать - Галактика как мне кажется использует файл подкачки если ОЗУ не хватает.
Ответить