|
![]() |
#1 |
Участник
|
Так мне выделенность и не нужна, мне фильтры нужны. А целиком Table1 я пробовал на всякий случай.
Думал, есть что-нибудь вроде table_ds.tableVariable() или queryRun.tableVariable() |
|
![]() |
#2 |
MCP
|
Честно говоря я никак не могу сообразить: что нужно получить в итоге?
Но если нужен фильтр - это однозначно Query датасорса. Если вам нужен фильтр и метод обрабатывает данные каким-то хитрым способом, в зависимости от наложенного фильтра - можно использовать в качестве параметра query. P.S.: QueryRun в качестве входного параметра использовать не желательно, т.к. обычно приходится добавлять условия в Query и получится такая картина: где-то был сформирован query, вы где-то от него сделали queryRun, потом передали его в метод, в методе опять получили от него query дополнили условия и т.п. ![]() Последний раз редактировалось kornix; 18.04.2011 в 14:11. |
|
![]() |
#3 |
MCTS
|
Цитата:
Обрабатывать стоит именно явно выделенные (промаркированные) пользователем записи, и каждую запись передавать в метод.
__________________
Dynamics AX Experience |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от CDR
![]() Обрабатывать записи, выводящиеся в грид - не совсем правильно, т.к. в общем случае пользователь может и не видеть ВСЕХ отфильтрованных записей, которые выводятся в грид. Более того, аксапта может и не выбрать из БД все отфильтрованные записи для отображения на форме (например, условиям фильтра удовлетворяют 100 записей, на форме отображаются 15 записей, а в курсор из базы выбраны только 30 записей).
Обрабатывать стоит именно явно выделенные (промаркированные) пользователем записи, и каждую запись передавать в метод. |
|
![]() |
#5 |
Участник
|
Цитата:
грид живет на клиенте. данные живут на сервере. со всеми вытекающими последствиями для трафика и производительности вам уже об этом говорили. =============== по поводу "выделенных строк" см axaptapedia: Tutorial Form MultiSelectCheckBox но обратите внимание, что "выделенные строки" и "отфильтрованные строки" - разные вещи. |
|
![]() |
#6 |
северный Будда
|
Цитата:
И кстати говоря - не стал бы я так уж хаять механизм селектов. Достаточно много есть задач, где нужна жёсткая выборка с простейшим суммированием, типа X++: while select sum(Qty) from MyTable group by ItemId {...}
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 19.04.2011 в 10:14. |
|
![]() |
#7 |
Участник
|
Цитата:
![]() напомню Цитата:
Цитата:
Сообщение от pitersky
![]() И кстати говоря - не стал бы я так уж хаять механизм селектов. Достаточно много есть задач, где нужна жёсткая выборка с простейшим суммированием, типа
X++: while select sum(Qty) from MyTable group by ItemId {...} хотя бы потому что в myTable может быть много миллионов записей. попытка сделать одновременно два алгоритма - один для малого количества записей, другой для большого количества записей - приведет к неоправданному усложнению. и к принципиально спорной задаче - какое количество является малым. ![]() еще раз посмотрите на исследование axaptapedia: Tutorial Form MultiSelectCheckBox ==================== и еще раз напомню, что первоначальный вопрос был о записях, которые попали в грид, а не о записях выбранных пользователем. |
|
![]() |
#8 |
северный Будда
|
Цитата:
Сообщение от mazzy
![]() А я бы стал хаять даже для таких "простейших" случаев.
хотя бы потому что в myTable может быть много миллионов записей. попытка сделать одновременно два алгоритма - один для малого количества записей, другой для большого количества записей - приведет к неоправданному усложнению. и к принципиально спорной задаче - какое количество является малым. ![]() ![]() Изначальный вопрос состоял в обработке набора записей в таблице, без уточнения способа отбора. Я вполне могу себе представить ситуацию, когда пользователь хочет обработать две-три отдельные строки, а не всё, что относится к фильтрованной выборке. Если принято решение, что такого быть не должно - тогда да, нам грид не нужен, достаточно серверной Query
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 19.04.2011 в 11:09. |
|
![]() |
#9 |
Участник
|
тоже не очень понимаю что нужно.
Geo, может сформулируете на человеческом языке исходную задачу? Query - запрос QueryRun - результаты, которые SQL-сервер отдает в ответ на Query QueryRun - позволяет обратится к текущей полученной позиции (одна запись, если таблица одна, или по одной записи на каждую таблицу в запросе). QueryRun.get() - метод, который возвращает данные в табличную переменную табличная переменная - хранит данные из одной записи таблицы внимание! если табличная переменная получена в результате select, то к ней можно применить next. типичный пример работы с query X++: void job1(Args args) { MyTable myTable; Query q = new Query(queryStr(myAOTQuery); // внутри что-то вроде select * from myTable; QueryRun qr = new QueryRun(q); while( qr.next() ) // в первый проход запрос отправляется на SQL-сервер { myTable = qr.get(myTable.TableId); ///.... } } myTable_ds.query() - запрос, который создал программист в AOT myTable_ds.queryRun() - результаты, которые выводятся в форму. Будьте внимательны с позиционированием и next. myTable_ds.queryRun().Query() - запрос, который действует в данный момент для данного экземпляра формы. Может отличаться от первоначального, если пользователь задаст фильтры, сортировку и т.п. Цитата:
Цитата:
в следующем выражении LedgerTrans ltr; переменная ltr является табличной в вашем понимании? надо отметить, что в Аксапте query и select-написанный-в-коде никогда не пересекаются. и никогда друг в друга не преобразуются. это два совершенно разных инструмента. Query никогда не преобразуется в select, а select никогда не преобразуется в Query. нет. это сильно устаревший и унаследованный от старых версий механизм, от которого никак не могут отказаться. в "табличных переменных" и в select'ах не работают пользовательские фильтры с запятыми, восклицательными знаками и прочими символами. кроме того, select нельзя динамически модифицировать. фильтры из Query не работают в select. |
|
|
За это сообщение автора поблагодарили: Geo (1). |
![]() |
#10 |
Модератор
|
Цитата:
QueryRun.query().dataSourceNo(1).toString(); С Уважением, Георгий |
|
![]() |
#11 |
северный Будда
|
Я так подозреваю, что любой синтаксис в Аксапте (хоть селект, хоть query) всё равно преобразуется в язык SQL-запроса при передаче в обработку на сервере.
__________________
С уважением, Вячеслав |
|
Теги |
grid, query, датасорс (datasource), табличный курсор, фильтр |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|