webForumDet fria alternativet

slumpa fram ett RS

ASP

3 svar · 284 visningar · startad av eriks

Medlem sedan apr. 20011 418 inlägg
Frågan#1

Tja! Jag sokte lite angaende att slumpa fram recordset, och jag fann aktskilliga medoder det skulle kunna goras pa. Jag tyckte att alla losningarna var krangliga (inte for att de var det, utan for att jag inte kan lika mycket asp som de som har skrivit skripten) sa jag tankte pa en egen variant man skulle kunna losa problemet pa. Jag kollar hur manga poster som finns, och flyttar sedan RS2 till slumpvis position genom en For/Next. Nu tankte jag kolla med experterna har huvuvida detta skripit ar effektivt, blir det for segt eller bor jag skriva om det pa nagot satt? Vad tycker ni?

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=C:\\Inetpub\\wwwroot\\asp\\ordprogram\\data.mdb"

SQLStmt = "SELECT Count(Ord) AS countord FROM Engelska"
SQLStmt2 = "SELECT Ord, Betydelse FROM Engelska"

Set RS = Connection.Execute(SQLStmt)
Set RS2 = Connection.Execute(SQLStmt2)

tal = RS("countord") - 1
Randomize
slump = cInt(rnd()*tal)

For i = 1 to slump
RS2.Movenext
Next

Response.Write RS2("Ord") & "<BR>" & RS2("Betydelse")

Tack! /Erik

Medlem sedan feb. 2001390 inlägg
#2

denna kod hittade jag på wF, den är skriven av Vide!

<%
SQL = "select count(*) AS count_lankar from lankar"
Set RS_count_lankar = databas.Execute(SQL)
Randomize
vilkenlank = Int(rnd*RS_count_lankar("count_lankar"))-1
SQL = "Select * from lankar"

Set RSdbase = Server.CreateObject("ADODB.Recordset")
RSdbase.open SQL, Session("dbasepath")
RSdbase.Move vilkenlank
url = RSdbase("lank")
lank_namn = RSdbase("namn")
lank_beskriv = RSdbase("beskrivning")
%>

------------------
FEL!!
FÖR MYCKET NAKENHET I SIGNATUREN

Medlem sedan apr. 20012 427 inlägg
#3

Jag hade ingenting att göra så här på morgonkvisten så jag slängde ihop en variant.

<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\Inetpub\wwwroot\asp\ordprogram\data.mdb"

Set rsCount = Connection.Execute("SELECT Count(Ord) AS intWordCount FROM Engelska")
intWordCount = rsCount("intWordCount") - 1
rsCount.Close
Set rsCount = Nothing

Set rsOrd = Connection.Execute("SELECT Ord, Betydelse FROM Engelska")
arrOrd = rsOrd.GetRows()
rsOrd.Close
Set rsOrd = Nothing

Randomize
intRndOrd = rnd() * intWordCount

Response.Write "Ord: " & arrOrd(0,Round(intRndOrd)) & "<br>Betydelse: " & arrOrd(1,Round(intRndOrd))

Connection.Close
Set Connection = Nothing
%>

Om du testar den får du gärna berätta om den fungerade.

------------------
// Skarre

[Redigerat av Skarre den 05 jan 2002]

Medlem sedan mars 20002 836 inlägg
#4

Hello!

om du använder scriptet som finns här: http://script.webforum.nu/wf/Forum1/HTML/000104.html så kan du hämta data från databasen med getrows och sedan få fram n st slumpningar från vad du fick ut med getrows.

tex:

<%
Option Explicit

Response.Buffer = True

Dim objWords, Connection, RS
Dim varWords
Dim SQLStmt

Set objWords = New clsArray

SQLStmt = "SELECT Ord, Betydelse FROM Engelska"

Set Connection = Server.CreateObject("ADODB.Connection")
	Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\Inetpub\wwwroot\asp\ordprogram\data.mdb"

	Set RS = Connection.Execute(SQLStmt)

	If Not RS.EOF Then
		objWords.ArrayType = 2
		objWords.Positions = 1 '## -- 2 st: Ord, Betydelse --
		objWords.SetArray RS.GetRows()

		varWords = objWords.Random(1)
	End If

	Set RS = Nothing
	Connection.Close
Set Connection = Nothing

If IsArray(varWords) Then
	Response.Write "ORD: " & varWords(0,0) & " BETYDELSE: " & varWords(1,0)
End If
%>
<!--#INCLUDE VIRTUAL="/classes/clsArray.asp"-->

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

[Redigerat av PatrikB den 05 jan 2002]

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