Page 1 of 1

How to get data from Stored Proc?

Posted: Thu Jul 25, 2024 3:45 am
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

Re: How to get data from Stored Proc?

Posted: Fri Jul 26, 2024 12:13 pm
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.

Re: How to get data from Stored Proc?

Posted: Mon Jul 29, 2024 9:08 am
by DavidLee82
Will do, thanks.

Re: How to get data from Stored Proc?

Posted: Mon Jul 29, 2024 1:16 pm
by Lech Kulikowski
Hello,

You are welcome.

Re: How to get data from Stored Proc?

Posted: Wed Jul 31, 2024 3:38 am
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.

Re: How to get data from Stored Proc?

Posted: Thu Aug 01, 2024 7:27 pm
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

Re: How to get data from Stored Proc?

Posted: Tue Nov 05, 2024 2:34 pm
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?

Re: How to get data from Stored Proc?

Posted: Tue Nov 05, 2024 8:33 pm
by Lech Kulikowski
Hello,

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

Thank you.

Re: How to get data from Stored Proc?

Posted: Thu Nov 14, 2024 12:53 pm
by Lech Kulikowski
Hello,

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

Thank you.