---
title: "problem med getrows,arrayer och sånt annat kul..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/51145-problem-med-getrows-arrayer-och-sånt-annat-kul"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "mikul"
published: "2002-08-23T21:14:51.000Z"
updated: "2002-08-24T16:43:26.000Z"
replies: 6
views: 293
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/51145-problem-med-getrows-arrayer-och-sånt-annat-kul"
---

# problem med getrows,arrayer och sånt annat kul...

## #1 — mikul, 2002-08-23T21:14Z

Tja...
jag har fått lite problem med mitt slumpscript som ska retunera 4 olika poster...
den retunerar 4 likadana poster...
OBS!! koden är lite stökig nu...jag har nämligen testat lite allt möjligt....

```
<%
'--> Här fyller du i antalet slumpningar
'Dim intAntalSlumptal
const intAntalSlumptal = 4
Dim rndArray()

'--> Öppnar databasen
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forum.mdb")&";"

'--> Skapa Arrayen och ett slumpat tal.
Set objrs = objCon.Execute("SELECT * FROM asp")
RecArray = objrs.GetRows()
objrs.Close : Set objrs = Nothing
objCon.Close : Set objCon = Nothing

'--> Skapa alla slumptalen och lägger dom i en array
Randomize
Redim rndArray(4)
For i = 0 To intAntalSlumptal
  rndArray(i) = int(rnd*UBound(RecArray,2))
Next

intRecCount = LBound(RecArray,2)
intRecCounted = 0

'--> Bläddra fram till posten
Do while not intRecCount > UBound(RecArray,2) OR intRndcounted = intAntalSlump

'--> Kollar om posten stämmer med slumptalet
  If intRecCount = rndArray(intRecCounted) Then
  
  intRecCount = LBound(RecArray,2)
  intRndcounted = intRndcounted + 1
  rndArray(0) = rndArray(cint(intRecCounted+1))  

  '-->skriver ut posten om det nu är rätt post
  For intFieldCount = LBound(RecArray,1) To UBound(RecArray,1)
  Response.write "<table border=1> <tr>"&_
  "<td>"& RecArray(intFieldCount, intRecCount) &"</td>"&_
  "</tr> </table>"
  Next
  intRndCount = Cint(intRndCount+1)
  If intRndCounted = intAntalSlumptal Then Exit Do
  else
  intRecCount = intRecCount + 1
  End if
Loop
%>
```

/ Mikul

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

## #2 — trexter.com, 2002-08-23T21:55Z

Scriptmotorn slumpar enligt en viss algoritm och mönster och påverkar ingenting den uppkommer alltid samma tal! Använd Radomise() + rnd så ska det nog fungera...

 (finns en artikel om det på <http://4guysfromrolla.com>)

 :)

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

## #3 — mikul, 2002-08-24T15:17Z

jag kan tyvärr inte hitta artikeln...
kan du inte dra ett exempel på hur det ska se ut???

/ Mikul

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

## #4 — Pace, 2002-08-24T15:18Z

Använd 

```
Randomize Timer()
```

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

## #5 — mikul, 2002-08-24T15:26Z

funkar inte...=(

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

## #6 — Pace, 2002-08-24T15:35Z

Okej, då är det koden för att "bläddra fram till posten" som är fel. En enklare variant:

```
intSlump1 = RecArray(0, rndArray(0))
intSlump2 = RecArray(0, rndArray(1))
intSlump3 = RecArray(0, rndArray(2))
intSlump4 = RecArray(0, rndArray(3))
```

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

## #7 — mikul, 2002-08-24T16:43Z

så här ser det ut nu:

\<%
'--\> Här fyller du i antalet slumpningar
'Dim intAntalSlumptal
const intAntalSlumptal = 4
Dim rndArray()

'--\> Öppnar databasen
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath("forum.mdb")&";"

'--\> Skapa Arrayen och ett slumpat tal.
Set objrs = objCon.Execute("SELECT \* FROM asp")
RecArray = objrs.GetRows()
objrs.Close : Set objrs = Nothing
objCon.Close : Set objCon = Nothing

'--\> Skapa alla slumptalen och lägger dom i en array

Redim rndArray(4)
Randomize Timer()

Dim tmpRnd
Dim tmpArr(4)
tmpRnd = 0
While not Cint(tmpRnd) = intantalslumptal
  rndArray(Cint(tmpRnd)) = int(rnd\*UBound(RecArray,2))
  For i = 0 To intAntalSlumptal
    If rndArray(i) = rndArray(tmpRnd) Then
      tmpRnd = tmpRnd - 1
    End if
  Next
  tmpRnd = tmpRnd + 1
Wend

  '--\>skriver ut posten om det nu är rätt post
for tmpRec = 0 To 4  
  For intFieldCount = LBound(RecArray,1) To UBound(RecArray,1)
    Response.write "\<table border=1\> \<tr\>"&\_
    "\<td\>"& RecArray(intFieldCount, rndArray(tmpRec)) &"\</td\>"&\_
    "\</tr\> \</table\>"
  Next
next
%\> 

men det värkar vara nåt fel här:
    If rndArray(i) = rndArray(tmpRnd) Then
      tmpRnd = tmpRnd - 1
    End if

Microsoft VBScript runtime error '800a0009' 

Subscript out of range: '-1' 

/Mikul/asp/test.asp, line 39

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/51145-problem-med-getrows-arrayer-och-sånt-annat-kul
