ASP Classic и SQL Server 2008 дают странный ответ

Похоже, эта ошибка началась с тех пор, как мы обновились до SQL Server 2008.

Вставляя в БД и затем возвращая идентичность, я получаю "Предмет не может быть найден в коллекции, соответствующей запрошенному имени или порядковому номеру".

Вот код:

SQL = "INSERT INTO PageFeatures(nPageFeatureFlagId,nPageFeatureFeatureId,nPageFeaturePageId) VALUES(" & nTemplateFlagId & "," & nFeatureId & "," & nPageId & "); SELECT SCOPE_IDENTITY() As nPageFeatureId;"
objrs.open SQL,objConn,1,1
    nPageFeatureId = objrs("nPageFeatureId")
objrs.close

Вставка работает, так как запись находится в БД. По какой-то причине он не возвращает идентификатор. Он работает нормально и возвращает идентификатор при работе в SSMS. Но ASP не может видеть возвращенный идентификатор, поэтому какая-то причина.

Любая помощь будет принята с благодарностью!

2 ответа

Решение

Сортировка:

SQL = "INSERT INTO PageFeatures(nPageFeatureFlagId,nPageFeatureFeatureId,nPageFeaturePageId) VALUES(" & nTemplateFlagId & "," & nFeatureId & "," & nPageId & ");"
objConn.execute(SQL)

Set oReturnValueRS = objConn.Execute("SELECT SCOPE_IDENTITY()")
nPageFeatureId = oReturnValueRS(0).Value
oReturnValueRS.close : set oReturnValueRS = nothing

Возможно, вам придется попробовать переместить набор записей? например

SQL = "INSERT INTO PageFeatures(nPageFeatureFlagId,nPageFeatureFeatureId,nPageFeaturePageId) VALUES(" & nTemplateFlagId & "," & nFeatureId & "," & nPageId & "); SELECT SCOPE_IDENTITY() As nPageFeatureId;"
objrs.open SQL,objConn,1,1
    objrs.NextRecordset
    nPageFeatureId = objrs("nPageFeatureId")
objrs.close

Комментарий Радж о внедрении SQL по-прежнему актуален.:)

РЕДАКТИРОВАТЬ: Разработка состоит в том, что здесь есть два набора записей. Первый - пустой, созданный оператором вставки, второй - вызван всем после точки с запятой;. Это поле, которое вы хотите. Итак, изначально ваш objrs привязан к первому из его набора наборов записей (а не строк в наборе записей), вы переходите к NextRecordset - и вы можете тогда справиться с этим, как пожелаете.

Другие вопросы по тегам