05.11.2008, 16:34 | #1 |
Участник
|
Заполнение формы из двух Datasources
Всем привет,
как всегда надеюсь на совет. Проблема в следующем: есть форма: SMABOMDesigner, надо в среднюю часть добавить колонку SerialNumber из таблицы InventDim. В таблице InventDim сделал новую relation: InventDim.inventDimId == ProdTable.InventDimId, добавил InventDim-таблицу в Data Sources от SMABOMDesigner и затем добавил InventSerialId в Grid:ProdDragSourceGrp. Всё красиво, но SerialNumber колонка остаётся пустой. Где я ошибаюсь??? Большое спасибо заранее. |
|
06.11.2008, 05:08 | #2 |
Участник
|
Relation тут не причем, нужно у Datasource InventDim поставить JoinSource = "ProdTable" (или как там называется соответствующий Datasource) и LinkType = "InnerJoin".
|
|
|
За это сообщение автора поблагодарили: Dima_Dima (1). |
06.11.2008, 10:32 | #3 |
Участник
|
Спасибо за ответ,
да я так тоже пробовал, но у Data Source ProdTableDrag в методах есть 'executeQuery'. Если я добавляю в InventDim JoinSource --> ProdTableDrag и LinkType --> InnerJoin, то просыпается Debugger и показывает на super() в 'executeQuery'??? |
|
06.11.2008, 11:10 | #4 |
Участник
|
display метод
Цитата:
например на источнике данных: SMABOMDesigner\Data Sources\ProdTableDrag\Methods X++: display InventSerialId inventSerialId( ProdTable _prodTable) { return _prodTable.inventDim().inventSerialId ; } |
|
|
За это сообщение автора поблагодарили: Dima_Dima (1). |
06.11.2008, 11:16 | #5 |
Участник
|
Да, через дисплей метод лучше, если не требуется редактирование. Но тормозит и нельзя сортировать-фильтровать.
В случае с 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 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
Здраствуйте,
у меня опять вопрос: Форма: 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 |
Участник
|
Тут посмотрел методу: listInsertHistory, после этого момента listAddItem(serviceBOMChange.IsRequirement ? enum2str(serviceBOMChange.IsRequirement) : ''); хочу вставить : listAddItem(тут нужно inventSerialId where serviceBomTable.inventDIMID == inventDim.inventDIMID).
Как его туда запереть?? |
|
10.11.2008, 03:42 | #9 |
Участник
|
например, так:
X++: listAddItem(serviceBOMTable.inventDim().inventSerialId); |
|
|
За это сообщение автора поблагодарили: Dima_Dima (1). |
10.11.2008, 11:09 | #10 |
Участник
|
Цитата:
так тоже пробовал, но пока безуспешно.... если вставляю так: listAddItem(serviceBOMTable.inventDim().inventSerialId ? serviceBOMTable.inventDim().inventSerialId : 'empty'); то весь столбец SerialNumber заполняется 'empty', даже те у кого в средней части етот SerialNumber есть. |
|
10.11.2008, 16:53 | #11 |
Участник
|
Всем привет,
to vanokh: Спасибо большое за совет. Я нашёл ошибку: дело в том, что если я беру и перетаскиваю Артикел со средней части в левое дерево, то из таблицы ProdTable не передаётся InventDimId в таблицу SMAServiceBomTable. Из-за етого и не был виден SerialNumber. Как там генерируется етот InventDimId я как раз и ищу. |
|