Определение цеха-изготовителя для ТМЦ из таблицы Транспортных отношений - VB
Формулировка задачи:
Добрый день, уважаемые!
Имеется таблица с транспортными отношениями (ТО). Например, TRPROD. В этой таблице есть поля: Материал, Исходное местоположение (ИсхМПЛ), Целевое местоположение (ЦельМПЛ).
Материалов может быть много и соответственно количество маршрутов так же очень много. В качестве местоположений служат склады и цеха в рамках предприятия\предприятий.
Транспортное отношение – это некий маршрут, по которому может двигаться материал. Например, для материала «Кронштейн» указаны следующие строки в таблице TRPROD:
Материал ИсхМПЛ ЦельМПЛ
Кронштейн 45550102 45551953
Кронштейн 45551953 45550102
Кронштейн 45550102 45559999
Кронштейн 45559999 33332053
Кронштейн 33332053 33338765
Кронштейн 33338765 22227666
Кронштейн 22227666 23002902
Местоположение 45550102 является цехом-изготовителем материала «Кронштейн». А местоположение 23002902 является покупателем данного кронштейна. Все остальные местоположения являются складами внутри организаций (первые 4 символа обозначают номер организации).
То есть, из таблицы TRPROD видно, по какому маршруту двигается деталь, пока она от момента зарождения дойдет до заказчика. При этом может быть так, что Кронштейн изготавливается в цехе 45550102 и передается на склад, а потом со склада обратно в этот же цех (45550102) и с этого цеха (без внесения конструкторских изменений в геометрию детали) передается на тот же или на другой склад.
Ребята, помогите придумать алгоритм, как определить цех-изготовитель для этого материала (будем считать, что он не известен)? То есть, указав материал мне в Label1 нужно показать цех изготовитель. При этом, не известно, какой цех-изготовитель для данной детали. Но по таблице транспортных отношений можно найти путь, откуда начинает свое движение «Кронштейн».
По какому алгоритму его вычислять. Мозг сломал, придумать не могу.
Можно использовать циклы и запросы.
Решение задачи: «Определение цеха-изготовителя для ТМЦ из таблицы Транспортных отношений»
textual
Листинг программы
Option Explicit Private Type typeTO Material As String 'какой нафиг материал, кронштейн - это изделие (или фамилия) IshMPL As String ZelMPL As String End Type Const m As Integer = 100 ' количество материалов(изделий) Const countTO As Integer = 1000 ' количество движений(перемещений) каждого материала Dim Mat(1 To m, 1 To countTO) As typeTO Private Sub Form_Load() Dim S, i As Integer, j As Integer i = 1 'поскольку материал пока один S = Split(Trim(CStr(Text2.Text)), vbCrLf) 'получаем данные из текстбокса(Вы не указали откуда) For j = 1 To UBound(S) Mat(i, j).Material = Trim(CStr(Text1.Text)) Mat(i, j).IshMPL = Split(S(j - 1))(0) Mat(i, j).ZelMPL = Split(S(j - 1))(1) Next j End Sub Private Sub Command1_Click() Dim S As String, i As Integer For i = 1 To m If Mat(i, 1).Material = Trim(CStr(Text3.Text)) Then S = Mat(i, 1).IshMPL Exit For End If Next i If S = "" Then S = " не найден." MsgBox "Изготовитель материала """ & Text3.Text & """ - " & S End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д