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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2008, 16:34   #1  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Заполнение формы из двух Datasources
Всем привет,
как всегда надеюсь на совет.

Проблема в следующем:
есть форма: SMABOMDesigner, надо в среднюю часть добавить колонку SerialNumber из таблицы InventDim. В таблице InventDim сделал новую relation:
InventDim.inventDimId == ProdTable.InventDimId, добавил InventDim-таблицу в Data Sources от SMABOMDesigner и затем добавил InventSerialId в Grid:ProdDragSourceGrp.

Всё красиво, но SerialNumber колонка остаётся пустой. Где я ошибаюсь???

Большое спасибо заранее.
Старый 06.11.2008, 05:08   #2  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Relation тут не причем, нужно у Datasource InventDim поставить JoinSource = "ProdTable" (или как там называется соответствующий Datasource) и LinkType = "InnerJoin".
За это сообщение автора поблагодарили: Dima_Dima (1).
Старый 06.11.2008, 10:32   #3  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Спасибо за ответ,

да я так тоже пробовал, но у Data Source ProdTableDrag в методах есть 'executeQuery'. Если я добавляю в InventDim JoinSource --> ProdTableDrag и LinkType --> InnerJoin, то просыпается Debugger и показывает на super() в 'executeQuery'???
Старый 06.11.2008, 11:10   #4  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
? display метод
Цитата:
Сообщение от Dima_Dima Посмотреть сообщение
да я так тоже пробовал, но у Data Source ProdTableDrag в методах есть 'executeQuery'. Если я добавляю в InventDim JoinSource --> ProdTableDrag и LinkType --> InnerJoin, то просыпается Debugger и показывает на super() в 'executeQuery'???
Не самый лучший вариант, но если вопрос только в добавлении 1 поля для отображения серийного номера, то возможно вас устроит реализация через display метод

например на источнике данных:
SMABOMDesigner\Data Sources\ProdTableDrag\Methods
X++:
display InventSerialId inventSerialId( ProdTable _prodTable)
{
    return _prodTable.inventDim().inventSerialId ;
}
и в дизайне формы отображать его:
Миниатюры
Нажмите на изображение для увеличения
Название: SMABOMDesigner.jpg
Просмотров: 379
Размер:	77.3 Кб
ID:	3876  
За это сообщение автора поблагодарили: Dima_Dima (1).
Старый 06.11.2008, 11:16   #5  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Да, через дисплей метод лучше, если не требуется редактирование. Но тормозит и нельзя сортировать-фильтровать.

В случае с join попробуйте в executeQuery поменять на следующий код:

X++:
public void executeQuery()
{
    Integer         i = 0;
    ProdTable       prodTable;
    Query           q = ProdTableDrag_ds.query();
    ;

    prodTable.ProdStatus = ProdStatus::Completed;
    prodTable.status().queryAddStatus(q);

    prodTable.ProdStatus = ProdStatus::ReportedFinished;
    prodTable.status().queryAddStatus(q);

    super();
}
Не могу проверить на реальных данных, но должно сработать.
Старый 06.11.2008, 11:28   #6  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от vanokh Посмотреть сообщение
Да, через дисплей метод лучше, если не требуется редактирование. Но тормозит и нельзя сортировать-фильтровать.

В случае с join попробуйте в executeQuery поменять на следующий код:

X++:
public void executeQuery()
{
    Integer         i = 0;
    ProdTable       prodTable;
    Query           q = ProdTableDrag_ds.query();
    ;
 
    prodTable.ProdStatus = ProdStatus::Completed;
    prodTable.status().queryAddStatus(q);
 
    prodTable.ProdStatus = ProdStatus::ReportedFinished;
    prodTable.status().queryAddStatus(q);
 
    super();
}
Не могу проверить на реальных данных, но должно сработать.
Всё работает, спасибо!!!
Старый 07.11.2008, 15:56   #7  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Здраствуйте,

у меня опять вопрос:

Форма: SMABOMDesigner.

Переношу со средней части в левое дерево один Артикель, и хочу отобразить в самой верхней части этот SerialNumber. В классе SMABOMDesignerCtrl изменил методу ListInitListView добавив туда следующую строку:
// Serialnumber
list.addColumn(10, new FormListColumn("@SYS52571", 10, 120));

но куда вставить таблицу InventDim чтобы по InventDimId связать её с ProdTable и получить SerialNumber в етой Historie-части ??? Похоже сильно на Java-SWT всё это дело....

Сталкивался кто-нибудь с такой проблемой?
Старый 07.11.2008, 17:45   #8  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Тут посмотрел методу: listInsertHistory, после этого момента listAddItem(serviceBOMChange.IsRequirement ? enum2str(serviceBOMChange.IsRequirement) : ''); хочу вставить : listAddItem(тут нужно inventSerialId where serviceBomTable.inventDIMID == inventDim.inventDIMID).

Как его туда запереть??
Старый 10.11.2008, 03:42   #9  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
например, так:
X++:
listAddItem(serviceBOMTable.inventDim().inventSerialId);
За это сообщение автора поблагодарили: Dima_Dima (1).
Старый 10.11.2008, 11:09   #10  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от vanokh Посмотреть сообщение
например, так:
X++:
listAddItem(serviceBOMTable.inventDim().inventSerialId);
Спасибо за ответ,

так тоже пробовал, но пока безуспешно....

если вставляю так: listAddItem(serviceBOMTable.inventDim().inventSerialId ? serviceBOMTable.inventDim().inventSerialId : 'empty');
то весь столбец SerialNumber заполняется 'empty', даже те у кого в средней части етот SerialNumber есть.
Старый 10.11.2008, 16:53   #11  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Thumbs up
Всем привет,

to vanokh: Спасибо большое за совет.

Я нашёл ошибку: дело в том, что если я беру и перетаскиваю Артикел со средней части в левое дерево, то из таблицы ProdTable не передаётся InventDimId в таблицу SMAServiceBomTable. Из-за етого и не был виден SerialNumber. Как там генерируется етот InventDimId я как раз и ищу.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Самостоятельные формы и формы открывающиеся из другой формы. Dima_Dima DAX: Программирование 6 19.12.2008 18:27
OZKA's DAX Journal: Модификация формы "Должностные лица". Blog bot DAX Blogs 0 30.09.2008 22:05
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07

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

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

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