19.04.2011, 10:41 | #21 |
Участник
|
Цитата:
напомню Цитата:
Цитата:
Сообщение от pitersky
И кстати говоря - не стал бы я так уж хаять механизм селектов. Достаточно много есть задач, где нужна жёсткая выборка с простейшим суммированием, типа
X++: while select sum(Qty) from MyTable group by ItemId {...} хотя бы потому что в myTable может быть много миллионов записей. попытка сделать одновременно два алгоритма - один для малого количества записей, другой для большого количества записей - приведет к неоправданному усложнению. и к принципиально спорной задаче - какое количество является малым. еще раз посмотрите на исследование axaptapedia: Tutorial Form MultiSelectCheckBox ==================== и еще раз напомню, что первоначальный вопрос был о записях, которые попали в грид, а не о записях выбранных пользователем. |
|
19.04.2011, 10:51 | #22 |
Модератор
|
Цитата:
QueryRun.query().dataSourceNo(1).toString(); С Уважением, Георгий |
|
19.04.2011, 11:06 | #23 |
северный Будда
|
Цитата:
Сообщение от mazzy
А я бы стал хаять даже для таких "простейших" случаев.
хотя бы потому что в myTable может быть много миллионов записей. попытка сделать одновременно два алгоритма - один для малого количества записей, другой для большого количества записей - приведет к неоправданному усложнению. и к принципиально спорной задаче - какое количество является малым. Изначальный вопрос состоял в обработке набора записей в таблице, без уточнения способа отбора. Я вполне могу себе представить ситуацию, когда пользователь хочет обработать две-три отдельные строки, а не всё, что относится к фильтрованной выборке. Если принято решение, что такого быть не должно - тогда да, нам грид не нужен, достаточно серверной Query
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 19.04.2011 в 11:09. |
|
19.04.2011, 11:08 | #24 |
северный Будда
|
Я так подозреваю, что любой синтаксис в Аксапте (хоть селект, хоть query) всё равно преобразуется в язык SQL-запроса при передаче в обработку на сервере.
__________________
С уважением, Вячеслав |
|
19.04.2011, 11:11 | #25 |
Участник
|
Цитата:
to string - это строка, а не "select в коде". с этим toString ты ничего не сможешь сделать. только вывести и посмотреть на него. даже в runbuf не засунешь. Цитата:
выборка -> грид -> хаять -> отказываться. я и не говорил про "отказываться". я говорил про "хаять". Изначальный вопрос состоял в обработке набора записей в таблице, без уточнения способа отбора. Я вполне могу себе представить ситуацию, когда пользователь хочет обработать две-три отдельные строки, а не всё, что относится к фильтрованной выборке. Если принято решение, что такого быть не должно - тогда да, нам грид не нужен, достаточно серверной Query[/QUOTE] |
|
19.04.2011, 11:35 | #26 |
Участник
|
Цитата:
Как следствие, передать в качестве параметра "все записи Grid", как правило, невозможно (есть исключения, но это отдельный разговор). Их просто физически нет. Нечего передавать-то. Точнее, есть, конечно, но только те, которые были просмотрены "глазами". Соответсвенно, и стратегия обработки данных строится исходя из этого правила. Обработка по одной записи за раз, поскольку на клиенте просто нет всех записей (опять же, есть исключения, но это отдельный разговор ). А с Query, использующимися для форм вообще надо быть крайне и предельно осторожными, поскольку там образуется самая причудливая смесь фильтров в которую свою лепту вносит еще и сам пользователь. Как следствие, есть риск изменить не те записи или не изменить те, что нужно. Поэтому, Вам нужно "знать" некий базовый Query, который не зависит от действий пользователя. И именно его и передавать как параметр в метод обработки. При этом "держа в уме", что то, что Вы передаете - не есть собственно данные. Это всего-лишь условия, по которым Вам еще только предстоит выбрать данные. |
|
|
За это сообщение автора поблагодарили: Geo (1). |
20.04.2011, 18:02 | #27 |
Участник
|
Цитата:
По-моему, это и означает, что взаимопреобразования QueryRun и Select в АХ не предусмотрено. |
|
20.04.2011, 18:12 | #28 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Возможно, я ошибась, но, как мне кажется, Вы исходите из предположения, что на клиенте уже находятся все записи, удовлетворяющие условиям отбора, указанным в Query. На самом деле это не так. Axapta вообще в крайне редких случаях копирует на клиента все записи выборки. Как правило, они копируются исключительно "по требованию".
Однако спасибо за уточнение, что этот Select нужно делать уже на сервере. По умолчанию с кнопки формы (как я сначала делал) он бы запустился на клиенте, как я понимаю. Цитата:
Поэтому, Вам нужно "знать" некий базовый Query, который не зависит от действий пользователя. И именно его и передавать как параметр в метод обработки. При этом "держа в уме", что то, что Вы передаете - не есть собственно данные. Это всего-лишь условия, по которым Вам еще только предстоит выбрать данные.
|
|
21.04.2011, 10:53 | #29 |
Участник
|
А почему именно select хотите использовать?
Запаковывайте QueryRun().Query(). Передавайте на сервер, там создавайте Query и работайте уже с ним. Если надо, добавляйте еще датасорсы и фильтры. А дальше создавайте QueryRun - и получайте результаты
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Geo (1). |
21.04.2011, 21:52 | #30 |
Участник
|
|
|
Теги |
grid, query, датасорс (datasource), табличный курсор, фильтр |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|