---
title: "Plocka ut endast EN valfri rad i databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/128449-plocka-ut-endast-en-valfri-rad-i-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "zlakker"
published: "2005-05-18T19:00:57.000Z"
updated: "2005-05-19T15:07:14.000Z"
replies: 8
views: 357
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/128449-plocka-ut-endast-en-valfri-rad-i-databas"
---

# Plocka ut endast EN valfri rad i databas

## #1 — zlakker, 2005-05-18T19:00Z

Jag har sökt och det finns ett antal kod-snuttar som slumpar ut olika rader från en databas.

Jag vill på ett enkelt sätt hämta ut endast EN slumpad rad ur databasen och hämta ett värde.

Kan man skriva själva Random-kommandot direkt i SQL-satsen?

Sedan kan jag lägga värdet i en recordset och skriva ut det och tex när man går in på sidan nästa gång så borde ett annat värde slumpas fram.

Jag använder mig av en access-databas.

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

## #2 — @nders, 2005-05-18T19:39Z

> Kan man skriva själva Random-kommandot direkt i SQL-satsen?

Nej, om man använder Access fungerar det av någon anledning inte.

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

## #3 — zlakker, 2005-05-18T19:55Z

Vad tråkigt
Finns det någon enklar kod för det eller måste man ha ett helt A4 typ :)

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

## #4 — patflat, 2005-05-18T21:13Z

Man kan slumpa poster från en Access-databas på detta sätt:

```
strSQL = "SELECT TOP 1 fält FROM tabell ORDER BY Rnd(-Id-" & Replace(Rnd(),",",".") & ")"
```

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

## #5 — zlakker, 2005-05-18T21:37Z

Tack för tipse men det plockar bara den första posten i databasen hela tiden.
Har du fåttt det att fungera?

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

## #6 — Josef, 2005-05-18T22:20Z

Lägg till *Randomize* på raden över.

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

## #7 — Nova, 2005-05-19T04:25Z

Denna kod skrev @nders till mig när jag skrev en liknande fråga.

```
Dim vIDs()

' Här bestämmer vi hur många recept vi vill slumpa fram.
iAntalRecept = 3

Redim vIDs(iAntalRecept)

set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open MM_news_STRING

sSQL = "SELECT Receptnr, rec_namn1 FROM Recept"
set objRS = objConn.Execute (sSQL)

vRecept = objRS.GetRows()

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing

' Kalla på slumpfunktionen!
RandomizeIt vRecept, vIDs, 0, iAntalRecept

' Och nu är det dags att skriva ut resultaten!
for i = 0 to ubound(vIDs) -1
	sReceptNummer = vRecept(0, vIDs(i))
	sReceptNamn = vRecept(1, vIDs(i))
	' Index 0 och 1 ovan hänvisar alltså till det första resp. andra fältet i recordsetet (enl. ordningen i SQL-frågan).
	' Lägger du till fler fält, är det bara att plussa på. 
	Response.Write sReceptnummer & " - " & sReceptnamn & "<br>"
next

Sub RandomizeIt(ByVal vRows, ByRef vContainer, ByRef iCounter, ByVal iRecords)
	sTmpTest = "|" & join(vContainer, "|") & "|"
	Randomize
	iTmp = Int ((ubound(vRows, 2) + 1) * rnd)
	if instr(sTmpTest, "|" & vRows(0, iTmp) & "|") = 0 then
		' Den hade vi inte tidigare slumpat fram. Den tar vi!
		vContainer(iCounter) = iTmp
		iCounter = iCounter + 1
	end if
	if iCounter < iRecords then
		' Vi ska hämta fler! Kalla på funktionen igen.
		RandomizeIt vRows, vContainer, iCounter, iRecords
	end if
End Sub
```

Den förutsätter att du har en räknare.  Ändra i SQLen så att den stämmer med din tabell och ändra antalet rader du vill skriva ut samt objConn.Open så det stämmer för din sökväg, då borde den fungera för dig.

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

## #8 — @nders, 2005-05-19T06:06Z

Det som är märkligt med Access är att det går alldeles utmärkt att köra en enkel fråga med order by rnd(id) i själva programmet, och man får en fungerande slumpning. Om man ansluter på annat vis, exempelvis från en ASP-sida med OLEDB, så fungerar inte slumpningen, och man får samma post vid varje exekvering. I MySQL och Microsoft SQL Server fungerar det dock fint.

Mvh

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

## #9 — zlakker, 2005-05-19T15:07Z

Det funkar!
Tack patflat och Josef. Om man kombinerade era två fungerar det.
Har testat att uppdatera sidan 1000000 grr och det funkar varje gång. Eller kan det finnas någon möjlighet till fel?

```
<%
Randomize
SQL = "SELECT TOP 1 * FROM tblRandom ORDER BY Rnd(-Id-" & Replace(Rnd(),",",".") & ")"
Set RecSet = GetRecordset(SQL)
				
%>
<img src="upload/<%=RecSet("bildurl")%>">
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/128449-plocka-ut-endast-en-valfri-rad-i-databas
