Visa ett inlägg
Oläst 2009-01-25, 00:07 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Du behöver dela in en förflyttning i flera mindre steg:

låt oss ta ett exempel:

Du har en lista med:

Prio, Namn
1, Kalle
2, Olle
3, Greta
4, Lena
5, Hanna
6, Torkel

Om du nu vill flytta raden 5, Hanna till position 2 och flytat ned alla som idag har 2 ett steg så kan du göra så här:

Steg 1:
Ta posten 5, Hanna och ändra prio till 999, Hanna

Prio, Namn
1, Kalle
2, Olle
3, Greta
4, Lena
6, Torkel
999, Hanna




Steg 2:
Öka värdet på alla pri som är i intervalet 2-4 med 1

Prio, Namn
1, Kalle
3, Olle
4, Greta
5, Lena
6, Torkel
999, Hanna


Steg 3:
Ändra prio 999 till 2

Prio, Namn
1, Kalle
2, Hanna
3, Olle
4, Greta
5, Lena
6, Torkel


Klart!


I SQL skulle du mao behöva göra 3 olika update-satser:

Kod:
UPDATE tbl SET prio=999 WHERE prio=5;
UPDATE tbl SET prio=prio+1 WHERE prio>=2 AND prio<5;
UPDATE tbl SET prio=2 WHERE prio=999;
En datalj i sammanhanget kanske men du kan ju välja att ha en mellanlagringsstatus på 0 i stället för 999 om det blir enklare.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat