Slumpvald

ASP

5 svar · 189 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Trådstart#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?

Medlem 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...

Medlem sedan dec. 19995 874 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

Medlem 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...

Medlem 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.

Medlem 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 >=

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)