AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.08.2018, 16:43   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Обновить на 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 is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Немного в сторону. А зачем отдельная темповая таблица? Почему не хотите в сами строки записать результат?
__________________
Ivanhoe as is..
Старый 21.08.2018, 17:15   #3  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Строки таблицы ledgerJournalTrans?
То есть, добавить в нее новое поле и не сохранять данные в нем (то есть, saveContents = No на поле таблицы)?
Старый 21.08.2018, 18:55   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не уверен. Но разве надо линковать временную таблицу именно к MyTempTable_ds? По моему, надо просто к самой таблице линковать.

MyTempTable.linkPhysicalTableInstance(myTempTable).

DS - это уже результат выборки, который все-равно будет переопределен после executeQuery()

ds.refresh() - это обновление картинки. Но перед этим надо сначала прочитать данные с диска. Поэтому обычно дают пару команд на обновление текущей записи

X++:
ds.reread();  // Прочитать с диска
ds.refresh();  // Обновить картинку
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 21.08.2018, 19:05   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от IKA Посмотреть сообщение
Строки таблицы ledgerJournalTrans?
То есть, добавить в нее новое поле и не сохранять данные в нем (то есть, saveContents = No на поле таблицы)?
Почему не сохранять? Удобно же сохранить.

По поводу обновления разве не research() нужен? Была тема про варианты обновления ds на форуме, там все варианты расписали.
__________________
Ivanhoe as is..
Старый 21.08.2018, 19:06   #6  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Kashperuk Ivan: Tutorial: refresh, reread, research, executeQuery - which one to use?
__________________
Ivanhoe as is..
Старый 21.08.2018, 19:27   #7  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не уверен. Но разве надо линковать временную таблицу именно к 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  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Почему не сохранять? Удобно же сохранить.

По поводу обновления разве не research() нужен? Была тема про варианты обновления ds на форуме, там все варианты расписали.
Думаю, что Вы правы. Придется сохранять.
( хотя бы потому, что outer join не даст все равно фильтровать по этому полю, если не ошибаюсь)
Старый 22.08.2018, 02:08   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Что-то вызывает большие сомнения подчиненная временная таблица. Такое вообще работает? Не в форме, а "в принципе". Если просто запрос в джобе написать? Насколько я помню, в младших версиях временная таблица могла быть только "верхней" в запросе

Может Вам вместо outer join просто дисплейный метод сделать?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 22.08.2018, 08:44   #10  
БАХ43 is offline
БАХ43
Участник
 
92 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Цитата:
Может Вам вместо outer join просто дисплейный метод сделать?
а как же тогда одно из пожеланий пользователей?
Цитата:
плюс хотят сортировать/ фильтровать по нему.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 22.08.2018, 08:50   #11  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Если реально много ошибок и нужно с ними разбираться, самое удобное - хранить прямо в строках журнала, по ним же и фильтровать / сортировать и т.п.
__________________
Ivanhoe as is..
Старый 23.08.2018, 11:51   #12  
YoungPadawan is offline
YoungPadawan
Участник
 
21 / 23 (1) +++
Регистрация: 04.01.2017
Цитата:
Сообщение от IKA Посмотреть сообщение
Есть строки журнала
плюс хотят сортировать/ фильтровать по нему.
...
3) добавляю MyTempTable как datasource на форму (outer join to ledgerJournalTrans по RecId)
Спасибо
А разве можно фильтровать по таблице которая прицеплена outer join?
Старый 23.08.2018, 14:52   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от YoungPadawan Посмотреть сообщение
А разве можно фильтровать по таблице которая прицеплена outer join?
Можно, для этого в Ax2009 сделали QueryFilter
Старый 23.08.2018, 16:44   #14  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
Цитата:
Сообщение от belugin Посмотреть сообщение
Можно, для этого в Ax2009 сделали QueryFilter
Так по ссылке Ax2012
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
Старый 23.08.2018, 16:52   #15  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Weez Посмотреть сообщение
Так по ссылке Ax2012
В 2012 это не убрали
Старый 23.08.2018, 17:33   #16  
Pandasama is offline
Pandasama
Участник
 
457 / 137 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Цитата:
Сообщение от belugin Посмотреть сообщение
В 2012 это не убрали
По ссылке как раз написано "The QueryFilter class was not in Microsoft Dynamics AX 2009", т.е. появился только в 2012
За это сообщение автора поблагодарили: belugin (5), YoungPadawan (1).
Старый 23.08.2018, 17:35   #17  
YoungPadawan is offline
YoungPadawan
Участник
 
21 / 23 (1) +++
Регистрация: 04.01.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
В 2012 это не убрали
Текст в ссылке:
Цитата:
// The QueryFilter class was not in Microsoft Dynamics AX 2009.
Судя с постановки, ТСу нужен фильтр в гриде на форме.По этому не понянто как бы помог ему QueryFilter , если бы он даже присутствовал. А при использовании OUTER JOIN в датасорсах формы, у полей с правой таблицы неактивные фильтры.

UPD
Цитата:
По этому не понянто как бы помог ему QueryFilter , если бы он даже присутствовал
Отдельное поле для ввода фильтра

Последний раз редактировалось YoungPadawan; 23.08.2018 в 17:40. Причина: Осознал свою ошибку
Старый 23.08.2018, 19:02   #18  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Извините, перепутал версии. Тогда могу предложить сделать View с outer Join и присоединить его при помощи innerJoin
Старый 23.08.2018, 19:10   #19  
YoungPadawan is offline
YoungPadawan
Участник
 
21 / 23 (1) +++
Регистрация: 04.01.2017
Можно ещё динамически переключать тип джоина. Но это смахивает на какое-то извращение. (Я такое делал)
Старый 23.08.2018, 20:06   #20  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я не уверен, что такое сработает. Я помню что на какой-то версии range попадал в ON а не в WHERE в результате при фильтрации просто исчезали данные по ячейкам

UPD: хотя если обратно переключать, как советуют тут https://stackoverflow.com/questions/...ta-dynamics-ax то может пройти. Правда на пустоту не получится фильтровать.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помещение временной таблицы в Map Lemming DAX: Программирование 20 19.10.2017 14:16
Работа с Grid без таблицы базы данных Yeah))) DAX: Программирование 1 11.05.2016 10:24
Не могу вытащить поле из таблицы FireBird CHESER85 DAX: Программирование 4 10.02.2012 06:20
данные из временной таблицы в отчете алька DAX: Программирование 4 19.04.2007 17:47
Кнопка выбора даты в поле Grid Maxim Gorbunov DAX: База знаний и проекты 0 28.11.2001 14:03

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:04.