How to get data from Stored Proc?

Stimulsoft Reports.NET discussion
Post Reply
DavidLee82
Posts: 11
Joined: Wed Jul 03, 2024 12:52 am

How to get data from Stored Proc?

Post by DavidLee82 »

Hi, I have a stored proc that creates a temporary table, pulls data from various existing tables into the temporary table, and does some processing. In the end it selects the temporary table and displays it. Stimulsoft correctly picks up the parameters required by the stored proc, but does not pick up the columns in the resulting table displayed by the stored proc at the end of the run.

Can I know how to make Stimulsoft see the table generated by the stored proc at the end of the run?

The code of the Stored Proc is as follows, am I missing something?

Code: Select all

CREATE PROCEDURE [dbo].[WeeklyCollectDeliverJobReport] 
(
	@month INT,
	@year INT,
	@CustList NVARCHAR(MAX),
	@Activity nchar(1)
)
AS
	BEGIN
		DECLARE @DateStart DATETIME;
		DECLARE @DateEnd DATETIME;
		DECLARE @RealDateStart DATETIME;
		DECLARE @RealDateEnd DATETIME;
		DECLARE @TimeSpan INT;
	
		SET @DateStart = CAST(@year AS nvarchar(MAX))+'-'+CAST(@month AS nvarchar(MAX))+'-01 00:00:00';
		SET @DateEnd   = DATEADD(DAY, 1, EOMONTH(@DateStart));

		SET @RealDateStart=IIF(DATEPART(dw, @DateStart) > 1, DATEADD(DAY, 8 - DATEPART(dw, @DateStart), @DateStart), @DateStart);
		SET @RealDateEnd=DATEADD(DAY, 7 - DATEPART(dw,@DateEnd), @DateEnd);
	
		SET @TimeSpan = DATEDIFF(DAY, @RealDateEnd, @RealDateEnd);

		CREATE TABLE #JobsCollect
		(
			JobNo NVARCHAR(MAX) NULL,
			JobDateBand INT NULL,
			JobDateString NVARCHAR(MAX) NULL,
			JobDate DateTime NULL,
			CustCode NVARCHAR(4) NULL,
			RequestDate DateTime NULL,
			ServiceType NVARCHAR(MAX) NULL,
			MediaType NVARCHAR(MAX) NULL,
			JobType NVARCHAR(2) NULL,
			Remarks NVARCHAR(MAX) NULL,
			TotalCtn INT NULL,
			TotalMat INT NULL,
			Staff NVARCHAR(MAX) NULL
		)

		IF LOWER(@Activity)='c' 
			BEGIN
				INSERT INTO #JobsCollect 
				SELECT 
				   j.OldJobNo
				 , 1 + (DATEDIFF(DAY, @RealDateStart, DATEADD(day, ((DATEPART(WEEKDAY,j.JobDate) * -1) +1), CAST (j.JobDate AS DATE))) / 7) AS 'JobDateBand'
				 , CAST(DATEADD(day, ((DATEPART(WEEKDAY,j.JobDate) * -1) +1), CAST (j.JobDate AS DATE)) AS NVARCHAR(MAX)) 
					+ ' - ' 
					+ CAST(DATEADD(day, 7 - (DATEPART(WEEKDAY, j.JobDate)), CAST (j.JobDate AS DATE)) AS NVARCHAR(MAX)) AS 'JobDateString'
				 , j.JobDate
				 , j.CustCode
				 , j.RequestDate
				 , CASE WHEN ServLevel='F' THEN 'FAX' 
					WHEN ServLevel='T' THEN 'PHONE' 
					ELSE (SELECT SrvLevel FROM JobServiceLevel s WHERE s.SvrID=j.ServLevel) END AS 'ServiceType'
				 , (SELECT Description FROM CartonType c WHERE c.CtnType=j.CtnType) As 'MediaType'
				 , j.JobType
				 , j.Remark
				 , j.TotalCtn
				 , REPLACE(j.TamperSealQty,null,0)
					+REPLACE(j.PlasticBagQty,null,0)
					+REPLACE(j.RICQty,null,0) AS 'TotalMat'
				 , j.Staff
				 FROM Job j
					WHERE j.JobType LIKE '%C%' 
						AND CustCode IN (SELECT * FROM STRING_SPLIT(@CustList,','))
						AND j.JobDate BETWEEN @RealDateStart AND @RealDateEnd
			END 
		ELSE IF LOWER(@Activity)='d'
			BEGIN
				INSERT INTO #JobsCollect 
				SELECT 
				   j.OldJobNo
				 , 1 + (DATEDIFF(DAY, @RealDateStart, DATEADD(day, ((DATEPART(WEEKDAY,j.JobDate) * -1) +1), CAST (j.JobDate AS DATE))) / 7) AS 'JobDateBand'
				 , CAST(DATEADD(day, ((DATEPART(WEEKDAY,j.JobDate) * -1) +1), CAST (j.JobDate AS DATE)) AS NVARCHAR(MAX)) 
					+ ' - ' 
					+ CAST(DATEADD(day, 7 - (DATEPART(WEEKDAY, j.JobDate)), CAST (j.JobDate AS DATE)) AS NVARCHAR(MAX)) AS 'JobDateString'
				 , j.JobDate
				 , j.CustCode
				 , j.RequestDate
				 , CASE WHEN ServLevel='F' THEN 'FAX' 
					WHEN ServLevel='T' THEN 'PHONE' 
					ELSE (SELECT SrvLevel FROM JobServiceLevel s WHERE s.SvrID=j.ServLevel) END AS 'ServiceType'
				 , (SELECT Description FROM CartonType c WHERE c.CtnType=j.CtnType) As 'MediaType'
				 , j.JobType
				 , j.Remark
				 , j.TotalCtn
				 , REPLACE(j.TamperSealQty,null,0)
					+REPLACE(j.PlasticBagQty,null,0)
					+REPLACE(j.RICQty,null,0) AS 'TotalMat'
				 , j.Staff
				 FROM Job j
					WHERE j.JobType LIKE '%D%' 
						AND CustCode IN (SELECT * FROM STRING_SPLIT(@CustList,','))
						AND j.JobDate BETWEEN @RealDateStart AND @RealDateEnd
			END
		ELSE
			BEGIN 
				INSERT INTO #JobsCollect 
				SELECT 
				   j.OldJobNo
				 , (DATEDIFF(DAY,DATEADD(day, ((DATEPART(WEEKDAY,j.JobDate) * -1) +1), CAST (j.JobDate AS DATE)), @RealDateStart) / 7) + 1 AS 'JobDateBand'
				 , CAST(DATEADD(day, ((DATEPART(WEEKDAY,j.JobDate) * -1) +1), CAST (j.JobDate AS DATE)) AS NVARCHAR(MAX)) 
					+ ' - ' 
					+ CAST(DATEADD(day, 7 - (DATEPART(WEEKDAY, j.JobDate)), CAST (j.JobDate AS DATE)) AS NVARCHAR(MAX)) AS 'JobDateString'
				 , j.JobDate
				 , j.CustCode
				 , j.RequestDate
				 , CASE WHEN ServLevel='F' THEN 'FAX' 
					WHEN ServLevel='T' THEN 'PHONE' 
					ELSE (SELECT SrvLevel FROM JobServiceLevel s WHERE s.SvrID=j.ServLevel) END AS 'ServiceType'
				 , (SELECT Description FROM CartonType c WHERE c.CtnType=j.CtnType) As 'MediaType'
				 , j.JobType
				 , j.Remark
				 , j.TotalCtn
				 , REPLACE(j.TamperSealQty,null,0)
					+REPLACE(j.PlasticBagQty,null,0)
					+REPLACE(j.RICQty,null,0) AS 'TotalMat'
				 , j.Staff
				 FROM Job j
						WHERE CustCode IN (SELECT * FROM STRING_SPLIT(@CustList,','))
						AND j.JobDate BETWEEN @RealDateStart AND @RealDateEnd
			END

		DECLARE @tempDate DATETIME = @RealDateStart;
		DECLARE @counter int = 1;

		WHILE (DATEADD(DAY, 6, @tempDate) <= @RealDateEnd)
		BEGIN
			IF (SELECT COUNT(JobNo) FROM #JobsCollect WHERE JobDate BETWEEN @tempDate AND DATEADD(DAY, 6, @tempDate))=0
			BEGIN
				INSERT INTO #JobsCollect (JobDateBand, JobDateString, Remarks) VALUES (
					@counter, CAST(CAST(@tempDate AS DATE) AS NVARCHAR(MAX))+' - '+CAST(CAST(DATEADD(DAY,7,@tempDate) AS DATE) AS NVARCHAR(MAX)),
						'<--- NIL ------>')
			END
		SET @counter = @counter + 1;
		SET @tempDate = DATEADD(DAY,7,@tempDate);
		END

		SELECT * FROM #JobsCollect ORDER BY JobDateString 
	END
Lech Kulikowski
Posts: 7291
Joined: Tue Mar 20, 2018 5:34 am

Re: How to get data from Stored Proc?

Post by Lech Kulikowski »

Hello,

Please try to check the last release build.

If the issue is still present, please send us test data, tables, procedure for analysis.

Thank you.
DavidLee82
Posts: 11
Joined: Wed Jul 03, 2024 12:52 am

Re: How to get data from Stored Proc?

Post by DavidLee82 »

Will do, thanks.
Lech Kulikowski
Posts: 7291
Joined: Tue Mar 20, 2018 5:34 am

Re: How to get data from Stored Proc?

Post by Lech Kulikowski »

Hello,

You are welcome.
DavidLee82
Posts: 11
Joined: Wed Jul 03, 2024 12:52 am

Re: How to get data from Stored Proc?

Post by DavidLee82 »

Hi, It is still not working. I have upgraded to the latest release, 2024.3.2.

I have already attached the stored Proc in the opening post.

The table design for the affected tables are as follows:

Job table

Code: Select all

CREATE TABLE [dbo].[Job](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[OldJobNo] [nvarchar](max) NOT NULL,
	[JobNo] [uniqueidentifier] NOT NULL,
	[JobDate] [datetime2](7) NOT NULL,
	[CustCode] [nvarchar](max) NOT NULL,
	[DeptCode] [nvarchar](max) NULL,
	[BillDate] [datetime2](7) NULL,
	[Address1] [nvarchar](max) NOT NULL,
	[Address2] [nvarchar](max) NULL,
	[Address3] [nvarchar](max) NULL,
	[Address4] [nvarchar](max) NULL,
	[JobLevel] [nvarchar](max) NOT NULL,
	[JobType] [nvarchar](max) NOT NULL,
	[ServLevel] [nvarchar](max) NOT NULL,
	[CtnType] [nvarchar](max) NOT NULL,
	[RequestDate] [datetime2](7) NOT NULL,
	[Person] [nvarchar](max) NOT NULL,
	[Remark] [nvarchar](max) NULL,
	[IndexCard] [nvarchar](max) NULL,
	[JobOrderNo] [nvarchar](max) NULL,
	[TotalCtn] [int] NOT NULL,
	[TamperSealQty] [int] NULL,
	[PlasticBagQty] [int] NULL,
	[RICQty] [int] NULL,
	[TieQty] [int] NULL,
	[Staff] [nvarchar](max) NULL,
	[MssInvoice] [nvarchar](max) NULL,
	[DeleteFlag] [int] NULL,
	[RMBRemark] [nvarchar](max) NULL,
	[Contact] [nvarchar](max) NULL,
	[Fax] [nvarchar](max) NULL,
	[RMBRemark1] [nvarchar](max) NULL,
	[RMBRemark2] [nvarchar](max) NULL,
	[RMBRemark3] [nvarchar](max) NULL,
	[MssCode] [nchar](10) NULL,
 CONSTRAINT [PK_Job] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
JobServiceLevel:

Code: Select all

CREATE TABLE [dbo].[JobServiceLevel](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[SvrId] [int] NOT NULL,
	[SrvLevel] [nvarchar](max) NOT NULL,
 CONSTRAINT [PK_JobServiceLevel] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CartonType:

Code: Select all

CREATE TABLE [dbo].[CartonType](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[CtnType] [nvarchar](max) NOT NULL,
	[Description] [nvarchar](max) NOT NULL,
	[Reorder] [real] NOT NULL,
	[Qty] [real] NOT NULL,
	[CloseBal] [int] NOT NULL,
	[AsatDate] [datetime2](7) NOT NULL,
	[Dimension] [nvarchar](max) NULL,
	[StdBarcode] [bit] NOT NULL,
	[StdCableTies] [bit] NOT NULL,
	[StdPlasticBag] [bit] NOT NULL,
	[StdRIC] [bit] NOT NULL,
	[StdZipBag] [bit] NOT NULL,
 CONSTRAINT [PK_CartonType] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
I cannot disclose the content of the tables as they are Private and Confidential, however. Sorry.
Lech Kulikowski
Posts: 7291
Joined: Tue Mar 20, 2018 5:34 am

Re: How to get data from Stored Proc?

Post by Lech Kulikowski »

Hello,

We require more time to investigate the issue thoroughly. Rest assured, we will keep you informed about the outcome as soon as possible.

Thank you.
#15005
NeilHoskins
Posts: 1
Joined: Tue Nov 05, 2024 2:30 pm

Re: How to get data from Stored Proc?

Post by NeilHoskins »

We are having this exact issue in 2024.4.3 - if we convert the temporary table (#items) to a variable (@items) it works fine. We have the same trouble with the Microsoft System.Data.SQLClient - when we try to get the schema - we have to use SqlDataAdapter.FillSchema() to get it.

We have 100's of sprocs spread across our client base that use temporary tables and it's a monumental task to convert them all. When will Stimulsoft support it?
Lech Kulikowski
Posts: 7291
Joined: Tue Mar 20, 2018 5:34 am

Re: How to get data from Stored Proc?

Post by Lech Kulikowski »

Hello,

We are still working on the problem. We will let you know when the solution is available.

Thank you.
Lech Kulikowski
Posts: 7291
Joined: Tue Mar 20, 2018 5:34 am

Re: How to get data from Stored Proc?

Post by Lech Kulikowski »

Hello,

The issue was fixed. Please check the 2024.4.4 release build.

Thank you.
Post Reply