14.09.2011, 12:12 | #1 |
Участник
|
Переименование полей в одной таблице на основе данных из другой
Есть простая задача, интересно, как можно сделать её изящнее и правильнее, чтобы увеличилась скорость работы.
Вот постановка задачи: В спецификациях забыли указать правильный тип строки, иногда пользователи могут сами это забывать, соответственно не происходит правильный заказ на производство, точнее неполный, т.к. в нём нет производства той самой подспецификации, т.к. тип строки стоит "номенклатура", а не "производство". Теперь нужно исправить это поле в соответствии с тем, что, если в таблице InventTable стоит тип спецификация, то в таблице BOM для данной строки будет стоять производство. Решение: Сделать всё в цикле, который будет перебирать все строки спецификаций, т.е. таблицу BOM и для каждой строки искать соответствующее значение ItemId в InventTable, проверять его тип, если он спецификация, то обновляем значение строки в таблице BOM с "номенклатура" на "производство". Возможное решение: Сделать всё в цикле, который будет перебирать строки таблицы InventTable, искать там номенклатуры с типом BOM, при нахождении данного типа он должен найти все связанные записи в таблице спецификаций BOM и изменить тип строки с "номенклатура" на "производство". Конечно же возможны и другие решения. Интересно мнение, какое решение лучше, не только сейчас, но и в дальнейших ситуациях, когда что-то требуется поменять из одной таблице в соответствии с записями в другой. Может какие-то другие решения? Заранее благодарен. С уважением, Николай |
|
14.09.2011, 12:34 | #2 |
Участник
|
Цитата:
X++: update_recordset BOM setting BOMType = BOMType::Production where BOM.BOMType == BOMType::Item exists join InventTable where InventTable.ItemId == BOM.ItemId && InventTable.ItemType == ItemType::BOM; Последний раз редактировалось S.Kuskov; 14.09.2011 в 12:48. |
|
|
За это сообщение автора поблагодарили: niksen (1). |