---
title: "Slumpa rad ur databas?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/6289-slumpa-rad-ur-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "M@rtin"
published: "2000-08-12T20:57:00.000Z"
updated: "2000-08-14T21:13:00.000Z"
replies: 3
views: 210
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/6289-slumpa-rad-ur-databas"
---

# Slumpa rad ur databas?

## #1 — M@rtin, 2000-08-12T20:57Z

Hur gör man om man vill slumpa fram en rad ut en databas? Finns säkert massor av varianter men jag vill ha ett väldigt enkelt sätt... 
Jag har en ID räknare i databasen så det borde väl bara vara att hämta högsta ID-nummret o sedan slumpa ett tal mella 1 o det nummret o sedan läsa in raden där ID-nummret är lika med slumptalet. Problemet är att jag inte vet hur man slumpar i asp :(

//M@rtin

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

## #2 — SPiN, 2000-08-14T00:35Z

Script för slumpning i ASP ser ut så här:

```
<%
dim slumpa
randomize
slumpa = rnd
%>
```

Men rnd slumpar bara ett tal mellan 0 och 1, så då kan man multipliciera det med 10 eller hundra, beroende på hur många poster du har i databasen.
Om du inte vet hur många poster det är, kan man räkna dom. Ett script skulle alltås kunna se ut så här:

```
<%
set conn = Server.CreateObject("ADODB.Connection")
pth = "DBQ=" & Server.MapPath("sökväg/till/databas.mdb")
conn.Open "Driver={microsoft access driver (*.mdb)}; " & pth & ";"
set mySQL = "SELECT COUNT(*) AS rekna FROM tabell"
set RS = conn.Execute(mySQL)

if RS("rekna") > 10 then
randomize
slumpa = rnd * 100
else
randomize
slumpa = rnd * 10
end if

SQL = "SELECT * FROM tabell WHERE id = '" & slumpa & "'"
set RS2 = conn.Execute(SQL)

Response.Write "Nu slumpades <b>" & RS2("namn") & "</b> med id:et " & RS2("id") & "."
%>
```

Då får du en ny slumpning varje gång scriptet körs. Vill du inte det så tar du bort alla randomize i koden.

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

## #3 — Vide, 2000-08-14T06:30Z

Enda problemet med ovanstående kod är att id:t alltid måste börja på 1 och sedan räknas uppåt utan mellanrum... Här är ett sätt jag använder på min sajt:

```
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("/scripts/databas.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

SQL = "select Count(*) AS klo from lankar"
Set RS_klo = databas.execute(SQL)

Randomize
Set rstemp = Server.Createobject("ADODB.Recordset")
SQL = "Select * from lankar"
rstemp.cursorlocation = 3
rstemp.cachesize = 5
rstemp.open SQL, "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/scripts/databas.mdb") & ";"
rstemp.move Int(Rnd*RS_klo("klo"))
```

Nu ligger alltså databasposten i rstemp...

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

## #4 — M@rtin, 2000-08-14T21:13Z

Okej, tack båda två.
Om det blir ett hopp i ID när man raderar en rad så måste jag nog använda Vides version.

//M@rtin

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/6289-slumpa-rad-ur-databas
