10. februar 2004 - 20:17Der er
10 kommentarer og 1 løsning
At slette ting fra flere tabeller på samme tid
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database.mdb")) Conn.Execute("DELETE FROM [topic] WHERE [ID] = " & Request("ID")) response.redirect("/default.asp") Conn.Close Set Conn = Nothing
Det er scriptet jeg bruger for at slette noget fra en database. Men nogle gange sker det, at jeg vil slette flere ting fra en database på én gang. At tilføje en ekstra Conn.Execute-linie virker ikke. Det her virker altså ikke:
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database.mdb")) Conn.Execute("DELETE FROM [topic] WHERE [ID] = " & Request("ID")) ***EKSTRA LINIE: Conn.Execute("DELETE FROM [reply] WHERE [topic] = " & Request("ID")) response.redirect("/default.asp") Conn.Close Set Conn = Nothing
Er der nogen der ved hvad man kan gøre for at løse dette?
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database.mdb")) Conn.Execute("DELETE FROM [topic] WHERE [ID] = " & Request("ID") & " AND [ID] = " & Request("ID2")) response.redirect("/default.asp") Conn.Close Set Conn = Nothing
Du kan jo også bruge '<' og '>' for at angive nogle intervaller...
Synes godt om
Slettet bruger
10. februar 2004 - 20:29#2
DEnne kode vælger ting fra tabellen "topic"... men der er 2 tabeller der skal slettes noget fra: Topic og Reply - det er her problemet kommer ind.
Man kan ikke tilføje en ekstra linie, og man kan heller ikke kopiere scriptet og køre det igen nedenunder, hvor den anden ting fra den anden tabel bliver slettet.
Eller kan du prøve at skrives som dette men en inner join hvis Access vile det:
Conn.Execute("DELETE FROM [topic] INNER JOIN [reply] ON topic.id=reply.topic WHERE topic.id = " & Request("ID"))
Synes godt om
Slettet bruger
10. februar 2004 - 21:50#5
altså, jeg prøvede lige igen... jeg får denne fejlmelding:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression '[topicID] = '12'. /actions/admin_forum.asp, line 10
Linie 10 er det her: Conn.Execute("DELETE FROM [forum_reply] WHERE [topicID] = '"& Request("ID"))
Scriptet ser sådan her ud:
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database.mdb")) Conn.Execute("DELETE FROM [forum_topics] WHERE [ID] = " & Request("ID")) Conn.Execute("DELETE FROM [forum_reply] WHERE [topicID] = '"& Request("ID")) response.redirect("/forum.asp?cat="& request("forum") &"") Conn.Close Set Conn = Nothing
Feltet topicID i tabellen forum_reply er et tekst-felt, mens ID i tabellen forum_topic er et autonummerering.
Ok så prøv at rette denne: Conn.Execute("DELETE FROM [forum_reply] WHERE [topicID] = '"& Request("ID"))
Til denne så der også kommer en ' med efter tallet: Conn.Execute("DELETE FROM [forum_reply] WHERE [topicID] = '"& Request("ID") & "'")
Synes godt om
Slettet bruger
10. februar 2004 - 23:00#7
@eagleeye: Det virker stadigvæk ikke... samme fejl.
Synes godt om
Slettet bruger
10. februar 2004 - 23:19#8
Jeg ville lave en inner join forbindelse mellem de to tabeller i starten af koden. Altså noget i retning af:
Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open "Select * From forum_topics Inner Join forum_reply On forum_topics.Id = forum_reply.Id Where forum_topics.Id = " & Request("Id") & "", Conn
Her har du så joinet dine to tabeller og har altså alle indlæg, der hører til det givne topic, samt selve topic.
Herefter:
Rs.Delete Rs.Close Set Rs = Nothing
Response.Redirect("default.asp")
Jeg opretter her et Recordset object, der indeholder selve SQL-sætningen og åbner dette ved hjælp af Conn. Derefter kan du bruge metoden delete direkte og dermed fjerne alle de indlæg der måtte være samt selve topic.
Jeg har ikke efterprøvet den kode jeg har skrevet, men den kan måske give dit et spor at gå efter.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.