ASP - 循环而eof或bof - 从idproduct中选择随机产品但跳过空ID

时间:2010-09-03 12:13:09

标签: random asp-classic

我试图从访问数据库中显示随机产品图像和描述,所以我选择了最高的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时,它都会向上喷出!有人可以帮忙吗?

提前谢谢! :)

2 个答案:

答案 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,而是从记录集中选择一个随机行索引。这样你只需要打一次数据库:)