Har ngn lite kod för hur man fixar en rekursiv funktion för att hämta fram data ur en trädstruktur. Vad är det som inte fungerar då? detta fel får jag, Marcus, Varför använder du inte relationer i DataSet istället? Fick det att fungera då jag stängde databaskopplingen.Rekursive funktion med DataSet
Lyckades ej med mitt försök som finns nedan.
Public Sub getUserNodeList(ByVal NodeID As Int16, ByRef List As String)
Dim fldID, i As Int16
Dim myDataAdapter As New OleDbDataAdapter()
Dim myDataSet As New DataSet()
Dim myDataRow As DataRow
db.Init_DB()
SQL = "SELECT id FROM nodes WHERE parent_id = " & NodeID & " ORDER BY parent_id ASC"
myDataAdapter.SelectCommand = db.getCommand(SQL)
myDataAdapter.Fill(myDataSet, "Nodes")
For Each myDataRow In myDataSet.Tables("Nodes").Rows
List = List & " " & myDataRow("ID").ToString()
getUserNodeList(CInt(myDataRow("ID").ToString()), List)
Next
db.destroy()
end subSv: Rekursive funktion med DataSet
Tycker att du borde kolla på StringBuildern istället för att joxa med en string. StringBuildern är betydligt bättre att använda när man appendar till en sträng. Finns i System.TextSv: Rekursive funktion med DataSet
Object reference not set to an instance of an object.
Tack ska kolla in StringBuildern Sv: Rekursive funktion med DataSet
Någonstanns försöker du använda en variabel som inte pekar på något objekt. Kontrollera att alla dina variabler har blivit tilldelade ett värde innan du använder dem.Sv: Rekursive funktion med DataSet
http://www.cshrp.net/content.aspx?showID=613Sv: Rekursive funktion med DataSet
Antagligen är inte detta den effektivaste lösningen, men det får duga så länge.
Public Sub getUserNodeList(ByVal NodeID As Int16, ByRef List As String)
Dim fldID, i As Int16
Dim myDataAdapter As New OleDbDataAdapter()
Dim myDataSet As New DataSet()
Dim myDataRow As DataRow
db.Init_DB()
SQL = "SELECT id FROM nodes WHERE parent_id = " & NodeID & " ORDER BY parent_id ASC"
myDataAdapter.SelectCommand = db.getCommand(SQL)
myDataAdapter.Fill(myDataSet, "Nodes")
db.destroy()
For Each myDataRow In myDataSet.Tables("Nodes").Rows
List = List & " " & myDataRow("ID").ToString()
getUserNodeList(CInt(myDataRow("ID").ToString()), List)
Next
end sub