|
|
#1 |
|
Участник
|
Переменное значение в order by
Можно ли в запросе после директивы "order by" передавать параметр, т.е указывать не жестко по какому полю сортировать. Нужно делать сортировку по полю взависимости от выбора на форме
|
|
|
|
|
#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 |
|
|
|
|
#3 |
|
Участник
|
а можно в качестве Table1_ds использовать временную таблицу, предварительно загрузив туда данные?
|
|
|
|
|
#4 |
|
Участник
|
по ходу нельзя...
|
|
|
|
|
#5 |
|
Участник
|
Table1_ds - это не таблица, а датасоурс на форме. Какую таблицу в него подставите (постоянную, временную) - значения не имеет, работать будет одинаково
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#6 |
|
Участник
|
дело в том что у меня не форма а диалог... который формируется программно
|
|
|
|
|
#7 |
|
Участник
|
Но Query же есть. Т.е. в вашем случае будет
qbd = MyQuery.dataSourceNo(1);
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#8 |
|
Участник
|
почему именно dataSourceNo(1); а например не dataSourceNo(tablenum(tmp_table))?
Table_ds.ExecuteQuery(); - не работает если подставить вместо Table tmp_table |
|
|
|
|
#9 |
|
Участник
|
Хм...
Это же пример! У вас в первом сообщении было указано, что выбор на форме - вот я и привел пример с формой и датасоурсом. Я не знаю какие у вас таблицы и т.п. Опишите полнее задачу.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#10 |
|
Участник
|
это отчет
у меня есть диалог, программный в зависимости от значения которое выбирает пользователь в поле этого диалога нужно сортировать данные в таблице (tmp_table - временная) и затем вывод вот и все |
|
|
|
|
#11 |
|
Участник
|
лучше сделайте форму и вызовите ее в методе dialog
|
|
|
|
|
#12 |
|
Участник
|
хорошо, сделаю я форму которая будет вызывать мой класс для вывода отчета, прицеплю к этой форме датасорс, тогда такой вопрос смогу ли я работать с ним в моем классе т.е отсортировать
|
|
|
|
|
#13 |
|
Участник
|
Цитата:
в зависимости от значения которое выбирает пользователь в поле этого диалога нужно сортировать данные в таблице (tmp_table - временная) и затем вывод
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#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 |
|
|
|
|
#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);
} |
|
|
|
|
|