Ja, det där är inte en lätt sak... trixade med det ett tag innan jag hittade en lösning som funkade.
Postar den här så har du en början:
SubUP_DOWN("up",12)'Post 12 skall upp ett "hack".
SubUP_DOWN("down",15)'Post 13 skall ner ett "hack".
sub SubUP_DOWN(dir,id)
Set countid = Connection.execute("SELECT t1.lank_ordning AS foo,COUNT(t2.lank_ordning) AS bar FROM tabell AS t1, tabell AS t2 WHERE t1.id = "& id &" GROUP BY t1.id")
If Not countid.BOF Or Not countid.EOF Then
Dim foo,bar
foo = countid("foo")
bar = countid("bar")
end if
countid.close : set countid = nothing
if dir = "up" then 'Flytta upp posten
if cInt(foo) > 1 then
Connection.execute("UPDATE tabell AS t1, tabell AS t2 SET t2.lank_ordning = CASE WHEN t2.lank_ordning = t1.lank_ordning THEN t1.lank_ordning - 1 ELSE t1.lank_ordning END WHERE t1.id = "& id &" AND t2.lank_ordning BETWEEN t1.lank_ordning - 1 AND t1.lank_ordning"),,128
end if
else 'Flyttan ner posten
if cInt(foo) < cInt(bar) then
Connection.execute("UPDATE tabell AS t1, tabell AS t2 SET t2.lank_ordning = CASE WHEN t2.lank_ordning = t1.lank_ordning THEN t1.lank_ordning + 1 ELSE t1.lank_ordning END WHERE t1.id = "& id &" AND t2.lank_ordning BETWEEN t1.lank_ordning AND t1.lank_ordning + 1"),,128
end if
end if
end sub

