15
« : 29 Сентября 2003, 21:41:34 »
Допустим есть произвольный рекордсет - упорядочен по алфавиту и еще по двум независимым числовым столбцам. Есть уникальные ID, которые идут вразбивку. Задача: найти следующую строку после произвольной строки с известным ID.
Мне пока что пришел в голову только следующий вариант:
1. выбрать строку с известным ID и занести ключевые значения в локальные переменные
2. выбрать первую из множества строк, где все ключевые параметры больше, чем сохраненные в локальных переменных.
Что-то похоже я смог запустить в консоли MSSQL, но вот в скрипт я эти три команды перенести не могу, после объявления переменных они уже не видны в следующей команде:
Comm.CommandText="DECLARE @typeID int, @makerID int,@obj nvarchar(40);"
Comm.Execute
Comm.CommandText="SELECT @typeID=TypeID, @makerID=MakerID,@obj=Object FROM tth_tblCoordinate WHERE ID=32;"
Comm.Execute
Set test = Server.CreateObject("ADODB.Recordset")
GetRS.CursorType = 1
GetRS.LockType = 3
GetRS.Open "SELECT TOP 1 FROM tth_tblCoordinate WHERE TypeID>@typeID AND MakerID>@makerID AND Object>@obj", adoCon
-------------------
Microsoft OLE DB Provider for SQL Server ошибка \'80040e14\'
Must declare the variable \'@typeID\'.
Похоже придется делать хранимую процедуру, но делать это ради такого пустяка не хочется.
Гляньте пожалуйста, я не упустил простых и очевидных решений?
А то больно громоздко получается.