我试图从访问数据库中显示随机产品图像和描述,所以我选择了最高的idproduct然后随机化一个介于1和%highhestid%之间的数字,这是我到目前为止所拥有的....
IF frontpage = 1 then
SQLSTR = "SELECT idproduct AS prodtot FROM products order by idproduct desc"
Set objRS = Server.CreateObject("ADODB.Recordset")
SET objrs = oconn.execute(SQLSTR)
' Check result
Response.Write objRS("prodtot")
' attach
ntop = objRS("prodtot")
Randomize
' Generate random value between 1 and nTop .
nRandom= Int((nTop * Rnd) + 1)
sqlstr = "select * from products where idProduct = " & nRandom
response.Write"<br /><br />" & (sqlstr) & "<br /><br />"
'SET rs = oConn.execute(randomprod)
SET rs = oconn.execute(SQLSTR)
pranproddesc = rs("description")
response.Write(pranproddesc)
pranprodimg = rs("smallImageUrl")
end if
到目前为止一切顺利!但我有一个问题,随着时间的推移,产品已经来去匆匆而且我在%idproduct%中有很多空白,我尝试过循环而rs.eof但它似乎没有做任何有用的,如果有的话。只是为了澄清我有id,产品1,2,5,10,11,12等等,所以当它随机化idproduct3时,它都会向上喷出!有人可以帮忙吗?
提前谢谢! :)
答案 0 :(得分:0)
执行以下操作:
IF frontpage = 1 then
Set objRS = Server.CreateObject("ADODB.Recordset")
SET objrs = oconn.execute(SQLSTR)
sqlSTR = "SELECT TOP 1 * FROM products ORDER BY NEWID()"
response.Write"<br /><br />" & (sqlstr) & "<br /><br />"
SET rs = oconn.execute(SQLSTR)
pranproddesc = rs("description")
response.Write(pranproddesc)
pranprodimg = rs("smallImageUrl")
end if
该SQL将在SQL Server中工作:
查看此页面以获取SQL以返回其他数据库的随机行:
http://www.petefreitag.com/item/466.cfm
谢谢,顺便说一句,我学会了一些新的想法。
答案 1 :(得分:0)
不是选择随机的ProductId,而是从记录集中选择一个随机行索引。这样你只需要打一次数据库:)