ASP - Loop while eof или bof - Выбрать случайный продукт из idproduct, но пропустить пустые идентификаторы - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь отобразить случайное изображение продукта и описание из базы данных доступа, поэтому я выбираю самый высокий 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

Пока все хорошо!Но у меня есть проблема, со временем продукты приходят и уходят, и у меня есть много пробелов в% idproduct%, я пробовал цикл в то время как rs.eof, но, похоже, он не приносит никакой пользы, если вообще что-то.Просто чтобы уточнить, у меня есть idproduct 1, 2, 5, 10, 11, 12 и т. Д. И т. Д., Поэтому, когда он случайным образом idproduct3, все идет вверх по носу!Кто-нибудь может помочь?

Заранее спасибо!:)

Ответы [ 2 ]

0 голосов
/ 03 сентября 2010

Вместо выбора случайного ProductId, выберите случайный индекс строки из набора записей.Таким образом, вам также нужно попасть в базу данных только один раз:)

0 голосов
/ 03 сентября 2010

Выполните следующие действия:

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

Спасибо, кстати, я узнал кое-что новое, выясняя это.

...