|
20.10.2005, 07:11 | #1 |
Участник
|
Переменное значение в order by
Можно ли в запросе после директивы "order by" передавать параметр, т.е указывать не жестко по какому полю сортировать. Нужно делать сортировку по полю взависимости от выбора на форме
|
|
20.10.2005, 08:50 | #2 |
Участник
|
Если не использовать группировку, то можно выполнять сортировку по требуемым вам полям с помощью методов AddSortField, AddSortIndex, SortClear класса QueryBuildDataSource.
X++: QueryBuildDataSource qbd; ; qbd = Table1_ds.Query().dataSourceNo(1); qbd.SortClear(); if (SortValue == 1) { qbd.AddSortField(fieldnum(Table1, Field1), SortOrder::D:Descending); } else { qbd.AddSortField(fieldnum(Table1, Field1), SortOrder::Ascending); qbd.AddSortField(fieldnum(Table1, Field2), SortOrder::Descending); } Table_ds.ExecuteQuery();
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2005, 08:54 | #3 |
Участник
|
а можно в качестве Table1_ds использовать временную таблицу, предварительно загрузив туда данные?
|
|
20.10.2005, 09:11 | #4 |
Участник
|
по ходу нельзя...
|
|
20.10.2005, 09:14 | #5 |
Участник
|
Table1_ds - это не таблица, а датасоурс на форме. Какую таблицу в него подставите (постоянную, временную) - значения не имеет, работать будет одинаково
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2005, 09:17 | #6 |
Участник
|
дело в том что у меня не форма а диалог... который формируется программно
|
|
20.10.2005, 09:20 | #7 |
Участник
|
Но Query же есть. Т.е. в вашем случае будет
qbd = MyQuery.dataSourceNo(1);
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2005, 09:42 | #8 |
Участник
|
почему именно dataSourceNo(1); а например не dataSourceNo(tablenum(tmp_table))?
Table_ds.ExecuteQuery(); - не работает если подставить вместо Table tmp_table |
|
20.10.2005, 09:50 | #9 |
Участник
|
Хм...
Это же пример! У вас в первом сообщении было указано, что выбор на форме - вот я и привел пример с формой и датасоурсом. Я не знаю какие у вас таблицы и т.п. Опишите полнее задачу.
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2005, 09:57 | #10 |
Участник
|
это отчет
у меня есть диалог, программный в зависимости от значения которое выбирает пользователь в поле этого диалога нужно сортировать данные в таблице (tmp_table - временная) и затем вывод вот и все |
|
20.10.2005, 10:12 | #11 |
Участник
|
лучше сделайте форму и вызовите ее в методе dialog
|
|
20.10.2005, 10:38 | #12 |
Участник
|
хорошо, сделаю я форму которая будет вызывать мой класс для вывода отчета, прицеплю к этой форме датасорс, тогда такой вопрос смогу ли я работать с ним в моем классе т.е отсортировать
|
|
20.10.2005, 10:54 | #13 |
Участник
|
Цитата:
в зависимости от значения которое выбирает пользователь в поле этого диалога нужно сортировать данные в таблице (tmp_table - временная) и затем вывод
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2005, 11:03 | #14 |
Участник
|
Цитата:
почему именно dataSourceNo(1); а например не dataSourceNo(tablenum(tmp_table))?
QueryBuildDataSource dataSourceTable(tableId _table [, int _occurrence=1] ) - обращение по TableId (если одинаковых таблиц в запросе несколько - то в _occurrence указываем номер таблицы в порядке подключения) А вообще смотрите \System Documentation\Classes\Query - там эта информация есть
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2005, 13:32 | #15 |
Участник
|
Ну если у вас Report, и вы в знаете настройки, выбранные пользователем, то в init() на Report к примеру, напишите
Код: if (condition == 1) this.query().dataSourceTable(tableNum(YourTableName)).addSortField(fieldNum(YourTableName, fieldName1)); else { this.query().dataSourceTable(tableNum(yourTableName)).addSortField(fieldNum(YourTableName, fieldName2)); this.query().dataSourceTable(tableNum(yourTableName)).addSortField(fieldNum(YourTableName, fieldName1), SortOrder::Descending); } |
|
|
|