Thanks I Think I'll try your Class first as it's more down to the Query.
If you look at the example there are some demos on the first page for different table structures. There are two types of queries. The easy is a single table self referencing. The other is a union query of parent child tables.
In both examples you need
NodeID (Since they could come from different tables you need to concatenate the real id with something telling it where it came from. I call the the NodeLevel or Identifier)
ParentID (Same as the nodeid where you need to concatenate it with something identifying which table it came from)
NodeText (What you want to print in the tree)
If I click on a node its Key is the PK + the identifer of where it came from. So if the key is
22_Clients
I can then pull record 22 from the clients table.
If you make the query correct, It is really one line of code to populate a treeview.
In the MSFORMS version I did not put my loading code into their code. It would have been cleaner that way, but I did not want to break anything.
I made another class to reference their class to do the same thing as above.