14.08.2006, 13:04 | #1 |
Участник
|
Как очистить значения сортировки в стандартном запросе?
Это всё в runbaseBatch-е!
Пробую вот так: void SetQuerySort() { // Установить параметры Сортировки QueryBuildDataSource queryDataSource2; ; queryDataSource2 = this.queryrun().query().dataSourceTable( tablenum( RPayTrans )); queryDataSource2.sortClear(); // queryDataSource2.clearSortIndex(); // queryDataSource2.clearRanges(); queryDataSource2.addSortField( fieldnum( RPayTrans, LedgerAccount ), SortOrder::Ascending ); } Смотрю значение queryDataSource2, в отладчике, всё нормально! Затем смотрю запрос, на форме диалога, поля сортировки остались без изменения!!! Но если я выполняю после этого queryDataSource2.clearRange(); Всё очищается! И Range и sort!! Подскажите кто знает в чём тут дело? Последний раз редактировалось 3oppo; 15.08.2006 в 06:51. |
|
14.08.2006, 16:58 | #2 |
Участник
|
queryDataSource2 = this.queryrun().query().dataSourceTable( tablenum( RPayTrans ));
Вот так вообще можно получать DataSource и потом его изменять?! Такое впечатление что я таким образом меняю один DataSource а там на форме живёт другой! Не понятно, почему в отладчике видно, что запрос очищается от сортировок (ORDER BY поля пропадают), а на форме это никак не отражается! Может нужно после этого ещё какой метод вызвать, init какой ни будь!? |
|
14.08.2006, 17:02 | #3 |
Гость
|
executeQuery()
|
|
14.08.2006, 17:11 | #4 |
Участник
|
X++: element.DataSource().research();
__________________
Axapta v.3.0 sp5 kr2 |
|
14.08.2006, 17:36 | #5 |
Участник
|
Попробую описать разницу executeQuery() и research() - последний сохранит пользовательские фильтры, перечитав все данные датасорса.
То есть, если хотите отреагировать на изменения фильтров, что-нить такое, то вызываете executeQuery если же просто обновить данные - то research() |
|
14.08.2006, 17:49 | #6 |
Участник
|
При чем здесь "просто обновить даннные"?
Прямой вызов executeQuery() - запрос в датасоурс.QueryRun().Query() заменится на датасоурс.Query(), на сервер уйдет обновленный запрос research() - на сервер уйдет запрос из датасоурс.QueryRun().Query() Соответственно, если изменяется датасоурс.QueryRun().Query(), то и вызывать надо research(). При наложении пользовательских фильтров так же вносятся изменения в этот Query.
__________________
Axapta v.3.0 sp5 kr2 |
|
14.08.2006, 17:51 | #7 |
Участник
|
Ну да, я где-то это же и сказал, только для простых смертных
|
|
15.08.2006, 06:53 | #8 |
Участник
|
Извиняюсь торможу.
Для runbaseBatch-а кому ресёч запускать?! |
|
15.08.2006, 11:06 | #9 |
Участник
|
А в какой момент вызывается этот метод (SetQuerySort)? Да и поподробнее бы о том, как у вас организована работа с Query в диалоге
__________________
Axapta v.3.0 sp5 kr2 |
|
15.08.2006, 11:27 | #10 |
Участник
|
Он вызывается в UnPack
PHP код:
PHP код:
PHP код:
Собственно вот она: PHP код:
|
|
15.08.2006, 12:45 | #11 |
Участник
|
А может у вас в форме редактирования запроса стоит "Ранее использованный запрос" вместо "Используемый запрос"?
__________________
Axapta v.3.0 sp5 kr2 |
|
15.08.2006, 13:07 | #12 |
Участник
|
Ни какой разницы! Что так ставлю, это ничего не меняет!
|
|
15.08.2006, 13:25 | #13 |
Участник
|
В общем - выложил пример, в котором все отрабатывает нормально. Единственно таблица - LedgerTrans.
Посмотри, как будет работать у вас.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: 3oppo (1). |
15.08.2006, 14:52 | #14 |
Участник
|
Пример работает, всё нормально.
Но там в UnPack всегда отрабатывает метод this.initQuery(); Сделал тоже самое у себя в коде, всё тоже заработало, но это не совсем то что мне нужно. Самое интересное, вернул всё назад (как было первоначально) и ВСЁ ЗАРАБОТАЛО! Я ничего не понимаю!!! Причём сейчас при изменении поля «выбор запроса» на «Используемый запрос» все корректно отображается! До этого изменение не к чему не приводило! Похоже просто, какой то глюк! В любом случае всем спасибо! |
|
15.08.2006, 15:12 | #15 |
Участник
|
Цитата:
Сообщение от Зорро
Но там в UnPack всегда отрабатывает метод this.initQuery();
__________________
Axapta v.3.0 sp5 kr2 |
|
15.08.2006, 15:48 | #16 |
Участник
|
Догнал в чём дело! На то, что отображается в форме вообще смотреть не надо! Там отображаются только запросы, введенные вручную, и только они запоминаются.
Обновить там значение, не получилось. Ну и не надо итак всё работает. |
|
15.08.2006, 16:00 | #17 |
Участник
|
Хм...
А можно уточнить, о какой форме идет речь? Dialog или SysQueryForm? SortFields отображаются только в SysQueryForm - а там вроде бы все нормально.
__________________
Axapta v.3.0 sp5 kr2 |
|
16.08.2006, 05:42 | #18 |
Участник
|
Я вызываю свою форму, то есть:
(Аналогично Tutorial_RunbaseForm ) public Object dialog() { ; dialog = dialog::newFormnameRunbase( formstr(My_Form), this ); …. } Диалог объявлен стандартно: public class FormRun extends ObjectRun { …. } |
|
16.08.2006, 09:02 | #19 |
Участник
|
Выяснилось, что запрос всё таки строится корректно! Но почему не корректо отображается не ясно!
Последний раз редактировалось 3oppo; 16.08.2006 в 12:29. |
|