19.12.2007, 22:27 | #1 |
Участник
|
Как программно узнать количество промаркированных строк в гриде?
Как программно узнать количество промаркированных строк в гриде?
Кроме пробега по датасорсу с помощью getNext() и подсчета записей, есть еще более оптимальные и шустрые варианты? |
|
19.12.2007, 22:30 | #2 |
Banned
|
Насколько мне известно, нет. А кто сказал, что getNext() неоптимален? Мы же к базе данных не обращаемся и даже на сервер не идем.
|
|
19.12.2007, 22:57 | #3 |
Участник
|
Но когда промаркированно несколько десятков тысяч записей, запрос на сервере отработает побыстрее (
|
|
19.12.2007, 23:07 | #4 |
Модератор
|
Цитата:
Чем занимается могучий пользователь, маркирующий несколько десятков тысяч записей?
__________________
-ТСЯ или -ТЬСЯ ? |
|
19.12.2007, 23:11 | #5 |
Участник
|
сервер как раз не знает. Записей очень много, и их надо обработать, я подсчитываю их количество для прогресс бара, тем самым убиваю "клиента", как их можно шустро посчитать?
|
|
19.12.2007, 23:25 | #6 |
Участник
|
Храните отдельно в Set или Map признак маркированности.Однако, вопрос "Чем занимается могучий пользователь, маркирующий несколько десятков тысяч записей?" остается открытым.Вы же не хотите сказать, что пользователь потом будет просматривать все эти записи и снимать маркировку с некоторых из них?
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
19.12.2007, 23:29 | #7 |
Участник
|
Под маркировкой я имею ввиду "выделение", пользователь может нажать Ctrl+A и нажать "обработку"
|
|
20.12.2007, 08:44 | #8 |
Пенсионер
|
Ну так это же значит все записи выделил и count() Вам поможет
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
20.12.2007, 09:24 | #9 |
MCTS
|
Jackally
Да не заморачивайтесь этим прогрессбаром в плане подсчёта количества строк. Ведь сами рассудите: пользователя не интересует точное конкретное количество отработанных строк. Всё равно он на запущенный процесс уже никак не повлияет. Разве что может отменить. Пользователя в первую очередь интересует не завис ли процесс, который обрабатывает эти строки. Как вариант, отобразите анимированную иконку, что процесс всё ещё идёт. Или воспользуйтесь тем же прогрессбаром, по установите максимальное ему(прогрессбару) число, например 20000. Пользователь будет видеть что процесс идёт. Посвятите себя более полезным задачам Вместо 20000 можете это прописать X++: QueryRun queryRun; queryRun = new QueryRun(table_ds.query()); element.progressInit("бла-бла", SysQuery::countLoops(queryRun), #AviUpdate,1, 1); Так что всё же прописывайте большую константу и не заморачивайтесь.
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню Последний раз редактировалось Russland; 20.12.2007 в 09:55. |
|
20.12.2007, 10:17 | #10 |
Moderator
|
Если пользователь(код) маркирует строки, то в момент маркировки запомнить маркировку в Map или Set.
|
|
20.12.2007, 11:21 | #11 |
NavAx
|
При выделении через Ctrl+A большого количества строк можно столкнуться с проблемой, такой, что при обработке не все строки будут обработаны. У нас так было. Причина возможно в том, что в датасорс не фетчатся все строки из запроса, Аксапта по мере надобности их подгружает. А getNext() видимо работает с уже загруженными строками.
ЗЫ. Наверняка все наблюдали данный эффект при копировании в буфер обмена больших объемов строк из грида, иногда копируется строк меньше чем надо. |
|
20.12.2007, 18:16 | #12 |
Участник
|
Цитата:
Если "Все" - запрос к серверу на количество записей (select count(recId)) Если "Только выделенные" - подсчет по getNext() |
|
24.12.2007, 17:16 | #13 |
Участник
|
Всем спасибо, забил на прогресс бар ))
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Количество строк в Query | 19 | |||
Предельное количество строк в Report | 1 | |||
Маркировка строк в гриде | 8 | |||
Количество строк на страницу | 2 | |||
Как подсчитать количество строк в отчете | 2 |
|