Mensen ik heb een probleem onder VB.NET (2005, maar ook onder 2002/2003) met een recursieve functie. Het probleem is dat ik waarschijnlijk een fout maak in de code waardoor de boel niet helemaal lekker gaat.
Wat ik wil is dat ik een array heb waar hij items in plaatst als ik een item wil verwijderen. Klinkt vrij wazig, zal het proberen uit te leggen:
- Heb een database met de tabel: tbl_sitecontent_menu, in deze tabel staan een aantal kolommen welke afhankelijk van mekaar zijn, op het gebied van menu structuur.
Het zit zo in mekaar:
5 Hoofditem
\ ___ 17 Subitem
\___ 28 Subitem
7 Hoofditem
\___ ** Subitem
\___ ** Subitem
Ze kunnen onbeperkt aantal diep zijn, en de tabel structuur zit als volgende inmekaar:
menunr omschrijving submenu
5 Hoofditem 0
7 Hoofditem 0
17 Subitem 5
28 Subitem 17
Nu wil ik, dat als men een hoofditem verwijderd dat automatisch de rest ook verwijderd wordt. Helaas gebeurd dit niet.
Ik heb het volgende geprobeerd, maar dit werkt niet:
Helaas kan ik niet aangeven wat er fout gaat, naar mijn weten is dit een goede recursieve functie, maar 't looped voornamelijk.
Wat ik wil is dat ik een array heb waar hij items in plaatst als ik een item wil verwijderen. Klinkt vrij wazig, zal het proberen uit te leggen:
- Heb een database met de tabel: tbl_sitecontent_menu, in deze tabel staan een aantal kolommen welke afhankelijk van mekaar zijn, op het gebied van menu structuur.
Het zit zo in mekaar:
5 Hoofditem
\ ___ 17 Subitem
\___ 28 Subitem
7 Hoofditem
\___ ** Subitem
\___ ** Subitem
Ze kunnen onbeperkt aantal diep zijn, en de tabel structuur zit als volgende inmekaar:
menunr omschrijving submenu
5 Hoofditem 0
7 Hoofditem 0
17 Subitem 5
28 Subitem 17
Nu wil ik, dat als men een hoofditem verwijderd dat automatisch de rest ook verwijderd wordt. Helaas gebeurd dit niet.
Ik heb het volgende geprobeerd, maar dit werkt niet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| Public dbcon As New ByteFX.Data.MySqlClient.MySqlConnection
Public da As New ByteFX.Data.MySqlClient.MySqlDataAdapter
Public ds As New Data.DataSet
Dim arrList As New ArrayList
Function dbOpen() As Boolean
dbCon.ConnectionString = "server=www.logres.lan;database=elogres;uid=logres;pwd=******;"
Try
dbcon.Open()
Return True
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Return False
End Try
End Function
Function dbClose() As Boolean
Try
dbcon.Close()
Return True
Catch
Return False
End Try
End Function
Function dbQuery(ByVal intMenunr As Integer) As Boolean
If Not dbOpen() Then
MsgBox("Databeest error")
dbClose()
Else
da.SelectCommand = New ByteFX.Data.MySqlClient.MySqlCommand("SELECT * FROM TBL_SITECONTENT_MENU WHERE SUBMENU='" & intMenunr & "'", dbcon)
da.Fill(ds, "table1")
dbClose()
End If
dbClose()
End Function
Sub subRecursief(ByVal intMenunr As Integer)
Dim dbCount As Integer
ds.Clear()
dbQuery(intMenunr)
dbCount = ds.Tables("table1").Rows.Count - 1
If dbCount <= 0 Then
arrList.Add(intMenunr)
Else
Dim dbrecord As Data.DataRow
Dim i As Integer
For i = 0 To dbCount
Try
dbrecord = ds.Tables("table1").Rows.Item(i)
intMenunr = CInt(dbrecord("menunummer"))
Try
arrList.Add(intMenunr)
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
End Try
subRecursief(intMenunr)
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
End Try
Next i
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerwijder.Click
subRecursief(4)
Dim i As Integer
i = 0
End Sub |
Helaas kan ik niet aangeven wat er fout gaat, naar mijn weten is dit een goede recursieve functie, maar 't looped voornamelijk.