Доброе время суток.
Возникла проблема с ADO при запуске метода Find возникает ошибка:
Microsoft OLE DB Provider for SQL Server (0x80040E29)
Набор строк не поддерживает прокрутку данных в обратном направлении.
Почему это происходит, ведь Find, вроде, проходит по записям только в одном направлении???
Здравствуйте, NightWind, Вы писали:
NW>Возникла проблема с ADO при запуске метода Find возникает ошибка:
NW>Набор строк не поддерживает прокрутку данных в обратном направлении.
NW>Почему это происходит, ведь Find, вроде, проходит по записям только в одном направлении???
MSDN: An error will occur if a current row position is not set before calling Find. Any method that sets row position, such as MoveFirst, should be called before calling Find.
по русски — перед вызовом Find вызови MoveFirst
а направление поиска задается SearchDirection:
Find (Criteria, SkipRows, SearchDirection, Start)
adSearchForward — вперед
adSearchBackward — назад
про случай, когда SearchDirection не задан в МСДНе ничего не сказано — полагаю, в таком случае он ищет в обоих направлениях
Я не правильно поставил вопрос…
Почему следующий код вызывает ошибку:
Microsoft OLE DB Provider for SQL Server (0x80040E29)
Набор строк не поддерживает прокрутку данных в обратном направлении.
/tst/test.asp, line 31
<%@language="VBScript"%>
<%response.buffer=true%>
<%Response.Expires=-1%>
<%session.codepage=1251%>
<!--METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4" -->
<%
Dim Con, Rs
Set Con=Server.CreateObject("ADODB.Connection")
Set Rs=Server.CreateObject("ADODB.Recordset")
Con.ConnectionString="provider=sqloledb;server=(local);uid=sa;password=ring;database=Learn"
Con.Open
'Вот если это разкомментировать, то работает
'что и понятно
Rs.Open "SELECT * FROM checkes order by VarName", Con ', adOpenStatic, adLockReadOnly
'Проходим по всем ячейкам вперёд пару раз, без пролем
for i = 0 to 1
Rs.MoveFirst
do while not Rs.eof
response.Write( Rs("VarName") & " ")
Rs.MoveNext
loop
response.Write "<br>"
next
for i = 0 to 10
Rs.MoveFirst 'Если заккоментировать эту строчку тоже всё работает
Str = "g" & i
Rs.Find "Varname = '" & Str &"'" , 0, adSearchForward
if not Rs.eof then
Str = Str + " - Find<br>"
else
Str = Str + " - NotFind<br>"
end if
response.Write(Str)
next
Rs.Close
Set Rs = Nothing
%>