webForumDet fria alternativet

ändra flera poster

ASP

7 svar · 238 visningar · startad av aleborg

Medlem sedan jan. 20013 341 inlägg
Frågan#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

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

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

------------------
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.

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

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20003 563 inlägg
#4

Snabbare än pizzan kommer till dörrn :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.

Medlem sedan jan. 20013 341 inlägg
#5

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

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

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...
------------------
Data-Doktorn
Min egen musik!
Mitt coverband

[Redigerat av aleborg den 31 jul 2001]

Medlem sedan jan. 20013 341 inlägg
#7

någon?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

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???

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)