webForumDet fria alternativet

Characters found after end of SQL statement

ASP

12 svar · 326 visningar · startad av Inferis

Medlem sedan sep. 2000667 inlägg
Frågan#1

Borde inte denna koden fungera? Jag hittar inget fel någonstans.
Får felmeddelande:
Characters found after end of SQL statement
(Pekar på conn.execute)

Databasen är Access.
"& username &" har ett värde.

set conn = server.createobject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("../databas.mdb")&";" 
strSQL = "DELETE FROM A WHERE AA = '" & Username & "';" &_
"DELETE FROM B WHERE BB = '" & Username & "';" &_
"DELETE FROM C WHERE CC = '" & Username & "';" &_
"DELETE FROM D where DD = '" & Username & "';" &_
"DELETE FROM E where EE = '" & Username & "'"
'response.write strSQL
conn.execute strSQL,,128
conn.close 
set conn = nothing
Medlem sedan mars 20023 561 inlägg
#2

Är det inte så att access inte stödjer flera statements på samma gång? :q

Prova att göra så här istället:

set conn = server.createobject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("../databas.mdb")&";" 
strSQL1 = "DELETE FROM A WHERE AA = '" & Username & "';"
conn.execute strSQL1,,128
strSQL2 = "DELETE FROM B WHERE BB = '" & Username & "';"
conn.execute strSQL2,,128
osv...osv...
Medlem sedan mars 200348 inlägg
#3

Stämmer bra
Du måste köra execute för varje delete-sats var för sig (5 delete, 5 Execute)

Medlem sedan sep. 2000667 inlägg
#4

Måste man göra så här?

SQL_A = "DELETE FROM A WHERE AA = '" & Username & "'"
SQL_B = "DELETE FROM B WHERE BB = '" & Username & "'"
SQL_C = "DELETE FROM C WHERE CC = '" & Username & "'"
conn.execute SQL_A,,128
conn.execute SQL_B,,128
conn.execute SQL_C,,128
Medlem sedan mars 20023 561 inlägg
#5

Så länge du använder Access: JA! ;)

Eller slår du ihop allting till ett enda statement.

Medlem sedan sep. 2000667 inlägg
#6

Josef:

Ska det vara ett ; i slutet?

Medlem sedan mars 20023 561 inlägg
#7

Inferis skrev:

Josef:

Ska det vara ett ; i slutet?

Spelar ingen roll så länge du inte har flera statements i samma sträng. Eller är detta helt galet?

Medlem sedan sep. 2000667 inlägg
#8

Spelar ingen roll så länge du inte har flera statements i samma sträng. Eller är detta helt galet?

Ingen aning om man måste ha ; med. Det fungerar bra utan.

Men det måste ju ta mer prestanda att köra så här?

Medlem sedan mars 20023 561 inlägg
#9

Ja. ;)

Men du borde ju kunna slå ihop allting till ett enda statement och på så sätt bara behöva köra en .execute.

Medlem sedan sep. 2000667 inlägg
#10

Josef skrev:

Ja. ;)

Men du borde ju kunna slå ihop allting till ett enda statement och på så sätt bara behöva köra en .execute.

Jag har ingen aning om vad du menar med ett enda statement.
:l

Medlem sedan mars 20023 561 inlägg
#11

Att du slår ihop alla dina DELETE-queries till en enda:

strSQL = "DELETE FROM a, b, c WHERE a.aa = '" & username & "' AND b.bb = '" & username & "' AND c.cc = '" & username & "';"

Detta borde funka tror jag. :l

/RED: Detta fungerar inte alls.

Medlem sedan dec. 200012 464 inlägg
#12

Nej, det går inte och göra delete på det sättet.

Om det finns foreign-key kopplingar mellan tabellerna så kan du sätta upp att delete i AA medför delete på refererande poster i de andra tabellerna.

Om inte, varför har du flera tabeller överhuvudtaget?

Medlem sedan sep. 2000667 inlägg
#13

LarsG skrev:

Om inte, varför har du flera tabeller överhuvudtaget?

Alla tabeller innehåller olika data, men om en medlem ska radera sig så vill jag ta bort denne ur adressböcker, radera dennes adressbok, ta bort dennes gästbok etc.

277 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)