webForumDet fria alternativet

Slumpvald

5 svar · 176 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

Jag har en tabell i en access-databas med okänt antal poster. Hur ska jag göra för att den ska välja ut en slumpvald post ur tabellen?

------------------
// David

VideMedlem sedan dec. 19998 577 inlägg
#2

Här är ett sätt, lite krångligt men, men:

Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("/scripts/databas.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

'***** Hämta en länk slumpartat ifrån databasen *****
SQL = "select Count(*) AS klo from tabell"
Set RS_klo = databas.execute(SQL)
Randomize
Set rstemp = Server.Createobject("ADODB.Recordset")
SQL = "Select * from lankar"
rstemp.cursorlocation = aduseclient
rstemp.cachesize = 5
rstemp.open SQL, "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
rstemp.move Int(Rnd*RS_klo("klo"))

Sedan hämtar du bara med: RStemp("fält")

Och så måste du har adovbs.inc inkluderad på sidan...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se

[Redigerat av Vide den 12 jun 2000]

BrimbaMedlem sedan dec. 19995 875 inlägg
#3

Hej!

Ett annat sätt är att göra så här:

		<%	
			Set Connection = Server.CreateObject("ADODB.Connection")
			Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\brimba\banners.mdb"
			SQL = "Select * FROM tabRandom"
			RStemp = UBOUND(Connection.Execute(SQLStmt).GetRows(),2)+1 
	
			Randomize
			post = Int(RND*RStemp)
			Set RS = Connection.Execute(SQLStmt)

			For s = 1 to post
			RS.MoveNext
			Next

		%>

			<A HREF="<%= RS("httpURL")%>" target="_new">
				<IMG SRC="<%= RS("bildURL")%>" border="0" width="480" height="60">
			</A>
<% 
RS.Close
Connection.Close
%>

Här plockar vi alltså ut en slumpvald post och kan arbeta med den.

Lycka till

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

[Redigerat av Brimba den 13 jun 2000]

VideMedlem sedan dec. 19998 577 inlägg
#4

Brimpa, jag tycker att den där loopen ser lite läskig ut... :) den fungerar precis som mitt record set...

Men vi kan ju säga såhär: är det några få poster, så använder du Brimba's script... och är det många poster så är det bättre att använda mitt...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se

DavidBMedlem sedan jan. 20001 372 inlägg
#5

Jag använde följand kod:

<% 
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\brimba\banners.mdb"
SQL = "Select * FROM tabRandom"
RStemp = UBOUND(Connection.Execute(SQLStmt).GetRows(),2)+1 

Randomize
post = Int(RND*RStemp)
Set RS = Connection.Execute(SQLStmt)
For s = 1 to post
RS.MoveNext
Next

%>

men sen kom jag på att jag ville lägga till en funktion och det var att den bara skulle välja utav de som hade rätt datum ungefär något sånt här:

'datum innehåller dagens datum

SQLStmt = "Select * FROM Banners Where Startdate <= '" & datum & "' AND Enddate =>  '" & datum & "'"
	RStemp = UBOUND(Connection.Execute(SQLStmt).GetRows(),2)+1 

	Randomize
	post = Int(RND*RStemp)
	Set RS3 = Connection.Execute(SQLStmt)
	For s = 1 to post
	RS3.MoveNext
	Next

det blir följande fel:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'Startdate <= '2000-06-13' AND Enddate => '2000-06-13''.

/fil.asp, rad 61

jag vill allstå att den ska läsa ifrån endast något av de fält som dagens datum är emellan Startdate och Enddate.

Hoppas att någon förstår.
------------------
// David

[Redigerat av DavidB den 13 jun 2000]

[Redigerat av DavidB den 13 jun 2000]

DavidBMedlem sedan jan. 20001 372 inlägg
#6

Löste problemet

Jag löste det på följande sätt (om någon annan skulle få samma problem):

Koden såg ut följande:

Where Startdate <= '" & datum & "' AND Enddate =>  '" & datum & "'"

Men den ska se ut såhär

Where Startdate <= '" & datum & "' AND Enddate >=  '" & datum & "'"

skillnaden är => och >= vid Enddate

Enddate =>
ska vara
Enddate >=

------------------
// David

137 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)