webForumDet fria alternativet

Skriva in i databasen på flera ID samtidigt

ASP

6 svar · 301 visningar · startad av Sico

Medlem sedan maj 20002 597 inlägg
Frågan#1

Ett turnerings-system.
När jag ska skriva in alla resultat så loopar jag fram alla anmälda spelare med 2 inputrutor bakom där pris och placering skall anges. Jag fyller i alla spelarnas placeringar respektive pris samtidigt och skickar iväg. Men hur ska jag få in detta i databasen?

	playerID = Request.Form("ID")
	Money = Request.Form("Money")
	EndPos = Request.Form("EndPos")

	strSQL = "UPDATE t_TourReg SET " _
	& " f_Money = '"& Money &"', f_EndPos = '"& EndPos &"' Where f_ID=" & playerID & ""

	[b]Connect.Execute( strSQL )[/b]

Jag får felmeddelande:

fel skrev:

Microsoft JET Database Engine (0x80040E14)
Syntaxfel (komma) i frågeuttrycket 'f_ID=113, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145'.
/badbet/turnering.asp, line 404

Skriver jag ut mina Request.Form's så visar dom rätt, dvs.

response.write skrev:

113, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 10000, , 200 SEK, 300 SEK, , , , , , 700 SEK, , , , , , , , , , , , 11, 10, 5, 3, 2, 7, 21, 22, 14, 23, 1, 19, 12, 8, 6, 15, 17, 4, 13, 18, 16, 24, 20

Första gången jag ger mig in på detta.

Medlem sedan maj 20018 027 inlägg
#2

Jag har ingen aning om ifall det är möjligt att göra som du vill, men skulle jag testa, skulle mitt where-villkor se ut på följande vis:

where f_ID in (113, 124, 125,....)
Medlem sedan dec. 200012 464 inlägg
#3
for i = 0 to request.form("id").count - 1
    playerID = Request.Form("ID")(i)
    Money = Request.Form("Money")(i)
    EndPos = Request.Form("EndPos")(i)
    strSQL = "UPDATE t_TourReg SET " _
    & " f_Money = '"& Money &"', f_EndPos = '"& EndPos &"' Where f_ID=" & playerID 
    connect.execute strSQL
next
Medlem sedan maj 20002 597 inlägg
#4

Tack, men.

fel skrev:

Request-objekt, ASP 0105 (0x80004005)
Ett matrisindex ligger utanför intervallet.
/badbet/turnering.asp, line 398

playerID = Request.Form("ID")(i)

Medlem sedan dec. 200012 464 inlägg
#5

Jaså, då hmm

playerID = split(Request.Form("ID"),",")
Money = split(Request.Form("Money"),",")
EndPos = split(Request.Form("EndPos"),",")
for i = 0 to ubound(playerID)  
    strSQL = "UPDATE t_TourReg SET " _
    & " f_Money = '"& Money(i) &"', f_EndPos = '"& EndPos (i) &"' Where f_ID=" & playerID (i)
    connect.execute strSQL,,128
next

Jag förutsätter att fälten innehåller lika många värden.

Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Av någon anledning får du ett array-fel (matris=array).

Eftersom du använder IN vet du nog inte vilken som blir fel, men troligtvis på slutet.

Titta noga på dem och se om det löser problemet, annars får du loopa igenom frågan utan IN.

Splitta arrayen på ", ", loopa igenom arrayen med en UPDATE per loop. Till sist blir det fel, lös det ;)

Medlem sedan maj 20002 597 inlägg
#7

Tack LarsG
Du är en kung.

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