У меня есть хранимая процедура SQL 05, которая возвращает около 180 строк со структурой:
ID |Имя |ParentId.
Я хотел бы создать древовидное представление на основе возвращенных записей.Ниже приведен пример, который я адаптировал из других источников на форуме ( здесь )
Я почти выполняю то, что хочу, но не совсем.
Это проблема, которая у меня есть, Рут добавлен ок.Следующий слой вниз добавляется нормально.Однако он не знает, каким должен быть следующий ParentId.Должен ли я просто увеличить переменную и попытаться найти совпадения?Полагаю, я должен включить это в верхний метод.
Надеюсь, я не за горами и мне нужно пушить в правильном направлении,
Большое спасибо заранее Майкл
КакИ наконец, в цикле есть проверки BOF и EOF, так как у меня, кажется, было много ошибок, если у меня их нет.
Private Sub MakeTree(ByVal rs As ADODB.Recordset)
rs.MoveFirst
Do Until rs.EOF
If (IsNull(rs.Fields("ParentID"))) Then
Call TVFunds.Nodes.Add(, , "Key" + CStr(rs.Fields("Id")), rs.Fields("Name"))
Call MsgBox("Key" + CStr(rs.Fields("Id")) + " " + rs.Fields("Name"), vbInformation, "Added Root")
Else
DrawNode rs, rs.Fields("ParentID"), rs.Fields("ID")
End If
If rs.BOF <> True And rs.EOF <> True Then
rs.MoveNext
End If
Loop
End Sub
Private Sub DrawNode(ByRef r As ADODB.Recordset, ByRef pId As Integer, ByRef Id As Integer)
r.MoveFirst
Do Until r.EOF
If (r.Fields("ParentId") = pId And r.Fields("Id") = Id) Then
Call TVFunds.Nodes.Add("Key" + CStr(r.Fields("ParentId")), tvwChild, "Key" + CStr(r.Fields("Id")), r.Fields("Name"))
Call MsgBox("Key" + CStr(r.Fields("ParentId")) + " Key" + CStr(r.Fields("Id")) + " " + r.Fields("Name"), vbInformation, "Added")
Id = Id + 1
DrawNode r, pId, Id
End If
If r.BOF <> True And r.EOF <> True Then
r.MoveNext
End If
Loop
End Sub