bigskyMedlem sedan maj 2002821 inlägg 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?
LarsGMedlem sedan dec. 200012 464 inlägg sql = "delete from t where id in (" & checkBoxName & ")"
bigskyMedlem sedan maj 2002821 inlägg 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 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 Ä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 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 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 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
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 Jaja, får lösa det på annat sätt då. Möjligtvis genom att ta bort redigera funktionen.