Цитата:
Сообщение от
romeo
Цитата:
Сообщение от
art
Я хотел узнать - как в одном прогрессе @1@@@@@@@@.
А, вы предлагаете вариант с один диалоговым окном , и несколькими прогрессами
@1@@@@@@@@
@2@@@@@@@@
1 Игнорируйте вложенные циклы. Обновляйте только в первом.
2 Посчитать колво обрабатываемых записей во всех циклах и это считать общим COUNTом. В последнем вложенном цикле наращивать значение счетчика, сдвигая значение прогресса.
1) если кол-во в первом цикле будет = 1. Тогда , если вся выборка займет например час - то, пользователь увидит 0%, и через час 100%
2) Как я могу посчитать кол-во во всех циклах - если внутренние циклы постоянно имеют разное кол-во записей.
Цитата:
Сообщение от
randrews
Цитата:
Сообщение от
art
Добрый день.
Dial.OPEN('Выполнение @1@@@@@@@');
I_COUNT := Employee1.COUNT;
Repeat
I := I + 1;
Dial.UPDATE(1,ROUND((I / I_COUNT * 10000),1));
Until
Цитата:
Сообщение от
art
И хотел узнать как можно в одном прогрессе отобразить всё
Зависит от того, какой код будет во вложенных циклах.
Для общего случая -
Вариант 1) Если есть возможность быстро вычислить сумарное количество итераций, то Вы сами выше напеисали код.
Вариант 2) Остается только неравномерное движение прогрес бара.
Например
Код:
Dial.OPEN('Выполнение @1@@@@@@@');
I_COUNT := Employee1.COUNT;
REPEAT
I := I + 1;
J_COUNT := SomeTable.COUNT;
J := 0;
REPEAT
J := J + 1;
Dial.UPDATE(1,ROUND(((I+J / J_COUNT ) / I_COUNT * 10000),1));
UNTIL SomeTable.NEXT = 0;
UNTIL Employee1.NEXT = 0;
P.S. J обнулить забыл

Ну и FIND если надо поставьте
Получается прогресс будет прыгать , то вперед, то назад ?