Använder följande kod i asp-miljö med accessdatabas för att slumpa fram en post, men det funkar inte utan visar alltid samma post hela tiden.
<%
Set RecSet3 = Server.CreateObject("ADODB.Recordset")
Visa3 = "SELECT * FROM bildb WHERE visa = 'ja' order by rnd(bilid) "
RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic
%>
why, oh god why??
prebenMedlem sedan mars 2009452 inlägg 1. Skriv inte SELECT stjärna.
2. Lägg in alla bilder i en application-variabel, som en array.
3. application("allaBilder")
4. Slupma från dessa, UBound(application("allaBilder"), 2)
5. Sen skriver du sökvägen.
***
Du behöver inte läsa alla bilderna vid varje sidläsning.
IF IsArray( application("allaBilder") ) THEN
...
ELSE
... läs din fråga och lägg in i application("allaBilder") = mySQL.GetRows()
END IF
***
OK, jag vet inte om detta funkar för dig. Jag är HELT emot din kåd. Både adOptimistic-skiten och SELECT stjärna. Skippa båda och jag hjälper dig!
Lycka till!
guffas kod för att få fram fem poster ser ut så här
Randomize
strSQL = "select top 5 Id, Info from Tabellen order by Rnd(-Id-" & Replace(Rnd(),",",".") & ")"
... om jag bara sätter in order-momentet får jag följande felmess:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Peter SMedlem sedan dec. 20025 483 inlägg Har du ersatt Id med BildId (eller vad ditt id-fält nu heter)?
Vad ger response.write strSql?
Peter S, nu har jag gjort det (fast det är faktiskt bil-id, inte bild-id ;) )
Problemet är dock samma som innan denna koden, jag får alltid samma värde
hittade den här tråden http://www.webforum.nu/showthread.php?t=129199 - men förstår inte hur jag skall översätta koden för att passa min...
<% Dim Cn, Rs, Antal, Rand_nr
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db_random.mdb")
Set Rs = Cn.Execute("Select Id, Namn, Land From tbl_random")
If Rs.EOF Then
Response.Write "Inga poster att slumpa än.."
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
Else
With Rs
.Close
.Cursortype=3
.Open
End With
Antal = Rs.RecordCount
Randomize
Rand_nr = Int(Rnd * Antal)
Rs.Move Rand_nr
Response.Write Rs("Id") & ". " & Rs("Namn") & ", " & Rs("Land")
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
End If %>
Påtade ihop denna koden, och det funkade bannemig! Tack för hjälpen m_soderlund som skrev ursprungsskriptet!
<%
dim Antal, Rand_nr
Set RecSet3 = Server.CreateObject("ADODB.Recordset")
Visa3 = "SELECT * FROM bildb WHERE visa = 'ja'"
RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic
Antal = RecSet3.RecordCount
Randomize
Rand_nr = Int(Rnd * Antal)
RecSet3.Move Rand_nr
%>