Многоуровневая СПП пользователи смогли удалить некоторые задачи, которые не применимы к их проекту.Цель состоит в том, чтобы изменить нумерацию всей WBS, чтобы не пропустить ни одного номера.Пример: 1.1.1, 1.1.2, 1.1.4 - номер 1.1.3 был удален.Каждый СПП-элемент может иметь или не иметь дочерние элементы, которые также должны быть перенумерованы.У меня есть данные в виде данных, поля: WBS_ID, WBSNo, ParentID, ParentNo, SortKey (исходный номер WBS) и примечания.WBS_ID - это UID, ParentID - это WBS_ID родительского элемента WBS.Первый элемент WBS имеет нулевое значение в поле ParentID.
Не могу понять, как выполнить итеративный вызов функции для создания номера WBS.
Dim dTb As New DataTable
Using Conn
Conn.Open()
Using dad As New SqlClient.SqlDataAdapter(vSqlStr, Conn)
dad.SelectCommand.Parameters.Add("@ProjectID", SqlDbType.Int)
dad.SelectCommand.Parameters.Add("@Revision", SqlDbType.Int)
dad.SelectCommand.Parameters("@ProjectID").Value = vProjectID
dad.SelectCommand.Parameters("@Revision").Value = vRevision
dad.Fill(dTb) 'Now we have a table with all the elements .
End Using
Conn.Close()
End Using
'Now work with the datatable
'WBS_ID, WBSNo, WBSLevel, ParentID, ParentNo, SortKey, Notes
dTb.DefaultView.Sort = "SortKey ASC"
dTb = dTb.DefaultView.ToTable
Dim vRowCount As Int16
vRowCount = dTb.Rows.Count
Dim vCurRow As Int16 = 0
For x = 0 To vRowCount - 1
If Not IsDBNull(dTb.Rows(x)("ParentID")) Then
Else
dTb.Rows(x)("WBSNo") = "1"
End If
dTb.Rows(x)("Notes") = dTb.Rows(x)("Notes") & vbCrLf & "<<< Old WBS No. = " & dTb.Rows(x)("SortKey")
Next
Перенумеровать WBSначиная с «1», каждый дочерний элемент нумеруется с родительским номером, плюс точка (.), затем последовательно, начиная с 1;каждый ребенок может иметь детей.