私の古典的なASPページは、私の ストアドプロシージャのExecコードに2つのパラメータを渡すとエラーになります。基本的には、私は を探している列をカバーするために1つのパラメータを送信し、検索語には1つを送信したいと考えています。例えば、ニューヨーク大学のimSchool。私は2つのparamertsとSQLクエリを選択するたびに、 "オブジェクトが閉じられたときに操作は許可されていません"ということを示すRecord Set.Stateコードと同様に、送信されたデータのデータチェックを行います。常に表示されます。 "While Not rs.EOF"というコード行でオブジェクトをオープンしようとしましたが、エラーが発生しました。 同じ入力でMSSQLでストアドプロシージャを実行すると、毎回リターンテーブルが取得されるため、私のSQLQueryが悪いと思っています。 SQL Server 2008 R2および従来のASP。ADODB.Recordsetエラー '800a0e78' - 2つのパラメータ(ASP/MSSQL)を渡したときのエラー
HEREここに私のIFなステートメントWITHのSQLQuery CODE(第一1が正常に動作し、データをDBから選択された心に留めておく)
SQLQuery = "Exec sp_vw_InternImport"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.Open SQLQuery, OBJdbConnection
If filterColmn <> "" Then
SQlQuery = "Exec sp_vw_InternImport_ColID @LookUpID=N'" + filterID + "'" + ", @LookUpCol=N'" + filterID + "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.Open SQLQuery, OBJdbConnection
End If
は、あなたが私のストアドプロシージャコード
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_vw_InternImport_ColID]
(
@LookUpID nvarchar (255),
@LookUpCol nvarchar (50)
)
AS
SET NOCOUNT ON
BEGIN
IF @LookUpCol = 'imYear'
SELECT * FROM v_InternImport WHERE imYear = @LookUpID
ELSE
IF @LookUpCol = 'imSchool'
SELECT * FROM v_InternImport WHERE imSchool = @LookUpID
ELSE
IF @LookUpCol = 'imDiscipline'
SELECT * FROM v_InternImport WHERE imDiscipline = @LookUpID
IF @LookUpCol = 'imDegree'
SELECT * FROM v_InternImport WHERE imDegree = @LookUpID
END
これはもう一度感謝を働きました。前の回答も同様ですが、私はレコードセットをページの最後に閉じます。したがって、それは2番目のIFステートメントに到達する前に閉じたままです。 – user1188287
推奨事例コードでは、ADODB.Commandオブジェクトを調べて、生のテキストとして渡す代わりにパラメータを作成します。あなたが持っているものは問題ありませんが、SQLインジェクションには脆弱ではありませんが、ベストプラクティスではありません。 –