Проблема ADO RecordSet - отсутствуют данные - PullRequest
0 голосов
/ 17 февраля 2011

У меня очень странная проблема. Недавно один из моих клиентов переместил свой веб-сайт (классический asp) на новый сервер (2008 / IIS7 / MSSQL 2005), и теперь я получаю наборы записей, где у полей нет данных. Когда я профилирую SQL-запрос, я вижу, что запрос выполняется, и когда я перезапускаю его в SSMS, он возвращает данные для всех полей. Например, запрос sql возвращает:

Col1          Col2
John Smith    Blue
Jane Doe      Red

но когда я перебираю набор данных, я получаю

Col1          Col2
John Smith    
Jane Doe  

Не представляете, как это происходит, и мне интересно, сталкивался ли кто-нибудь еще с подобной проблемой? Вот код:

dim db
Set db = Server.CreateObject("ADODB.Connection")
DSN = "dsn=provider=sqloledb;Data Source=.;User Id=;Password=;Initial Catalog="
db.Open DSN

Set rs = db.Execute(query)

do while not rs.EOF
    'do stuff...

    rs.movenext
loop

rs.Close
db.Close
set rs = nothing
set db = nothing

Спасибо за помощь.

Уэйд

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Если у вас есть поле Memo или nvarchar(max), то в вашем случае значение в наборе записей сбрасывается после первого чтения. Зачем? Microsoft.

Таким образом, такой код не сможет отобразить значение во второй строке Response.Write:

do while not rs.EOF
    Response.Write(rs("memofield"))
    Response.Write(rs("memofield"))
    rs.movenext
loop

Решение - сохранить значение в локальной переменной, затем использовать эту переменную:

Dim strCurValue
do while not rs.EOF
   strCurValue = rs("memofield")
   Response.Write(strCurValue)
   Response.Write(strCurValue)
   rs.movenext
loop
2 голосов
/ 19 февраля 2011

Проблема была в поле nvarchar (max), когда я изменил его на nvarchar (2000), когда появились данные. Очевидно, что не удалось найти ничего, что могло бы подтвердить это, была проблема с классическим ослом и этими полями. Обходной путь, если вам нужен nvarchar (max), это поместить его последним в операторе select.

НТН

Wade

Обновление: по-видимому, это также проблема с текстом и ntext. Спасибо Киту за упоминание этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...