webForumDet fria alternativet

Characters found after end of SQL statement

12 svar · 326 visningar · startad av Inferis

InferisMedlem sedan sep. 2000670 inlägg
#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
JosefMedlem 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...
ulfeMedlem 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)

InferisMedlem sedan sep. 2000670 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
JosefMedlem 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.

InferisMedlem sedan sep. 2000670 inlägg
#6

Josef:

Ska det vara ett ; i slutet?

JosefMedlem 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?

InferisMedlem sedan sep. 2000670 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?

JosefMedlem 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.

InferisMedlem sedan sep. 2000670 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

JosefMedlem 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.

LarsGMedlem 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?

InferisMedlem sedan sep. 2000670 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.

130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)