If there are many records (>1) in Total_Purchase related to each Supply row, you will appear to get "repeating data" - the data from Supply will repeat because it is related to Total_Purchase and is part of the row/record as per your SQL INNER JOIN.
I strongly advise looking at the query in Access to understand what the dataset looks like.
The issue becomes adding child nodes in a loop until the Due_Date changes:
Dim parent As String = ""
Dim parentNode As TreeNode
If dr.HasRows Then
Do While dr.Read()
If (parent = (dr.Item("Due_Date"))) Then ' same parent, add child
' add child node (presumably from tbl B data)
Else
parent = (dr.Item("Due_Date")) ' set NEW parent value
' save parent node for adding child nodes above
parentNode = TreeView1.Nodes.Add(parent)
End If
Loop
Else
Assuming the SQL is correct, you only add a new parent when it changes, otherwise add a child nodes for this parent until you detect a new Due_Date/parent.