SQL Server 2008 で SQL を実行すると、問題なく動作します。ただし、従来の ASP Web ページに追加してそこから呼び出すと、壊れているように見えます。何が欠けているのかわからないのですか?
sql = ""
sql = sql & " DECLARE @listStr VARCHAR(MAX)"
sql = sql & " DECLARE @temp TABLE ("
sql = sql & " DistID varchar(30),"
sql = sql & " FName varchar(30),"
sql = sql & " LName varchar(30),"
sql = sql & " RankID int, "
sql = sql & " PSV int,"
sql = sql & " ShipCountry varchar(30),"
sql = sql & " ShipState varchar(30) )"
sql = sql & " INSERT INTO @temp"
sql = sql & " EXEC [dbo].[MSGGetList]"
sql = sql & " @List = N'" & request("report_type") & "',"
sql = sql & " @DistID = " & Session("DistributorID") & ","
sql = sql & " @BusCtrID = 1,"
' Autoship Filter Params
If request("autoship") <> "" Then
sql = sql & " @FilterAutoship = '" & request("autoship") & "',"
Else
sql = sql & " @FilterAutoship = NULL,"
End If
sql = sql & " @ItemID = " & request("item_id") & ","
' Order Filter Params
If request("orders") <> "" Then
sql = sql & " @Orders = '" & request("orders") & "',"
Else
sql = sql & " @Orders = NULL,"
End If
If request("minvol") <> "" Then
sql = sql & " @MinVol = " & request("minvol") & ","
Else
sql = sql & " @MinVol = NULL,"
End If
If request("minpostamt") <> "" Then
sql = sql & " @MinPostAmt = " & request("minpostamt") & ","
Else
sql = sql & " @MinPostAmt = NULL,"
End If
If request("startdate") <> "" Then
sql = sql & " @DateStart = '" & request("startdate") & "',"
Else
sql = sql & " @DateStart = NULL,"
End If
If request("enddate") <> "" Then
sql = sql & " @DateEnd = '" & request("enddate") & "',"
Else
sql = sql & " @DateEnd = NULL,"
End If
' Location Filter Params
If request("country") <> "" Then
sql = sql & " @Country = '" & request("country") & "',"
Else
sql = sql & " @Country = NULL,"
End If
If request("region") <> "" Then
sql = sql & " @Region = '" & request("region") & "',"
Else
sql = sql & " @Region = NULL,"
End If
' Rank Filter Params
If request("rankid") <> "" Then
sql = sql & " @RankID = '" & request("rankid") & "',"
Else
sql = sql & " @RankID = NULL,"
End If
'Do Not send list
If request("DoNotSend") <> "" Then
sql = sql & " @Exempt = '" & request("DoNotSend") & "',"
End If
' Volume Filter Params
sql = sql & " @MinPV = " & request("min_pv") & ","
sql = sql & " @MaxPV = " & request("max_pv") & ","
sql = sql & " @MinGV = " & request("min_gv") & ","
sql = sql & " @MaxGV = " & request("max_gv") & ","
sql = sql & " @MinLBVRBV = NULL"
sql = sql & " SELECT @listStr = COALESCE(@listStr+',' ,'') + DistID FROM @temp"
sql = sql & " SELECT @listStr AS ToList"
stop
response.write(sql & "<br />")
Set rsToList = GetRecordSet(sql)
response.Write(rsToList("ToList"))
コードをステップ実行して見ると、次のように表示されrsToList
ます。
オブジェクトが閉じているときは操作できません
ここで何が欠けているのか分かりませんか?!
編集:
Function getRecordset(strSQL)
If Application("DebugSQL") Then
Call WriteSQL(strSQL)
End If
'Create Database Connection
Set FunctionDBConn = Server.CreateObject("ADODB.Connection")
FunctionDBConn.ConnectionTimeout = 180
FunctionDBConn.Open(Application("DB_ConnectionString"))
Set adoRS = Server.CreateObject("ADODB.Recordset")
adoRS.CursorLocation = 3
adoRS.LockType = 4
'Create Recordset
adoRS.Open strSQL, FunctionDBConn
Set adoRS.ActiveConnection = Nothing
Set GetRecordset = adoRS
'Close Database Connection
FunctionDBConn.Close
Set FunctionDBConn = Nothing
End Function