Iam using a stored procedure to return results to an asp page (code below) but I ma getting an error on the asp page:
Operation is not allowed when the object is closed.
for the line: If Not rs.BOF Then
Now this sounds like nothing is getting returned from the SP or something, but when you run the query in sql query analyzer about 40 records are returned!
Has anyone got any ideas, as I have run out of ideas!!
ASP:
SQL="sp_REPORTS_Sales_breakdown "&distiID&",'"&session("region"
&"_"&session("inputMask"
&"_LICENSING_REQ','"&session("region"
&"_"&session("inputMask"
&"_BP'"
Set rs=posconn.Execute(SQL)
If Not rs.BOF Then
Do While Not rs.EOF
response.write("<tr><td>"&rs("partnername"
&"</td>"
response.write("<td align=right>"&formatnumber(rs("expr1"
,2,0,0)&"</td></tr>"
total=total+CCur(rs("expr1"
)
rs.movenext
Loop
End If
rs.close
SP:
CREATE PROCEDURE sp_REPORTS_Sales_breakdown
(
@distiID varchar(100),
@licensing varchar(100),
@BP varchar(100)
)
AS
DECLARE @SQL varchar(2000)
DECLARE @SQLlicensing varchar(500)
DECLARE @SQLBP varchar(500)
CREATE TABLE #tempItems
(
partnerID int,
partnerName varchar(255),
)
CREATE TABLE #tempItemsTotal
(
partnerID int,
totalPrice decimal(18,2)
)
CREATE TABLE #tempItemsPartner
(
partnerID int,
partnerName varchar(255),
)
SET @SqlLicensing = 'INSERT into #tempItems (partnerId,partnerName) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name FROM dbo.'+@licensing+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@licensing+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@licensing+'.partnerID = '+@distiID+') GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlLicensing)
SET @SqlBP = 'INSERT into #tempItems (partnerId,partnerName) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name FROM dbo.'+@BP+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@BP+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@BP+'.partnerID = '+@distiID+') GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlBP)
SET @SqlLicensing = 'INSERT into #tempItemsTotal (partnerId,totalprice) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, SUM(dbo.'+@licensing+'.TotalPrice) AS Expr1 FROM dbo.'+@licensing+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@licensing+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@licensing+'.partnerID = '+@distiID+' ) GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlLicensing)
SET @SqlBP = 'INSERT into #tempItemsTotal (partnerId,totalprice) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, SUM(dbo.'+@BP+'.TotalPrice) AS Expr1 FROM dbo.'+@BP+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@BP+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@BP+'.partnerID = '+@distiID+') GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlBP)
INSERT into #tempItemsPartner (partnerId,partnerName) SELECT DISTINCT partnerID,partnerName FROM #tempItems
SELECT #tempItemsPartner.partnerID, #tempItemsPartner.partnerName, SUM(#tempItemstotal.totalPrice) as expr1 FROM #tempItemsPartner INNER JOIN #tempitemsTotal on #tempItemsPartner.partnerID=#tempItemsTotal.partnerID GROUP by #tempItemsPartner.partnerID, #tempItemsPartner.partnerName
GO
Cheers
Tim
Operation is not allowed when the object is closed.
for the line: If Not rs.BOF Then
Now this sounds like nothing is getting returned from the SP or something, but when you run the query in sql query analyzer about 40 records are returned!
Has anyone got any ideas, as I have run out of ideas!!
ASP:
SQL="sp_REPORTS_Sales_breakdown "&distiID&",'"&session("region"
Set rs=posconn.Execute(SQL)
If Not rs.BOF Then
Do While Not rs.EOF
response.write("<tr><td>"&rs("partnername"
response.write("<td align=right>"&formatnumber(rs("expr1"
total=total+CCur(rs("expr1"
rs.movenext
Loop
End If
rs.close
SP:
CREATE PROCEDURE sp_REPORTS_Sales_breakdown
(
@distiID varchar(100),
@licensing varchar(100),
@BP varchar(100)
)
AS
DECLARE @SQL varchar(2000)
DECLARE @SQLlicensing varchar(500)
DECLARE @SQLBP varchar(500)
CREATE TABLE #tempItems
(
partnerID int,
partnerName varchar(255),
)
CREATE TABLE #tempItemsTotal
(
partnerID int,
totalPrice decimal(18,2)
)
CREATE TABLE #tempItemsPartner
(
partnerID int,
partnerName varchar(255),
)
SET @SqlLicensing = 'INSERT into #tempItems (partnerId,partnerName) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name FROM dbo.'+@licensing+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@licensing+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@licensing+'.partnerID = '+@distiID+') GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlLicensing)
SET @SqlBP = 'INSERT into #tempItems (partnerId,partnerName) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name FROM dbo.'+@BP+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@BP+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@BP+'.partnerID = '+@distiID+') GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlBP)
SET @SqlLicensing = 'INSERT into #tempItemsTotal (partnerId,totalprice) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, SUM(dbo.'+@licensing+'.TotalPrice) AS Expr1 FROM dbo.'+@licensing+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@licensing+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@licensing+'.partnerID = '+@distiID+' ) GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlLicensing)
SET @SqlBP = 'INSERT into #tempItemsTotal (partnerId,totalprice) SELECT TOP 100 PERCENT CA_GLOBAL_PARTNERS.dbo.Partners.ID, SUM(dbo.'+@BP+'.TotalPrice) AS Expr1 FROM dbo.'+@BP+' INNER JOIN CA_GLOBAL_PARTNERS.dbo.Partners ON dbo.'+@BP+'.distiID = CA_GLOBAL_PARTNERS.dbo.Partners.ID WHERE (dbo.'+@BP+'.partnerID = '+@distiID+') GROUP BY CA_GLOBAL_PARTNERS.dbo.Partners.ID, CA_GLOBAL_PARTNERS.dbo.Partners.Name'
exec(@SqlBP)
INSERT into #tempItemsPartner (partnerId,partnerName) SELECT DISTINCT partnerID,partnerName FROM #tempItems
SELECT #tempItemsPartner.partnerID, #tempItemsPartner.partnerName, SUM(#tempItemstotal.totalPrice) as expr1 FROM #tempItemsPartner INNER JOIN #tempitemsTotal on #tempItemsPartner.partnerID=#tempItemsTotal.partnerID GROUP by #tempItemsPartner.partnerID, #tempItemsPartner.partnerName
GO
Cheers
Tim