Forum Webscript.Ru
Общие => Веб-технологии => Тема начата: Dmitry25600 от 10 Августа 2002, 19:28:22
-
Значит так:
sql = "select * from table1 where k = 1"
set rs = server.CreateObject("ADODB.Recordset")
set rs = connection.execute(sql)
Значения получены нормально и большинство можно вывести:
response.write(rs_prod.Fields("targetph"))
...
но на некоторой записи:
response.write(rs_prod.Fields("some_name"))
НИЧЕГО НЕ ВОЗВРАЩАЕТ!!!
И так все записи после этой. При этом никаких ошибок сервер не возвращает.
Что это такое и как с этим бороться?
-
слишком мало информации чтобы чтото сказать... нужно пробовать.
-
Вот и мне ее что-то маловато :)
проблема так и осталась...
Похоже, что при большом кол-ве полей в записи происходит какой-то сбой в ADO.
Нулевые значения отпадают. Неправильные имена полей тоже.
Обойти проблему можно переписав результат запроса в массив перед обработкой значений.
Но чертовски интересно было бы знать суть проблемы.
-
У меня была такая же фигня. Пришлось отказаться от полного вывода записей в пользу постраничного. Кстати, тебе браузер при этом говорит, что сервер закрыл соединение?
-
1) Уберём хеширование в ADO:
\' по запиям идём только вперёд - и нет хешировния
rs_prod.CursorType = adOpenForwardOnly
2) конфигурируем курсор :
\' назначение клиентного курсора ( быстрый сброс данных с удалённой базы данных ) - предпочтительно для Access
rs_prod.CursorLocation = adUseClient
- работаем базой в темпе вальса ( предпочтительно для Oracle )
rs_prod.CursorLocation = adUseServer
3) корректный вывод:
response.write server.HTMLEncode("" & rs_prod.Fields("some_name"))
Не надо указывать скобки при вызове функции VBScript без возвратного значения.
4) Если у тебя скрипрт будет долго работать указывай Server.ScriptTimeout = 60
( время - в секундах ) и не забудь убрать буферизацию Response.Buffer = 0
Ну и на закуску - укажи в начале скрипта какой ADO используешь :
<%@Language = VBScript %>
Успехов тебе.
-
Xander ничего он мне не говорит, нормально все воспринимает. Просто некое значение не выводится да и все. :)
-
vlad
Тут курсор врядли поможет. Проблема остается даже если запись одна! А обращаться к полям только последовательно я не имею возможности, вот и пришлось перегнать в массив.
-
А свой НИК ввести слабо ???