ändra flera poster

ASP

7 svar · 242 visningar · startad av aleborg

Medlem sedan jan. 20013 341 inlägg
Trådstart#1

Jag har en kolumn som man kan sortera efter, den är en integer, där man kan sätta i vilken ordning posterna ska visas.

Men jag vill ju gärna inte ha dubbletter och jag vill att om man ändrar från 8 till 3 så ska alla andra poster som har 3 eller större ändras automatiskt.
Hur ska jag göra?
Så här långt har jag kommit:) :

SSSQL="Select * From Markmat Where MarkID="& Request.QueryString("save")
Set mark=Conn.Execute(SSSQL)

If objUpload.Form("MarkOrder")<>mark("MarkOrder") Then
'nått... vad?
End If
mark.Close
Set mark=Nothing
Medlem sedan dec. 20003 563 inlägg
#2

Du får in, genom formulär eller vad du vill, den gamla placeringen av en post genom "plats" och bestämmer dess nya plats genom ny_plats.
Tabellen heter Markmat och kolumnen som sorterar heter Markplats.

<%
plats = cint(Request.form("Order"))
ny_plats = cint(Request.form("newOrder"))

SQL = "UPDATE Markmat SET Markplats = "&ny_plats&" WHERE Markplats = "&plats&" "

SQL2 = "UPDATE Markmat SET Markplats = Markplats -- 1 WHERE Markplats > "&plats&" "

conn.execute SQL
conn.execute SQL2
%>

Fast jag vet inte riktigt om det här funkar? Skrev bara ihop det nu.
Kanske någon av de riktiga SQL-gudarna kan hjälpa till..
LarsG... Var är du :e

Medlem sedan dec. 200012 464 inlägg
#3
SSSQL="Select MarkOrder From Markmat Where MarkID="& Request.QueryString("save")
Set mark=Conn.Execute(SSSQL)
If objUpload.Form("MarkOrder") <> mark("MarkOrder") Then
If objUpload.Form("MarkOrder") > mark("MarkOrder") Then
 SSSQL = "update MarkMat set MarkOrder = Markorder - 1 where MarkOrder between " & mark("markorder") & " + 1 and " & objUpload.Form("MarkOrder")
else  
SSSQL = "update MarkMat set MarkOrder = Markorder + 1 where MarkOrder between " & objUpload.Form("MarkOrder") & " and " & mark("markorder") & " - 1 "

End If
conn.execute SSSQL
SSSQL = "update markmat set MarkOrder = " & objUpload.Form("MarkOrder") & " where MarkID="& Request.QueryString("save")
conn.execute SSSQL
end if
mark.Close
Set mark=Nothing
Medlem sedan dec. 20003 563 inlägg
#4

Snabbare än pizzan kommer till dörrn :e

Medlem sedan jan. 20013 341 inlägg
#5

den omvandlar inte dom andra och man kan bara ändra till mindre än nuvarande siffra :(

Medlem sedan jan. 20013 341 inlägg
#6

neråt(3 till 8) funkar det men uppåt(8 till 3) så blir det dubbletter

Kan man på nått sätt lopa igenom alla och sätta nya värden på alla genom att ta det lägsta värdet och sätta dit en etta, näst lägsta en tvåa osv... kommer behöva det för delete funktionen...

Medlem sedan jan. 20013 341 inlägg
#7

någon?

Medlem sedan jan. 20013 341 inlägg
#8

Får inte detta att funka:

SSSQL="Select MarkOrder From Markmat Where MarkID="& Request.QueryString("save")
Set mark=Conn.Execute(SSSQL)
If objUpload.Form("MarkOrder") <> mark("MarkOrder") Then
If objUpload.Form("MarkOrder") > mark("MarkOrder") Then
STSQL = "update Markmat set MarkOrder = MarkOrder - 1 where MarkBel="& mark("MarkBel") &" AND MarkOrder between " & mark("markorder") & " + 1 and " & objUpload.Form("MarkOrder")
else 
STSQL = "update Markmat set MarkOrder = MarkOrder + 1 where MarkBel="& mark("MarkBel") &" AND MarkOrder between " & objUpload.Form("MarkOrder") & " and " & mark("markorder") & " - 1 "
End If
conn.execute STSQL
SSSQL = "update markmat set MarkOrder = " & objUpload.Form("MarkOrder") & " where MarkID="& Request.QueryString("save")
conn.execute SSSQL
end if
mark.Close
Set mark=Nothing

Om man ändrar en siffra från 2 till 8 så funkar det men ändrar man från 8 till 2 så blir ordningen 1,2,2,3,4,5,6,7,9

Nån som vet vad felet är???? Please???

251 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)