Jag stötte på patrull när jag nu försöker radera en hel kategori, ex. "Bilar",
som i exemplet ovan har en mängd underkategorier under sig.
Jag kan ju inte enbart gå på ID här utan det måste nog till en loop igenom hela
databasen för att kolla hur dom är relaterade till varande, annars kommer det bli
en massa spill kvar i databasen.. och det vill jag ju inte.
Kan det här kanske funka? Har inte testat, men man kan ju hoppas. (Om du inte ville ha det som en enda SQL-fråga?)
Sub DeleteTree(intId)
strSQL = "SELECT id FROM tbl WHERE cat_parent_id = " & intId
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
Do Until objRS.EOF
DeleteTree objRS(0)
objRS.MoveNext
Loop
End If
objRS.Close : Set objRS = Nothing
strSQL = "DELETE FROM tbl WHERE id = " & intId
objConn.Execute(strSQL),,128
End Sub
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "..."
DeleteTree 10
objConn.Close : Set objConn = Nothing
Men det lär väl bli en rekursiv funktion i presentationslagret för att göra det.
Sub ShowTree(intId)
strSQL = "SELECT cat_name,id FROM tbl WHERE cat_parent_id = " & intId
Set RS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
Do Until objRS.EOF
Response.write(RS(0)&" | "& RS(1) &"<br>")
ShowTree RS(0)
objRS.MoveNext
Loop
End If
End Sub
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "..."
ShowTree 10
objConn.Close : Set objConn = Nothing
Det kan vara att min kåd är felskriven men, skall du hämta alla underliggande "kategorier" så måste det väl vara någon form av rekursiv funktion. Eventuellt så kan man med en SP i MsSql göra det samma, vet inte riktigt.
Det kan vara att min kåd är felskriven men, skall du hämta alla underliggande "kategorier" så måste det väl vara någon form av rekursiv funktion. Eventuellt så kan man med en SP i MsSql göra det samma, vet inte riktigt.
Nja.. jag hade, innan jag postade här, testat en liknande funktion.. men när funktionen gjort
några 1000 loopar/execute så fick jag det där felmeddelandet.. så jag tror inte att en sådan
funktion är tillräckligt stabil för att jag skulle använda den.
Jag använder som sagt mySQL här så någon SP kan jag heller inte skapa. *suck*
271 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a