Страница: 1 | 2 |
Вопрос: Получение произвольной записи из БД
Добавлено: 13.05.07 16:05
Автор вопроса: 747212
Средствами ASP необходимо выдавать на сайт произвольную запись из базы данных. Формат базы MDB.
Нагляднее - есть видеокаталог и необходимо выдавать постер и название с ссылкой "Случайный фильм". Проблемма в том, как организовать выборку именно этой "случайной" записи.
Спасибо!
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 13.05.07 16:20
RTFM
select top 1 * from t order by rnd()
Номер ответа: 2
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #2
Добавлено: 13.05.07 17:11
Мануал читал. И не раз.
И почему у меня при коде
Rs.Open "SELECT Top 1 * FROM Tbl_Film order by rnd()", Conn1, 3,3
Выдает один и тот же фильм?
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 13.05.07 17:22
Потому что каждый раз rnd инициализируется заново одним и тем же числом?
Сделай order by rnd(id), где id - первичный ключ таблицы Tbl_Film.
Номер ответа: 4
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #4
Добавлено: 13.05.07 17:31
Я дурак. Я знаю. Можно на одноклеточном уровне?
Ключевое поле для таблицы Tbl_Film - поле Code
Код
Rs.Open "SELECT Top 1 * FROM Tbl_Film order by rnd(code)", Conn1, 3,3
опять возвращает один и тот же фильм. Правда другой уже...
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 13.05.07 17:40
Странно.
http://bbs.vbstreets.ru/viewtopic.php?p=163157#163157 - работает.
Номер ответа: 6
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #6
Добавлено: 13.05.07 17:47
Rs.Close' !!!
Rs.Open "SELECT Top 1 Tbl_Film.naim FROM Tbl_Film order by rnd(Tbl_Film.code)"
Номер ответа: 7
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #7
Добавлено: 13.05.07 20:07
"Rs" у меня и так закрыта на момент выполнения запроса.
Код
Rs.Open "SELECT Top 1 * FROM Tbl_Film order by rnd(Tbl_Film.code)",conn1,3,3
опять выдает один и тот же фильм
Tbl_Film.naim не указал, так как использую много полей.
Номер ответа: 8
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #8
Добавлено: 13.05.07 22:29
"Rs" у меня и так закрыта ..
точно-ли?
проверь по другому.
Номер ответа: 9
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #9
Добавлено: 13.05.07 23:08
Точно. Она и не открывалась.
Debug.Print conn1.Execute...
Выдает постоянно один и тот же результат.
Прямо заколдованный круг какой-то!
Номер ответа: 10
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #10
Добавлено: 13.05.07 23:35
Бывает. запарился.
покажи всю процедуру, если не слишком громоздко.
Номер ответа: 11
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #11
Добавлено: 13.05.07 23:53
'Произвольный фильм
Rs.Open "SELECT Top 1 * FROM Tbl_Film order by rnd(Tbl_Film.code)",conn1,3,3
%>
<a href="Film.asp?Film=<%=Rs("Code"%>" class=linkT1><img border=0 src="main/Base/Film/<%=Rs("Foto"%>" width=106 height=160 alt="<%=Rs("Film"%>"><br>
<%=Rs("Film"%><br></a>
<%
Rs.Close
Номер ответа: 12
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #12
Добавлено: 14.05.07 19:10
Ну, товарищи!
Неужто никто из гуру не поможет начинающему ламеру?
Номер ответа: 13
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #13
Добавлено: 14.05.07 22:58
Покажи всю процедуру (до Rs.Open)
Номер ответа: 14
Автор ответа:
747212
Вопросов: 4
Ответов: 15
Профиль | | #14
Добавлено: 14.05.07 23:52
<TABLE cellSpacing=0 cellPadding=0 width=100% height=100% border=0>
<TR height=210>
<TD align=center class=f10b>
<font color="<%=ZCMas(11)%>">Случайный выбор</font><br>
<%
'Произвольный фильм
'Rs.Open "SELECT Top 1 * FROM Tbl_Film order by rnd(size)", Conn1, 3,3
Rs.Open "SELECT Top 1 * FROM Tbl_Film order by rnd(Tbl_Film.code)",conn1,3,3
%>
<a href="Film.asp?Film=<%=Rs("Code"%>" class=linkT1><img border=0 src="main/Base/Film/<%=Rs("Foto"%>" width=106 height=160 alt="<%=Rs("Film"%>"><br>
<%=Rs("Film"%><br></a>
<%
Rs.Close
%>
</TD>
</TR>
</TABLE>
Номер ответа: 15
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #15
Добавлено: 15.05.07 00:50
Хотелось бы увидеть объявления Rs и conn1.
Подозреваю, что повторный запрос идет при закрытом рекордсете или коннекешне.
MsgBox conn1.State '
MsgBox rs.State ' должно быть 0
Rs.Open
MsgBox rs.State ' 1