---
title: "Flytta poster upp eller ner"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/41324-flytta-poster-upp-eller-ner"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Bjarne A"
published: "2002-04-10T20:09:26.000Z"
updated: "2002-04-14T10:53:40.000Z"
replies: 4
views: 297
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/41324-flytta-poster-upp-eller-ner"
---

# Flytta poster upp eller ner

## #1 — Bjarne A, 2002-04-10T20:09Z

Jag har en meny i ett forum där jag loppar alla poster i fältet "rubrik" och ger dom en länk där jag hänger på respektive id nummer till en undersida

```
<a href="lasa_artikel.asp?artikel=<%= RS("id")%>
```

där kan man sedan läsa allt som denna posten innehåller

Nu skulle jag vilja sortera om databasen enligt ID fältet

en tanke var att göra ett förmulär med dolda fält till posterna där man uppdaterade post "15" med innehållet i post "16" och "16" med "15" om man ville flytta posten uppåt och vise versa

En massa sessions med olika namn så att man inte raderar någon post och en massa info att skicka fram och tillbaka när jag bara vill byta ID nummer med varandra

Finns det någon enklare metod att göra detta på??

Permalänk: https://www.webforum.nu/p/41324

## #2 — PatrikB, 2002-04-11T06:00Z

skapa ett separat fält för sorteringsordningen. Allt blir mycket lättare då.
Vid upp skickar du med querystringsen för befintlig position och befitnlig position + 1 och vid ner ett steg befintlig position och befintlig position - 1

Det här är ett sådant tillfälle då ADODB.Recordset kommer till sin rätt

```
intPos = Request.QueryString("pos")
intNewPos = Request.QueryString("newpos")

strSQL = "SELECT SortField FROM myTable ORDER BY SortField ASC"

Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.Open myDSN

	Set objRS = Server.CreateObject("ADODB.Recordset")
		'## -- öppna recordsetet i editerings läge --
		objRS.Open strSQL, objConn, 3, 3

		If Not objRS.EOF Then
			objRS.MoveFirst
			'#" -- stega fram till befintlig position --
			objRS.Move intPos

			'## -- ändra sorteringsordningen --
			objRS("SortField") = intNewPos

			objRS.Update

			'## -- stega framåt till nästa post --
			objRS.Move intNewPos

			'## -- uppdatera sorteringsordningen --
			objRS("SortField") = intPos

			objRS.Update
		End If

		objRS.Close
	Set objRS = Nothing
```

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/641194

## #3 — Bjarne A, 2002-04-11T17:47Z

Det verkar jättebra. Har inte hunnit testa än men det slog mej att om man har 10 poster och raderar post 4 och 5, sedan vill man flytta ner 3 under 6. Försöker koden då inte att flytta den till 4?

Och en annan tanke var hur man gör så att första och sista bara går att flytta ner respektive upp

Jag kan bara hur man loopar in alla poster lika.

Permalänk: https://www.webforum.nu/p/641594

## #4 — Bjarne A, 2002-04-14T10:25Z

Med koden vill den flytta det antal steg som intNewPos är och inte till den raden men det går ju att skriva om med objRS.Move +1

```
			'## -- stega framåt till nästa post --
			objRS.Move intNewPos
```

Men problemen uppstår när det fattas rader som man har raderat
Finns det inget kommando som hämta nästa bara
Jag hämtar poster med nedan

```
<html>
<head><title>test</title>

</head>
<body>
<!--#INCLUDE FILE="adovbs.inc"--> <!--#INCLUDE FILE="koppling.asp"-->

<%
SQL = "SELECT * FROM texter ORDER BY ID DESC"
set rs = connect.execute(SQL) 
%> <%Do until Rs.EOF
intCnt = intCnt + 1%>
<%
Dim nu
Dim ner
nu = RS("SortField")
ner = nu +1
%>
<a href="ta_imot.asp?pos=<%=nu%>&newpos=<%=ner%>"><%= RS("rubrik")%></a><BR><BR>
<%Rs.MoveNext%>
<%Loop%>
<%
rs.close
set rs = nothing
%>

 
</body>

</html>
```

Och tar i mot med nedan

```
<html>
<head><title>test</title>

</head>
<body>
<!--#INCLUDE FILE="adovbs.inc"-->

<%
intPos = Request.QueryString("pos")
intNewPos = Request.QueryString("newpos")

strSQL = "SELECT SortField FROM texter ORDER BY SortField ASC"

Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\inetpub\wwwroot\skoltidning\db.mdb"

	Set objRS = Server.CreateObject("ADODB.Recordset")
		'## -- öppna recordsetet i editerings läge --
		objRS.Open strSQL, objConn, 3, 3

		If Not objRS.EOF Then
			objRS.MoveFirst
			'#" -- stega fram till befintlig position --
			objRS.Move intPos

			'## -- ändra sorteringsordningen --
			objRS("SortField") = intNewPos

			objRS.Update

			'## -- stega framåt till nästa post --
			objRS.Move intNewPos

			'## -- uppdatera sorteringsordningen --
			objRS("SortField") = intPos

			objRS.Update
		End If

		objRS.Close
	Set objRS = Nothing
%>
 
</body>

</html>
```

Permalänk: https://www.webforum.nu/p/645719

## #5 — PatrikB, 2002-04-14T10:53Z

så fort du tar bort en post måste du uppdatera sorteringsordningen oxå eftersom .Move använder sig av vilken position i recordsetet posten befinner sig på.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/645733

---

Tråden på webben: https://www.webforum.nu/amne/asp/41324-flytta-poster-upp-eller-ner
