I am trying to form a treeview of part of my database.
Parent is UK
1st child is Country
2nd child is County
3rd child is Town
4th Child is Solicitor
The treeview works but with the procedure I have but it take 45secs to run.
I have pasted the code below (apologies it is not commented), I was wondering if using recursion would be faster, but I do not have a clue where to start.
I would be grateful if anyone could help
matt
Public gettree()
On Error Resume Next
Set mDBQuotes = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\Quotes.mdb"
TreeView1.Sorted = True
Set mNode = TreeView1.Nodes.Add()
mNode.Text = "UK"
mNode.Tag = mDBQuotes.Name
mNode.Image = "uk"
Dim rsCountry As Recordset
Dim rsCounty As Recordset, countyall As Recordset
Dim rsTown As Recordset, townall As Recordset
Dim rsSolicitors As Recordset
Set rsCountry = mDBQuotes.OpenRecordset("tblCountry", dbOpenDynaset)
Set countyall = mDBQuotes.OpenRecordset("tblCounty", dbOpenDynaset)
Set townall = mDBQuotes.OpenRecordset("tblTowns", dbOpenDynaset)
Dim countrycount As Integer, countycount As Integer, towncount As Integer, solicitorcount As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer
rsCountry.MoveLast
countrycount = rsCountry.RecordCount
rsCountry.MoveFirst
Dim intIndex As Integer, intIndex2 As Integer, intIndex3 As Integer
DoEvents
For a = 0 To countrycount - 1
Set mNode = TreeView1.Nodes.Add(1, tvwChild)
mNode.Text = rsCountry!Country
mNode.Tag = "Country"
mNode.key = rsCountry!countriesid & rsCountry!Country
mNode.Image = "fileC"
intIndex = mNode.Index
Set rsCounty = mDBQuotes.OpenRecordset("SELECT * From tblcounty WHERE countriesid = " & rsCountry!countriesid, dbOpenDynaset)
rsCounty.MoveLast
countycount = rsCounty.RecordCount
rsCounty.MoveFirst
frmSplash.ProgressBar1.Max = countycount
For b = 0 To countycount - 1
If rsCountry!countriesid = rsCounty!countriesid Then
Set mNode = TreeView1.Nodes.Add(intIndex, tvwChild)
mNode.Text = rsCounty!county
mNode.key = rsCounty!countiesid & rsCounty!county
mNode.Tag = "County"
mNode.Image = "folderC"
intIndex2 = mNode.Index
End If
Set rsTown = mDBQuotes.OpenRecordset("SELECT * From tbltowns WHERE countiesID = " & rsCounty!countiesid, dbOpenDynaset)
rsTown.MoveLast
towncount = rsTown.RecordCount
rsTown.MoveFirst
For c = 0 To towncount - 1
If rsCounty!countiesid = rsTown!countiesid Then
Set mNode = TreeView1.Nodes.Add(intIndex2, tvwChild)
mNode.Text = rsTown!town
mNode.key = rsTown!townsid & "town"
mNode.Tag = "Town"
mNode.Image = "folderC"
intIndex3 = mNode.Index
End If
Set rsSolicitors = mDBQuotes.OpenRecordset("SELECT * From tblSolicitors WHERE townsid = " & rsTown!townsid, dbOpenDynaset)
rsSolicitors.MoveLast
solicitorcount = rsSolicitors.RecordCount
rsSolicitors.MoveFirst
For d = 0 To solicitorcount - 1
If rsTown!townsid = rsSolicitors!townsid Then
Set mNode = TreeView1.Nodes.Add(intIndex3, tvwChild)
mNode.Text = rsSolicitors!CompanyName
mNode.key = rsSolicitors!CompanyName & " " & rsSolicitors!Postcode
mNode.Tag = "Solicitors"
mNode.Image = "solicitor"
End If
rsSolicitors.MoveNext
Next d
rsTown.MoveNext
Next c
rsCounty.MoveNext
Next b
rsCountry.MoveNext
Next a
End Sub
Regards
Matt
Parent is UK
1st child is Country
2nd child is County
3rd child is Town
4th Child is Solicitor
The treeview works but with the procedure I have but it take 45secs to run.
I have pasted the code below (apologies it is not commented), I was wondering if using recursion would be faster, but I do not have a clue where to start.
I would be grateful if anyone could help
matt
Public gettree()
On Error Resume Next
Set mDBQuotes = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\Quotes.mdb"
TreeView1.Sorted = True
Set mNode = TreeView1.Nodes.Add()
mNode.Text = "UK"
mNode.Tag = mDBQuotes.Name
mNode.Image = "uk"
Dim rsCountry As Recordset
Dim rsCounty As Recordset, countyall As Recordset
Dim rsTown As Recordset, townall As Recordset
Dim rsSolicitors As Recordset
Set rsCountry = mDBQuotes.OpenRecordset("tblCountry", dbOpenDynaset)
Set countyall = mDBQuotes.OpenRecordset("tblCounty", dbOpenDynaset)
Set townall = mDBQuotes.OpenRecordset("tblTowns", dbOpenDynaset)
Dim countrycount As Integer, countycount As Integer, towncount As Integer, solicitorcount As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer
rsCountry.MoveLast
countrycount = rsCountry.RecordCount
rsCountry.MoveFirst
Dim intIndex As Integer, intIndex2 As Integer, intIndex3 As Integer
DoEvents
For a = 0 To countrycount - 1
Set mNode = TreeView1.Nodes.Add(1, tvwChild)
mNode.Text = rsCountry!Country
mNode.Tag = "Country"
mNode.key = rsCountry!countriesid & rsCountry!Country
mNode.Image = "fileC"
intIndex = mNode.Index
Set rsCounty = mDBQuotes.OpenRecordset("SELECT * From tblcounty WHERE countriesid = " & rsCountry!countriesid, dbOpenDynaset)
rsCounty.MoveLast
countycount = rsCounty.RecordCount
rsCounty.MoveFirst
frmSplash.ProgressBar1.Max = countycount
For b = 0 To countycount - 1
If rsCountry!countriesid = rsCounty!countriesid Then
Set mNode = TreeView1.Nodes.Add(intIndex, tvwChild)
mNode.Text = rsCounty!county
mNode.key = rsCounty!countiesid & rsCounty!county
mNode.Tag = "County"
mNode.Image = "folderC"
intIndex2 = mNode.Index
End If
Set rsTown = mDBQuotes.OpenRecordset("SELECT * From tbltowns WHERE countiesID = " & rsCounty!countiesid, dbOpenDynaset)
rsTown.MoveLast
towncount = rsTown.RecordCount
rsTown.MoveFirst
For c = 0 To towncount - 1
If rsCounty!countiesid = rsTown!countiesid Then
Set mNode = TreeView1.Nodes.Add(intIndex2, tvwChild)
mNode.Text = rsTown!town
mNode.key = rsTown!townsid & "town"
mNode.Tag = "Town"
mNode.Image = "folderC"
intIndex3 = mNode.Index
End If
Set rsSolicitors = mDBQuotes.OpenRecordset("SELECT * From tblSolicitors WHERE townsid = " & rsTown!townsid, dbOpenDynaset)
rsSolicitors.MoveLast
solicitorcount = rsSolicitors.RecordCount
rsSolicitors.MoveFirst
For d = 0 To solicitorcount - 1
If rsTown!townsid = rsSolicitors!townsid Then
Set mNode = TreeView1.Nodes.Add(intIndex3, tvwChild)
mNode.Text = rsSolicitors!CompanyName
mNode.key = rsSolicitors!CompanyName & " " & rsSolicitors!Postcode
mNode.Tag = "Solicitors"
mNode.Image = "solicitor"
End If
rsSolicitors.MoveNext
Next d
rsTown.MoveNext
Next c
rsCounty.MoveNext
Next b
rsCountry.MoveNext
Next a
End Sub
Regards
Matt