Hej, KAn lösas smidigt och enkelt med främande nycklar och kaskad bortagning. I access kallar de främmande nycklar för relationer med referensintegritet. Funkar det sen när jag gör om databasen till MS SQL då? Löst problemet.ASP/VB/ACCESS - Ta bort kategori och allt under.
Jag sitter och gör en webshop i ASP/VB och med en Access-databas just nu (ska byta till MS SQL senare).
Jag har ett antal huvudkategorier, och för varje kategori kan man skapa underkategorier (hur långt ner som helst) och lägga produkter under varje kategori.
Om jag tab ort en kategori så vill jag såklart att ALLA underkategorier som tillhör denna kategori OCH alla produkter i kategorin och även produkterna i alla underkategorier ska tas bort.
Nu är frågar: Hur fixar jag detta på smidigaste sättet?
Från början hade jag tre kolumner i min Kategori-tabell; ID, Namn, Foralder. Men jag har ändrat så att det bara är ID och Namn nu, sen har jag gjort en ny tabell som innehåller kategorinamn och tillhörande underkategorier, dvs en kopplingtabell.
Hur ska jag göra? Jag har gjort detta innan, men har förvirrat bort mig fullständigt. Plus att jag vill veta vilket sätt som är effektivast/bäst.
Tacksam för (snabbt) svar!Sv: ASP/VB/ACCESS - Ta bort kategori och allt under.
Sv:ASP/VB/ACCESS - Ta bort kategori och allt under.
Sv: ASP/VB/ACCESS - Ta bort kategori och allt under.
Här är lösningen:
<%
SUB del_child(id)
'Dim arr
sql1 = "SELECT ID FROM Kategorier WHERE Foralder = " & id
RecSet.Open sql1, Conn, adOpenStatic, adLockOptimistic
IF not RecSet.EOF THEN
arr = RecSet.getrows()
RecSet.close
For i = 0 To ubound(arr, 2)
del_child arr(0,i)
next
sql2 = "DELETE * FROM Kategorier WHERE ID = " & id
Conn.execute(sql2)
sql3 = "DELETE * FROM Produkter WHERE Kategori = " & id
Conn.execute(sql3)
ELSE
RecSet.close
sql2 = "DELETE * FROM Kategorier WHERE ID = " & id
Conn.execute(sql2)
sql3 = "DELETE * FROM Produkter WHERE Kategori = " & id
Conn.execute(sql3)
END IF
END SUB
id = request.querystring("id")
namn = request.querystring("sortkat_namn")
del_child id
%>