---
title: "Random från Databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/101732-random-från-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Danielkun"
published: "2004-04-17T18:41:11.000Z"
updated: "2004-04-23T07:43:22.000Z"
replies: 10
views: 662
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/101732-random-från-databas"
---

# Random från Databas

## #1 — Danielkun, 2004-04-17T18:41Z

Jag har en Access Databas som jag använder denna sträng på,

strSQL = "SELECT ID, Japanese, Hiragana, English, Typ, Datum, Apperance, Hits FROM words WHERE Addedby = 'Danielkun' ORDER BY RND(ID)"

och resultatet är slumpat om man jämnför med ordningen inläggen är inlaggda i databasen, fast den verkar bara slumpa en gång för varje gång man kommer tillbaka är dom i "samma" slumpande ordning.. vet nån hur man får ASP att slumpa om den 'igen'?

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

## #2 — ampy, 2004-04-17T21:38Z

RND() finns inte i MS Access. Däremot kan du lösa det på andra sätt, ta en titt i nedanstående tråd:

<http://www.webforum.nu/showthread.php?s=&forumid=55&threadid=75738>

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

## #3 — Danielkun, 2004-04-22T06:47Z

Tack! Jag testade koden på detta sätt. Men nu funkar koden och ibland inte. Får man nummer som inte finns reggade i ID kolumnen i databasen då kanske? Sen har jag ingen riktig shuffle här heller.. får alltid samma inlägg sist.

Vore jätteglad för hjälp

```
Set objConn = server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Databasen
objConn.Open strConn

strSQL = "SELECT ID, Japanese, Hiragana, English, Typ, Datum, Apperance, Hits FROM words WHERE Addedby = 'Danielkun'"
Set objRS = objConn.Execute(strSQL)

if (objRS.BOF OR objRS.EOF) then

else
While NOT objRS.EOF

Randomize
objRS.Move CLng((objRS.RecordCount * Rnd) + 1
```

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

## #4 — J.N., 2004-04-22T08:43Z

HEJ!

Nej, denna kod har ju ingen hantering för undantag av id som inte används, tänkte jag skriva, men det har ingen betydelse, den hoppar ju till den post som slumpas fram?
Alltså borde det fungera.

I vilket fall ville jag delge min kod jag gjorde för några år sedan för att slumpa ut i detta fall sju recept, utan dubletter.
Detta löstes genom att lägga posterna i en array som krymptes efter varje slumpning.

Ta bort ' från raderna och se hur vackert det fungerar :e 

```
sql="SELECT id, namn FROM recept"
RS.Open sql, dbconn, 1, 2

If NOT RS.EOF Then
	GRrecept = RS.GetRows
	uboundarray=UBound(GRrecept,2)
	antalrec=7: antalslump=0: i=0
	If uboundarray+1 > antalrec Then
		Do Until antalslump = 7
			'for k=0 to uboundarray-i
				'response.write GRrecept(0,k) & " " & GRrecept(1,k) & "<br>"
			'next
			Randomize
			slumptal=Int(Rnd*(uboundarray+1-i)) '+1 pga array 0,1...
			'response.write "slump" & slumptal & "<br>"
			slumparrayrec(0,antalslump) = GRrecept(0,slumptal)
			'response.write "slumparrayrec0," & i  & " " & slumparrayrec(0,antalslump) & "<br>"
			slumparrayrec(1,antalslump) = GRrecept(1,slumptal)
			'response.write "slumparrayrec1," & i  & " " & slumparrayrec(1,antalslump) & "<br>"
			
			'flytta posterna över slumptalet nedåt
			For j = slumptal To uboundarray-1-i
				GRrecept(0,j) = GRrecept(0,j+1) '+1 ska ju flytta nästa tal
				'response.write "GRrecept1," & j & " " & GRrecept(0,j+1) & "<br>"
				GRrecept(1,j) = GRrecept(1,j+1)
				'response.write "GRrecept1," & j & " " & GRrecept(1,j+1) & "<br>"
			Next
			'response.write "ubound före krymp " & UBound(GRrecept,2) & "<br>"
			ReDim Preserve GRrecept(UBound(GRrecept, 1), UBound(GRrecept, 2) - 1)
			'response.write "ubound efter krymp " & UBound(GRrecept,2) & "<br>"
			i=i+1
			antalslump = antalslump+1
		Loop
	Else
		For j = 0 to uboundarray
			slumparrayrec(0,j) = GRrecept(0,j)
			slumparrayrec(1,j) = GRrecept(1,j)
		Next
	End If
	For k=0 To UBound(slumparrayrec,2)
		response.write "<a href=""rec.asp?id=" & slumparrayrec(0,k) & "">" & slumparrayrec(1,k) & "</a>"
	Next
Else
	response.write "Det finns inga recept."
End If
```

**RED:** Se <http://www.webforum.nu/showthread.php?s=&postid=837740#post837740>

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

## #5 — Danielkun, 2004-04-22T09:57Z

Tack for svaret!@men jag har en databas med 2-3000 poster sa det tar nog en del tid att gora detta ?  :D  fast jag vill bara plocka ut 1-200 i taget..

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

## #6 — J.N., 2004-04-22T10:03Z

HEJ!

Njae, tid och tid... :) 

Jag har rätt exakt 3000 recept, visserligen på olika språk och andra kategoriseringar också, det blir nog aldrig mer än 50 recept att slumpa bland, tror jag.

Men, det viktiga är att i vilket fall måste du hämta dina poster med ett RS, sedan skyfflar jag över det till en array, och då påverkar du inte servern längre.

OM du inte har en webbplats med många besökare, kan du bortse från prestandaproblem.
Testa med ditt värsta scenario.

Ska du verkligen slumpa bland alla dina poster?

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

## #7 — Danielkun, 2004-04-22T15:25Z

Jättetack,
Jag sitter o testar för fullt här nu, men det var lite klurigt det här.. har du kvar din sida med recept på nätet så jag kan se vad du får för resultat av det här? du har ganska mycket "grafik loopar" med i koden, eller?

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

## #8 — J.N., 2004-04-22T15:42Z

HEJ!

Njae, den finns kvar, men nu visar vi alla istället.

Grafikloopar, vad menar du med det, det finns inte tillstymmelse till gif i koden!

Du ska utan problem kunna köra min kod och få sju slumpningar av id och namn.

Kodsnutten

```
for k=0 to uboundarray-i
	response.write GRrecept(0,k) & " " & GRrecept(1,k) & "<br>"
next
```

ska INTE köras, jag tog bort fnuttarna tidigare, eftersom allt stod på en rad i min fil. (Ändrat ovan.)

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

## #9 — Danielkun, 2004-04-22T16:44Z

Sorry, men jag får "Inkompatibla typer" på 'slumparrayrec'  :r

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

## #10 — J.N., 2004-04-23T07:20Z

HEJ!

Okej, det förstår jag inte varför, kolla vad du försöker göra genom att skriva ut det.
Krånglar det med detsamma, eller efter några loopar tex?

Har du dim:at variblerna, eller åtminstone arrayen?
Tänkte inte på att i skicka med det tidigare.

```
Dim uboundarray, antalslump, i, j, k, slumptal
Dim GRrecept, slumparrayrec(1,6), antalrec
```

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

## #11 — Danielkun, 2004-04-23T07:43Z

Oj, tack!
La precis in ett inlägg om det  :)
Jag måste gå o jobba lite nu, ska testa så fort jag kommer hem

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/101732-random-från-databas
