---
title: "Varför funkar inte slumpscriptet?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/181348-varför-funkar-inte-slumpscriptet"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "magnusfeldth"
published: "2009-11-22T07:56:40.000Z"
updated: "2009-11-29T16:36:10.000Z"
replies: 7
views: 584
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/181348-varför-funkar-inte-slumpscriptet"
---

# Varför funkar inte slumpscriptet?

## #1 — magnusfeldth, 2009-11-22T07:56Z

Använder följande kod i asp-miljö med accessdatabas för att slumpa fram en post, men det funkar inte utan visar alltid samma post hela tiden.

```
<%		
                Set RecSet3 = Server.CreateObject("ADODB.Recordset")
                Visa3 = "SELECT * FROM bildb WHERE visa = 'ja' order by rnd(bilid) "
                RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic
                %>
```

why, oh god why??

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

## #2 — preben, 2009-11-23T16:47Z

1\. Skriv inte SELECT stjärna.
2\. Lägg in alla bilder i en application-variabel, som en array.
3\. application("allaBilder")
4\. Slupma från dessa, UBound(application("allaBilder"), 2)

5\. Sen skriver du sökvägen.

\*\*\*
Du behöver inte läsa alla bilderna vid varje sidläsning. 

IF IsArray( application("allaBilder") ) THEN

...
ELSE
... läs din fråga och lägg in i application("allaBilder") = mySQL.GetRows()
END IF

\*\*\*
OK, jag vet inte om detta funkar för dig. Jag är HELT emot din kåd. Både adOptimistic-skiten och SELECT stjärna. Skippa båda och jag hjälper dig!

Lycka till!

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

## #3 — voigtann1, 2009-11-23T17:08Z

guffa har skrivit om detta:

<http://www.guffa.com/Programming_article.asp?id=37>

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

## #4 — magnusfeldth, 2009-11-29T09:31Z

guffas kod för att få fram fem poster ser ut så här

```
Randomize
strSQL = "select top 5 Id, Info from Tabellen order by Rnd(-Id-" & Replace(Rnd(),",",".") & ")"
```

... om jag bara sätter in order-momentet får jag följande felmess:

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
```

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

## #5 — Peter S, 2009-11-29T09:43Z

Har du ersatt Id med BildId (eller vad ditt id-fält nu heter)?

Vad ger response.write strSql?

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

## #6 — magnusfeldth, 2009-11-29T12:47Z

Peter S, nu har jag gjort det (fast det är faktiskt bil-id, inte bild-id ;) )

Problemet är dock samma som innan denna koden, jag får alltid samma värde

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

## #7 — magnusfeldth, 2009-11-29T13:05Z

hittade den här tråden <http://www.webforum.nu/showthread.php?t=129199> \- men förstår inte hur jag skall översätta koden för att passa min...

```
<% Dim Cn, Rs, Antal, Rand_nr
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db_random.mdb")

Set Rs = Cn.Execute("Select Id, Namn, Land From tbl_random")

If Rs.EOF Then
Response.Write "Inga poster att slumpa än.."
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing

Else
With Rs
.Close
.Cursortype=3
.Open
End With
Antal = Rs.RecordCount

Randomize
Rand_nr = Int(Rnd * Antal)

Rs.Move Rand_nr

Response.Write Rs("Id") & ". " & Rs("Namn") & ", " & Rs("Land")
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
End If %>
```

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

## #8 — magnusfeldth, 2009-11-29T16:36Z

Påtade ihop denna koden, och det funkade bannemig! Tack för hjälpen m_soderlund som skrev ursprungsskriptet!

```
<%	

	            dim Antal, Rand_nr
	            
                Set RecSet3 = Server.CreateObject("ADODB.Recordset")
                Visa3 = "SELECT * FROM bildb WHERE visa = 'ja'"
                
                RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic

                Antal = RecSet3.RecordCount
                
                Randomize
                Rand_nr = Int(Rnd * Antal)
                
                RecSet3.Move Rand_nr
                               %>
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/181348-varför-funkar-inte-slumpscriptet
