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
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
------------------
MVH // Cyprys Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.
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
------------------ essentitia preter non sans multiplicandum
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...
------------------ Data-Doktorn Min egen musik! Mitt coverband
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