14.04.2006, 14:59 | #1 |
Участник
|
Передвижение по QueryRun
Стоит задача выводить данные постранично, то есть например
при одном запросе с 1 по 10, при втором с 10 по 20 и т.п. Можно ли для перемещения по записям в QueryRun использовать не метод Next, а перемещаться сразу на несколько записей (типа seek)? Если нельзя сделать так, то можно ли как-то задавать Range, чтобы выводить данные вышеописанным способом? |
|
14.04.2006, 15:21 | #2 |
Участник
|
А не проще ли в ExecuteSection объявить счетчик и каждые 10 записей вызывать newPage()?
|
|
14.04.2006, 15:31 | #3 |
Участник
|
Я не использую ReportRun.
Мне нужны только данные из запроса Query. А вообще получаю данные через COM Connector извне. |
|
14.04.2006, 19:52 | #4 |
Участник
|
Ну неужели никто не в курсе, как работают стандартные гриды при скроллинге или гриды Enterprise Portale?
Они же умеют переходить на произвольную запись. |
|
14.04.2006, 22:17 | #5 |
Участник
|
Вообще-то говоря, на формах и в отчетах используется не QueryRun напрямую, а классы FormDataSource (то, что на форме можно получить как *_DS).
Этот класс умеет кэшировать данные, полученные от сервера, на клиенте и позволяет использовать навигацию по ним в произвольном порядке, в том числе и выбирать постранично, переходить в начало или конец датасета, осуществлять поиск. Но все это делается в данных на клиенте, а не на сервере. Класс QueryRun представляет собой интерфейс к серверным курсорам, используемым Axapta'ой, и умеет двигаться лишь в прямом направлении по данным курсора (Next())
__________________
Axapta v.3.0 sp5 kr2 |
|
15.04.2006, 12:15 | #6 |
Участник
|
Хорошо, тогда если отвлечься от QueryRun, то каким образом можно реализовать исходную задачу: постраничное отображение данных? Как я понимаю через COM Connector класс FormDataSource я не смогу использовать. Или нет?
|
|
15.04.2006, 14:15 | #7 |
Administrator
|
Однозначно в COM Connector нельзя использовать все классы (в т.ч.FormDataSource), так или иначе связанные с формой или отчетом (представьте себе что COM Connector выполняется на сервере (т.е. не имеет визуального интерфейса) и подходите с этих позиций).
QueryRun вас не устраивает. Аналог QueryRun (оператор select / next) вас очевидно также не устроит (он также построчно выбирает данные). Других условно говоря штатных средств в Аксапте нет. Проблему сможете решить - если в Аксапте в классе сами реализуете считывание (постраничное) данных, запоминание этих данных (куда-то) и передачу этого "куда-то" через интерфейс COM Connector с последующим разбором. Но это гм... думаю задачка не на 5 минут.
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: murad (1). |
Теги |
com connector, queryrun |
|
|