Jackally
Да не заморачивайтесь этим прогрессбаром в плане подсчёта количества строк. Ведь сами рассудите: пользователя не интересует точное конкретное количество отработанных строк. Всё равно он на запущенный процесс уже никак не повлияет. Разве что может отменить. Пользователя в
первую очередь интересует не завис ли процесс, который обрабатывает эти строки. Как вариант, отобразите анимированную иконку, что процесс всё ещё идёт. Или воспользуйтесь тем же прогрессбаром, по установите максимальное ему(прогрессбару) число, например 20000. Пользователь будет видеть что процесс идёт.
Посвятите себя более полезным задачам
Вместо 20000 можете это прописать
X++:
QueryRun queryRun;
queryRun = new QueryRun(table_ds.query());
element.progressInit("бла-бла", SysQuery::countLoops(queryRun), #AviUpdate,1, 1);
countLoops(queryRun) вернёт количество строк в квериране, а оно всегда будет больше, чем пользователь выделил. Ничего страшного не случится, если процесс завершится раньше, чем прогрессбар дойдёт до конца. Хотя в случае десятков тысяч строк в queryRun countLoops() конечно будет пригружаться
Так что всё же прописывайте большую константу и не заморачивайтесь.