webForumDet fria alternativet

5 st i slumpning

ASP

19 svar · 285 visningar · startad av crisse6

Medlem sedan dec. 20002 526 inlägg
Frågan#1

jag har denna kod som slupar ut en person som är medlem. Jag vill ha den så att den slumpar fram typ 5 st på rad samtidigt så att man lägger dom på rad... som lunarstorm har ungefär....

hej!

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 19998 577 inlägg
#2

Jag skulle skapat en function av det hela, och sedan anropa den fem gånger...

Sedan skulle jag kolla så att det inte förekommer två likadana profiler...

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

Medlem sedan dec. 20002 526 inlägg
#3

okej.... ingen som vill visa ett litet exempel...?

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#4

Något att utgå ifrån
http://cgi.webforum.nu/wf/Forum11/HTML/000282.html

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#5

okej, har kollat och tog din lilla kod LarsG, men hur och vad ska man ändra i denna kod för att få den skriva ut te x 6 st som i exemplet? (jag vill ha denna info utskriven; namn, efternamn osv... )
(pssst... vill passa på att gratta en av dom grymaste webnissarna jag vet "Emission!", grattis!)
------------------
www.groda.net *kvack*, *kvack*

[Redigerat av crisse6 den 01 maj 2001]

Medlem sedan dec. 19996 721 inlägg
#6

Här är en annan variant, som bygger på att tar in ett helt recordset lokalt (släpper kopplingen till databasen), lägger ett slumpvärde i en kolumn, och sorterar på den kolumnen.

set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
rs.locktype=4
rs.open "SELECT Username,UserID FROM Users",conn
set rs.activeconnection=nothing
conn.Close
do until rs.eof
	randomize
	rs(1)=rnd*1000 ' eller nåt
	rs.movenext
loop
rs.sort="UserID DESC"

rs.movefirst

'loopa ut max 5

do until rs.eof or rs.absoluteposition=5

' gör vad du vill med denna
rs.movenext
loop
Medlem sedan dec. 20002 526 inlägg
#7

tackar! men det blir fel.... vad?

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****

set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
rs.locktype=4
rs.open "SELECT Username,ID FROM Users",conn
set rs.activeconnection=nothing
conn.Close
do until rs.eof
randomize
rs(1)=rnd*1000 ' eller nåt
rs.movenext
loop
rs.sort="ID DESC"
rs.movefirst

'loopa ut max 5

do until rs.eof or rs.absoluteposition=5

' gör vad du vill med denna
rs.movenext
loop

%>

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#8

Du öppnar en connectionobjekt som heter databas, men senare i koden så använder du conn.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#9

okej, det blev ett annat fel nu bara... denna rad gillar den inte:

rs(1)=rnd*1000 ' eller nåt

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#10
rs(1)=int(rnd*1000) ' eller nåt

Vad blir det för fel?

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#11

fel ändå... här är hela koden:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****

set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
rs.locktype=4
rs.open "SELECT Username,ID FROM Users",databas
set rs.activeconnection=nothing
databas.Close
do until rs.eof
randomize
rs(1)=int(rnd*1000) ' eller nåt
rs.movenext
loop
rs.sort="ID DESC"
rs.movefirst

'loopa ut max 5

do until rs.eof or rs.absoluteposition=5

' gör vad du vill med denna
rs.movenext
loop

%>

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#12

Vilken felkod och feltext får du och på vilken rad inträffar felet?

Eller får du bara inte ut något på sidan? Som det är nu så har du ju ingen utskrift av data.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#13

okej... det är på raden

rs(1)=int(rnd*1000) ' eller nåt

får detta felmedd:

Microsoft Cursor Engine error '80040e21' 

Fel uppstod. 

/groda/hehe.asp, line 15

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#14

Gjorde en sökning på ditt felnummer hos microsoft. Det fanns en felrapport som nästan stämmer in på beteendet i din kod
http://support.microsoft.com/support/kb/articles/Q247/0/29.ASP?LN=EN-US&SD=gn&FR=0&qry=80040e21&rnk=20&src=DHCS_MSPSS_gn_SRCH&SPR=MSALL

Där står också att felet är rättat i senare versioner av MDAC så om du inte har senaste så kanske det är dags att ladda hem den.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20002 526 inlägg
#15

vad ska jag ha....? har win98 och pws 4.0 hjälp!

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 20002 526 inlägg
#16

jag undrar, varför ska jag uppgradera för ett skript som har fungerat när man endast tog fram 1 st slumpning... ? så mkt skillnad är det väl inte? kolla igenom min kod igen, det borde ju finnas fel....eller?

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 200012 464 inlägg
#17

Nja, just det som jag hänvisade till berodde ju på ett fel i ADO. Så om det är det som ställer till det så räcker det inte med någon ändring i din kod.

Du kan ju testa lite olika varianter, t.ex. att ange olika locktype eller ha default (dvs utelämna tilldelningen helt). Du kan ju också testa att använda ett extra fält för sorteringen

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
'***** Hämta en länk slumpartat ifrån databasen *****
set rs=server.createobject("ADODB.Recordset")
rs.cursorlocation=3
'rs.locktype=4
rs.open "SELECT Username,ID,1 as EXT  FROM Users",databas
set rs.activeconnection=nothing
databas.Close
do until rs.eof
randomize
rs(2)=int(rnd*1000) ' eller nåt
rs.movenext
loop
rs.sort="EXT DESC"
rs.movefirst

'loopa ut max 5

do until rs.eof or rs.absoluteposition=5

' gör vad du vill med denna
rs.movenext
loop

%>

Ett annat alternativ är ju att skriva om det helt ungefär som jag skissade i den andra tråden.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 721 inlägg
#18

"varför ska jag uppgradera för ett skript som har fungerat när man endast tog fram 1 st slumpning... ? så mkt skillnad är det väl inte?"

Jo, det är mycket stor skillnad på hur dessa skript fungerar.

Medlem sedan dec. 20002 526 inlägg
#19

LarsG >> fick detta med din "nya" kod:

ADODB.Field error '800a0cb3' 

Åtgärden som programmet begärt stöds inte av leverantören. 

/groda/hehe.asp, line 14

line 14:

[b]rs(2)=int(rnd*1000) ' eller nåt[/b]

------------------
www.groda.net *kvack*, *kvack*

Medlem sedan dec. 20002 526 inlägg
#20

Emission >> finns det INGET annat sätt att lösa "5 slumpning" på?

Fråga 2: Vad är det jag ska uppdatera för att få mitt problem löst? Jag kan inte sånna grejer som du LarsG snackade om :)

------------------
www.groda.net *kvack*, *kvack*

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)