Я работаю над старым классическим сайтом ASP и столкнулся с проблемой. Я могу запрашивать таблицы базы данных, но не виды.Не удалось запросить представление SQL
Этот запрос на столе возвращает правильное количество строк:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM tblContent;"
rs.Open sqlQuery, conn, 1, 2
response.write "q1 cnt = " & rs.RecordCount
тот же запрос на представление возвращает -1
:
Set rs = Server.CreateObject("ADODB.Recordset")
sqlQuery = "SELECT * FROM myView;"
rs.Open sqlQuery, conn, 1, 2
response.write "q2 cnt = " & rs.RecordCount
Оба запроса возвращают правильное количество строк при запуске из SQL Server Management Studio, но только один работает при вызове с веб-страницы .asp
. То же самое относится к всем таблицам и представлениям в БД (я тестировал полдюжины таких).
Может кто подскажет, что здесь происходит?
Возможным обходным путем является для подсчета строк на уровне SQL. Вы могли бы использовать в качестве запроса 'SELECT COUNT (*) как myrecordcount FROM myView', и вы можете отобразить значение с помощью' rs («myrecordcount») ' – John
@John: Thanks. Я все еще озадачен этим, но ваше обходное решение делает именно то, что мне нужно, если вы сделаете это ответом, я приму это. Приветствия. – Robert
Обратите внимание, что запрос вида, вероятно, * does * возвращает правильные строки; это просто свойство '.RecordCount', которое не получает правильное значение. Таким образом, еще один способ - передать результаты в массив (с помощью «GetRows'), а затем использовать' UBound() '. – Martha