Found the problem.
I was using "item.GetNodeIndex" to get the lastIndex, and its returning a String with a float value - whereas the Index in Nodes collections takes an integer.
So something like 0.1 will always be 0, and was screwing everything up.
I'm now keeping tracking of the node Index with an actual Integer, and voila it works - I guess this is a bug ?
Here's working code:
Dim item As TreeNode = New TreeNode
item.Text = dr("office_name")
item.NodeData = dr("office_id")
tv1.Nodes(lastDivisionIndex).Nodes.Add(item)
'lastOfficeIndex = item.GetNodeIndex 'should return Integer, bug ?
lastOfficeIndex += 1 ' keep manual track of Index w/ local Integer variable
lastOfficeID = dr("office_id")
item = Nothing