Hi Bruce, thanks for the reply!
To answer your questions...
[quoted text, click to view] > I use lots of stored procedures. Both against SQL Server and against Sybase.
> I have never seen this.
I use SPs for for most of my RS reporting, this is only problem SP I have
encountered.
[quoted text, click to view] > Here's a few questions that might help us determine what is happening.
>
> What are you doing for credentials?
Straight "Windows NT Integrated Security".
[quoted text, click to view] > Is the stored procedure using linked databases?
No. RS and SQL sitting on the same server (3.2GHz Hyperthreading Xeon with
3GB RAM) and I'm sure load ain't the problem.
[quoted text, click to view] > Is the stored procedure using dynamic sql?
No. I'll copy the entire SP at the bottom of this message.
[quoted text, click to view] > Same timing issue when you view the report? The data tab is also getting
> schema information not just the data.
Yes same problem when viewing/rendering the report (through the Designer
preview and when uploaded to the Rpt Manager)
As promised above, heres the code:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/****** Object: Stored Procedure dbo.SalesOrderEntry Script Date:
10/08/2005 2:38:39 p.m. ******/
ALTER PROCEDURE SalesOrderEntry
-- These variables are passed to SQL by the Reporting Services report. The
default setting is '%' which is the
-- wildcard for select all.
@BRANCH VARCHAR(3) = '%',
@CUSTNAME VARCHAR(50) = '%',
@DEALERNAME VARCHAR(50) = '%',
@STOCKCODE VARCHAR(50) = '%',
@MONTH VARCHAR(3) = '%',
@YEAR VARCHAR(6) = '%',
@STOCK_CATEGORY VARCHAR(3) = '%'
AS
-- The default value that Reporting Services passes to SQL is the string
value 'ALL' This group of IF statements
-- changes the value of parameter to the wildcard value '%'
IF @BRANCH LIKE '%ALL%'
BEGIN
SET @BRANCH = '%'
END
IF @CUSTNAME LIKE '%ALL%'
BEGIN
SET @CUSTNAME = '%'
END
IF @DEALERNAME LIKE '%ALL%'
BEGIN
SET @DEALERNAME = '%'
END
IF @STOCKCODE LIKE '%ALL%'
BEGIN
SET @STOCKCODE = '%'
END
IF @MONTH LIKE '%ALL%'
BEGIN
SET @MONTH = '%'
END
IF @YEAR LIKE '%ALL%'
BEGIN
SET @YEAR = '%'
END
IF @STOCK_CATEGORY LIKE '%ALL%'
BEGIN
SET @STOCK_CATEGORY = '%'
END
SELECT TOP 100 PERCENT
dbo.OEMASTER.DEL_DATE AS [Despatch Date],
dbo.OEMASTER.INV_NO AS [Invoice Number],
dbo.OEPSLINE.NUMBER AS [Packing Slip Number],
dbo.OEMASTER.BRANCH,
dbo.ARMASTER.NAME AS [Dealer Name],
dbo.OEMASTER.CUST_ORDER AS [Dealer Order Num],
dbo.OEMASTER.DEL_NAME AS [Customer Name],
dbo.OEMASTER.DEL_ADDR1,
dbo.OEMASTER.DEL_ADDR2,
dbo.OEPSLINE.STOCK_CODE,
dbo.INMASTER.CATEGORY,
dbo.INSLTRAN.SERIAL_LOT_NO,
CASE WHEN dbo.INSLTRAN.SERIAL_LOT_NO IS NULL THEN dbo.OEPSLINE.QTY_SUPP_SEL
ELSE 1 END AS [QTY SOLD],
CASE WHEN dbo.INSLTRAN.SERIAL_LOT_NO IS NULL THEN dbo.OEPSLINE.QTY_SUPP_SEL
* dbo.OEPSLINE.PRICE ELSE 1 * dbo.OEPSLINE.PRICE END AS [List Price],
CAST(dbo.OEPSLINE.DISCRATE AS VARCHAR) + ' %' AS Discount,
CASE WHEN dbo.INSLTRAN.SERIAL_LOT_NO IS NULL THEN (dbo.OEPSLINE.QTY_SUPP_SEL
* dbo.OEPSLINE.PRICE) * (1 - dbo.OEPSLINE.DISCRATE / 100) ELSE (1 *
dbo.OEPSLINE.PRICE) * (1 - dbo.OEPSLINE.DISCRATE / 100) END AS [Net Price]
-- INSLTRAN.REF <-- OEPSLINE.STOCK_CODE(ALL)
-- INSLTRAN.STOCKCODE <-- OEPSLINE.NUMBER(ALL)
FROM dbo.INMASTER RIGHT OUTER JOIN
dbo.OEPSLINE ON dbo.INMASTER.CODE =
dbo.OEPSLINE.STOCK_CODE LEFT OUTER JOIN
dbo.INSLTRAN ON dbo.OEPSLINE.STOCK_CODE =
dbo.INSLTRAN.STOCKCODE AND CAST(dbo.OEPSLINE.NUMBER AS VARCHAR(50))
= dbo.INSLTRAN.REF RIGHT OUTER JOIN
dbo.OEMASTER ON dbo.OEPSLINE.ORDER_NO =
dbo.OEMASTER.NUMBER LEFT OUTER JOIN
dbo.OEPSHDR ON dbo.OEMASTER.NUMBER =
dbo.OEPSHDR.ORDER_NO LEFT OUTER JOIN
dbo.ARMASTER ON dbo.OEMASTER.CUST_NO =
dbo.ARMASTER.NUMBER
WHERE
-- Bakery or Catering only
(dbo.OEMASTER.BRANCH LIKE N'NB' OR dbo.OEMASTER.BRANCH = N'NC')
-- Records in INSLTRAN that have no Serial Lot No are not included
(therefore the test for NULL values)
AND (dbo.INSLTRAN.[TRAN] LIKE N'OEORD' OR dbo.INSLTRAN.[TRAN] IS NULL)
-- Only Invoiced values
AND (dbo.OEMASTER.STATUS = N'I')
-- removes erroneously entered values
AND NOT ((dbo.INSLTRAN.[TRAN] LIKE N'OEORD') AND (dbo.OEPSLINE.QTY_SUPP_SEL
= 0 ))
-- Force parameters
AND (OEMASTER.BRANCH LIKE @BRANCH)
AND OEMASTER.DEL_NAME LIKE @CUSTNAME
AND ARMASTER.[NAME] LIKE @DEALERNAME
AND OEPSLINE.STOCK_CODE LIKE @STOCKCODE
AND MONTH(dbo.OEMASTER.DEL_DATE) LIKE @MONTH
AND (CAST(YEAR(DEL_DATE) AS VARCHAR)) LIKE @YEAR
AND dbo.INMASTER.CATEGORY LIKE @STOCK_CATEGORY
GROUP BY dbo.ARMASTER.[NAME], dbo.OEMASTER.DEL_DATE,
dbo.OEMASTER.CUST_ORDER, dbo.OEMASTER.NUMBER, dbo.OEMASTER.INV_NO,
dbo.OEPSLINE.STOCK_CODE, dbo.OEMASTER.DEL_NAME,
dbo.OEMASTER.DEL_ADDR1, dbo.OEMASTER.DEL_ADDR2, dbo.OEMASTER.STATUS,
dbo.OEMASTER.BRANCH, dbo.OEPSLINE.NUMBER,
dbo.INSLTRAN.SERIAL_LOT_NO, dbo.OEPSLINE.QTY_SUPP_SEL, dbo.OEPSLINE.PRICE,
dbo.OEPSLINE.DISCRATE, dbo.INSLTRAN.[TRAN],
dbo.INMASTER.CATEGORY
ORDER BY dbo.OEMASTER.BRANCH, dbo.OEPSLINE.NUMBER
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO