Forum Webscript.Ru

Общие => Веб-технологии => Тема начата: Dmitry25600 от 10 Августа 2002, 19:28:22

Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: 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 Recordset ?!?!?
Отправлено: .:cRaw:. от 11 Августа 2002, 19:52:50
слишком мало информации чтобы чтото сказать... нужно пробовать.
Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: Dmitry25600 от 12 Августа 2002, 18:11:52
Вот и мне ее что-то маловато :)
проблема так и осталась...
Похоже, что при большом кол-ве полей в записи происходит какой-то сбой в ADO.
Нулевые значения отпадают. Неправильные имена полей тоже.

Обойти проблему можно переписав результат запроса в массив перед обработкой значений.

Но чертовски интересно было бы знать суть проблемы.
Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: Xander от 15 Августа 2002, 12:18:19
У меня была такая же фигня. Пришлось отказаться от полного вывода записей в пользу постраничного. Кстати, тебе браузер при этом говорит, что сервер закрыл соединение?
Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: vlad от 27 Августа 2002, 02:29:54
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 %>


Успехов тебе.
Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 01 Сентября 2002, 18:50:58
Xander ничего он мне не говорит, нормально все воспринимает. Просто некое значение не выводится да и все. :)
Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 01 Сентября 2002, 18:53:02
vlad
Тут курсор врядли поможет. Проблема остается даже если запись одна! А обращаться к полям только последовательно я не имею возможности, вот и пришлось перегнать в массив.
Название: непонятный глюк ADO Recordset ?!?!?
Отправлено: NAS от 02 Сентября 2002, 09:33:24
А свой НИК ввести слабо ???