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

Random ASP-在eof或bof时循环-从idproduct中选择随机产品,但跳过空ID,random,asp-classic,Random,Asp Classic,我试图显示access数据库中的随机产品图像和描述,因此我选择最高的idproduct,然后将1和%highestid%之间的数字随机化,这就是我目前所拥有的 IF frontpage = 1 then SQLSTR = "SELECT idproduct AS prodtot FROM products order by idproduct desc" Set objRS = Server.CreateObject("ADODB.Recordset") SET objrs = oconn.

我试图显示access数据库中的随机产品图像和描述,因此我选择最高的idproduct,然后将1和%highestid%之间的数字随机化,这就是我目前所拥有的

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
如果frontpage=1,则
SQLSTR=“按idproduct desc从产品订单中选择idproduct作为prodtot”
Set objRS=Server.CreateObject(“ADODB.Recordset”)
设置objrs=oconn.execute(SQLSTR)
"检查结果,
响应。编写OBJR(“prodtot”)
“附上
ntop=objRS(“prodtot”)
随机化
'生成介于1和nTop之间的随机值。
nRandom=Int((nTop*Rnd)+1)
sqlstr=“从产品中选择*,其中idProduct=“&nRandom
响应。写“

”和(sqlstr)和“

” '设置rs=oConn.execute(randomprod) 设置rs=oconn.execute(SQLSTR) pranproddesc=rs(“说明”) 响应写入(praproddesc) pranprodimg=rs(“smallImageUrl”) 如果结束
到目前为止还不错!但我有一个问题,随着时间的推移,产品来了又去,我在%idproduct%中有很多差距,我尝试了循环而rs.eof,但它似乎没有做任何有用的事情,如果有的话。只是为了澄清我有idproduct 1、2、5、10、11、12等等,所以当它随机分配idproduct 3时,它都会上升到喷嘴!有人能帮忙吗

先谢谢你!:)

执行以下操作:

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
如果frontpage=1,则
Set objRS=Server.CreateObject(“ADODB.Recordset”)
设置objrs=oconn.execute(SQLSTR)
sqlSTR=“按NEWID()从产品订单中选择TOP 1*”
响应。写“

”和(sqlstr)和“

” 设置rs=oconn.execute(SQLSTR) pranproddesc=rs(“说明”) 响应写入(praproddesc) pranprodimg=rs(“smallImageUrl”) 如果结束
sql将在sql Server中工作:
查看此页面,SQL将为其他数据库返回随机行:


谢谢,顺便说一句,我学到了一些新的东西。与其选择一个随机的ProductId,不如从记录集中选择一个随机的行索引。这样,您只需访问数据库一次:)

嗨,布拉瓦克斯,谢谢您的回答。。。。。这就是我得到的。。。。从products ORDER BY NEWID()中选择TOP 1*。Microsoft JET数据库引擎错误“80040e14”表达式中未定义函数“NEWID”。您使用的是什么数据库?访问?尝试:从按rnd的产品订单中选择top 1*(idproduct)或从按rnd的产品订单中选择top 1*(时间值(Now())*-10000000*[idproduct])