Показать сообщение отдельно
Старый 27.12.2006, 17:43   #14  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от Wamr Посмотреть сообщение
Есть простой способ.
Надо сделать вставку recordinsertlist.insertdatabse(); в несколько раз реже, чтобы запихивалась не 1-10 записей а сразу 1000-2000.
Он делается один раз вообще, я ошибся в коде

Цитата:
Сообщение от Wamr Посмотреть сообщение
селект делается 1 раз, все остальное просто вытягивание результатов с сервака по мере надобности.
Гм, но почему так долго, елси набор данных уже есть, или это нормально?
Систем монитор, кстати, говорить что количество селектов соотв. количеству записей...

Код:
    AgreementTable      agreementTable;
    ContractTable       contractTable;
    ContractPartTable   contractPartTable;
    ;
    prognosisLineList   = new RecordInsertList(tablenum(PrognosisLines));
    prognosisList       = new RecordSortedList(tablenum(PrognosisLines));
    prognosisList.sortOrder(fieldnum(PrognosisLines, PrognosisId),
                            fieldnum(PrognosisLines, AgreementNum),
                            fieldnum(PrognosisLines, ProductNum),
                            fieldnum(PrognosisLines, StartDate),
                            fieldnum(PrognosisLines, YearMonth));

    ttsbegin;

    while select agreementTable
        where agreementTable.DeliveryCategory           == deliveryCategory
        join contractTable
            where contractTable.DeliveryCategory        == agreementTable.DeliveryCategory
                 ---
            join contractPartTable
                where contractPartTable.ContractNum     == contractTable.ContractNum
                 ---
                     {
        this.writePrognosisLines(agreementTable,
                                 contractTable,
                                 contractPartTable); // опрерации + вставка
    }

    prognosisLineList.insertDatabase();
    this.prognosisTotals();

    ttscommit;
__________________
--
regards, Oleksandr