webForumDet fria alternativet

Problem med delete med checkboxar

10 svar · 342 visningar · startad av bigsky

bigskyMedlem sedan maj 2002821 inlägg
#1

Jag skriver ut poster från databasen på en sida bla. för att kunna lägga till, modifiera och ta bort poster från databasen. Vid varje post skriver jag ut en checkbox som när den är markerad och man klickar på radera betyder att den/de posten/erna ska raderas. Det är med andra ord ungefär som MSN har på Hotmail där man kan välja vilka brev man vill radera för att sedan göra detta genom att klicka på Ta bort.
I Value för varje post skriver jag ut vilket id posten har i databasen. Problemet är att om man har valt flera poster så fattar inte koden på ta bort-sidan vilken/vilka poster man menar. Får följande felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (komma) i frågeuttrycket 'Id = 30, 29'.

Någon som har ett förslag på vad jag ska skriva i koden på ta bort-sidan? Någon sorts Loop kanske?

MogMedlem sedan nov. 2003266 inlägg
#2

Prova med

id=30 AND id=29
LarsGMedlem sedan dec. 200012 464 inlägg
#3
sql = "delete from t where id in (" & checkBoxName & ")"
bigskyMedlem sedan maj 2002821 inlägg
#4

Det funkar inte, om jag markerat flera boxar försvinner bara en post itaget då jag försöker ta bort flera poster. Och om jag försöker redigera en post så uppdateras den med värdena från alla andra poster också. Man skulle ju i loopen som skriver ut posterna kunna göra ett formulär till varje post, men då försvinner ju liksom hela syftet med att ha en "markera alla" funktion.

Uppdatera koden:

Set rsUpdateIp = ConnectToSurvey.Execute("UPDATE detector SET Ip = '" & strIp & "' WHERE Id IN (" & checkBoxName & ") ")
Set rsUpdateIp = Nothing

Ta bort koden:

Set rsRemoveIp = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT detector.* FROM detector WHERE Id IN (" & checkBoxName & ") "
rsRemoveIp.Open SQL, ConnectToSurvey, 2, 3
rsRemoveIp.Delete
rsRemoveIp.Close
Set rsRemoveIp = Nothing

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Du behöver ingen recordset när du gör delete. Det räcker med

ConnectToSurvey.execute "delete FROM detector WHERE Id IN (" & checkBoxName & ") " ,,128

I updatefallet så är det enklast att göra en loop, ung.

for i = 0 to ipFieldName.count - 1
    ConnectToSurvey.execute  "UPDATE detector SET Ip = '" & ipFieldName(i) & "' WHERE Id = " & checkBoxName(i) 
next

Det går att skriva ett komplext updateuttryck med hjälp av case expression/iif

bigskyMedlem sedan maj 2002821 inlägg
#6

Är den koden för updatefallet komplett? Får ett felmeddelande som säger att ett objekt är nödvändigt.

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Ok, det behövs väl lite request och sådant också.

for i = 0 to request("ipFieldName").count - 1
bigskyMedlem sedan maj 2002821 inlägg
#8

Med

For i = 0 to Request.Form("ip").Count - 1
ConnectToSurvey.Execute "UPDATE detector SET Ip = '" & Request.Form("ip"), (i) & "' WHERE Id = " & Request.Form("checkme"), (i)
Next

Får jag följande fel:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i sträng i frågeuttrycket ''119.27.127.939, 127.0.0.1'.

bigskyMedlem sedan maj 2002821 inlägg
#9

Någon som m.h.a denna länk http://www.aspsidan.nu/default.asp?page=readArticle&menu=2&aId=48 kan sätta ihop något som skulle funka när man vill REDIGERA flera poster samtidigt, inte ta bort dem. Hela grejen är att jag vill kunna ändra flera fält samtidigt och sedan uppdatera databasen genom att bara behöva klicka på en uppdatera knapp, istället för att ändra varje fält och uppdatera med en knapp. Ändra ett fält till och uppdatera med en knapp.

bigskyMedlem sedan maj 2002821 inlägg
#10

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i sträng i frågeuttrycket ''127.0.0.11'.

For i = 0 to Request.Form("ip").Count - 1
ConnectToSurvey.Execute "UPDATE detector SET Ip = '" & Request.Form("ip"),(i) & "' WHERE Id IN (" & checkBoxName & "),(i) "
Next

Någon som kan hjälpa?

bigskyMedlem sedan maj 2002821 inlägg
#11

Jaja, får lösa det på annat sätt då. Möjligtvis genom att ta bort redigera funktionen.

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