1

このエラーが発生し始めたのは、SQL Server 2008 にアップグレードしてからのようです。

データベースに挿入してからIDを返すと、「要求された名前または序数に対応するコレクションにアイテムが見つかりません」というエラーが表示されます。

コードは次のとおりです。

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

レコードがデータベースにあるため、挿入は機能しています。何らかの理由でIDが返されません。SSMSで実行すると正常に動作し、IDを返します。しかし、ASP は返された ID を認識できないため、何らかの理由で.

どんな助けでも大歓迎です!

4

2 に答える 2

1

レコードセットを移動してみる必要があるかもしれませんか? 例えば

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 インジェクションに関する Raj のコメントは今でも有効です。:)

編集: 詳細は、ここで 2 つのレコードセットが使用されていることです。1 つ目は挿入ステートメントによって作成された空のもので、2 つ目はセミコロン ; の後のすべてのものによって引き起こされます。ご希望のフィールドです。したがって、最初に、objrs は最初のレコードセット コレクション (レコードセット内の行ではない) にアタッチされ、NextRecordset に移動します。その後、好きなように処理できます。

于 2009-10-06T11:41:25.043 に答える
1

並べ替え:

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
于 2009-10-06T14:08:05.983 に答える