21.08.2018, 16:43 | #1 |
Участник
|
Обновить на grid поле из временной таблицы
Есть строки журнала
Есть стандартная функция валидации (проверки) этих строк Пользователи хотят видеть на гриде поле с ошиками (а не на закладке история (history) ) плюс хотят сортировать/ фильтровать по нему. 1) Создаю в AOT временную таблицу TempDb MyTempTable (два поля: ErrorLog, LedgerJournalTrans.RecId) 2) в classDeclaration формы обьявляю переменную MyTempTable 3) добавляю MyTempTable как datasource на форму (outer join to ledgerJournalTrans по RecId) 4) добавляю на grid поле Error из этого DS 4) в init датасоурса MyTempTable пишу: MyTempTable_ds.linkPhysicalTableInstance(myTempTable). 5) При нажатии пользотелелем кнопки Validate таблица заполняется и вызывается MyTempTable_ds.refresh() .... но поле на grid не обновляется Таблица заполняется верно. Почему результаты не показываются? Спасибо |
|
21.08.2018, 16:56 | #2 |
Участник
|
Немного в сторону. А зачем отдельная темповая таблица? Почему не хотите в сами строки записать результат?
__________________
Ivanhoe as is.. |
|
21.08.2018, 17:15 | #3 |
Участник
|
Строки таблицы ledgerJournalTrans?
То есть, добавить в нее новое поле и не сохранять данные в нем (то есть, saveContents = No на поле таблицы)? |
|
21.08.2018, 18:55 | #4 |
Участник
|
Не уверен. Но разве надо линковать временную таблицу именно к MyTempTable_ds? По моему, надо просто к самой таблице линковать.
MyTempTable.linkPhysicalTableInstance(myTempTable). DS - это уже результат выборки, который все-равно будет переопределен после executeQuery() ds.refresh() - это обновление картинки. Но перед этим надо сначала прочитать данные с диска. Поэтому обычно дают пару команд на обновление текущей записи X++: ds.reread(); // Прочитать с диска ds.refresh(); // Обновить картинку
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
21.08.2018, 19:05 | #5 |
Участник
|
Цитата:
По поводу обновления разве не research() нужен? Была тема про варианты обновления ds на форуме, там все варианты расписали.
__________________
Ivanhoe as is.. |
|
21.08.2018, 19:06 | #6 |
Участник
|
__________________
Ivanhoe as is.. |
|
21.08.2018, 19:27 | #7 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Не уверен. Но разве надо линковать временную таблицу именно к MyTempTable_ds? По моему, надо просто к самой таблице линковать.
MyTempTable.linkPhysicalTableInstance(myTempTable). DS - это уже результат выборки, который все-равно будет переопределен после executeQuery() ds.refresh() - это обновление картинки. Но перед этим надо сначала прочитать данные с диска. Поэтому обычно дают пару команд на обновление текущей записи X++: ds.reread(); // Прочитать с диска ds.refresh(); // Обновить картинку Последний раз редактировалось IKA; 21.08.2018 в 19:30. |
|
21.08.2018, 19:29 | #8 |
Участник
|
Цитата:
( хотя бы потому, что outer join не даст все равно фильтровать по этому полю, если не ошибаюсь) |
|
22.08.2018, 02:08 | #9 |
Участник
|
Что-то вызывает большие сомнения подчиненная временная таблица. Такое вообще работает? Не в форме, а "в принципе". Если просто запрос в джобе написать? Насколько я помню, в младших версиях временная таблица могла быть только "верхней" в запросе
Может Вам вместо outer join просто дисплейный метод сделать?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
22.08.2018, 08:44 | #10 |
Участник
|
Цитата:
Может Вам вместо outer join просто дисплейный метод сделать?
Цитата:
плюс хотят сортировать/ фильтровать по нему.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
22.08.2018, 08:50 | #11 |
Участник
|
Если реально много ошибок и нужно с ними разбираться, самое удобное - хранить прямо в строках журнала, по ним же и фильтровать / сортировать и т.п.
__________________
Ivanhoe as is.. |
|
23.08.2018, 11:51 | #12 |
Участник
|
|
|
23.08.2018, 14:52 | #13 |
Участник
|
Цитата:
|
|
23.08.2018, 16:44 | #14 |
Участник
|
Цитата:
Сообщение от belugin
Можно, для этого в Ax2009 сделали QueryFilter
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
23.08.2018, 16:52 | #15 |
Участник
|
|
|
23.08.2018, 17:33 | #16 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: belugin (5), YoungPadawan (1). |
23.08.2018, 17:35 | #17 |
Участник
|
Текст в ссылке:
Цитата:
// The QueryFilter class was not in Microsoft Dynamics AX 2009.
UPD Цитата:
По этому не понянто как бы помог ему QueryFilter , если бы он даже присутствовал
Последний раз редактировалось YoungPadawan; 23.08.2018 в 17:40. Причина: Осознал свою ошибку |
|
23.08.2018, 19:02 | #18 |
Участник
|
Извините, перепутал версии. Тогда могу предложить сделать View с outer Join и присоединить его при помощи innerJoin
|
|
23.08.2018, 19:10 | #19 |
Участник
|
Можно ещё динамически переключать тип джоина. Но это смахивает на какое-то извращение. (Я такое делал)
|
|
23.08.2018, 20:06 | #20 |
Участник
|
Я не уверен, что такое сработает. Я помню что на какой-то версии range попадал в ON а не в WHERE в результате при фильтрации просто исчезали данные по ячейкам
UPD: хотя если обратно переключать, как советуют тут https://stackoverflow.com/questions/...ta-dynamics-ax то может пройти. Правда на пустоту не получится фильтровать. |
|