在SQL Server中为SSRS中的报表添加新参数

时间:2017-04-27 16:58:24

标签: sql sql-server reporting-services

我需要帮助为我当前的程序创建新参数这里是我需要在我的程序中添加的内容的描述,之后我将其添加到我的SSRS报告中。

我们需要对“标签通用序列号”报告进行一些修改:

  • 要添加到当前那些参数的新参数 -
    • 材料代码 - 五个字符
    • 拍卖日期(YYMMDD)
    • 以磅为单位的重量(磅)(偶数磅,两位数,无小数)
  • 生成的条形码需要44个字符,并插入以下内容:
    • 参数从字符11开始,以字符15结尾
    • 从参数开始于字符19结束于字符24
    • 的批次日期
    • 参数从字符30开始,以字符31结尾

此报告应生成长度为44个字符的序列号,并使用条形码接收在正确的位置扫描材料代码,净重和批次。

以下是我目前适用于我的报告的程序:

ALTER PROCEDURE [dbo].[NewLabelGeneratorGeneric]
(
        @quantity int = 1,
        @length int = 44,
        @prefix varchar(6),
        @material int = 5,
        @lotDate int = 6,
        @netWeight int = 4
)

AS

DECLARE @projectId int = NULL,
        @order varchar(max) = NULL,                    
        @lineNumber int = NULL

DECLARE @suffix varchar(4)

DECLARE @labels TABLE (id int, label varchar(max), number varchar(max))

DECLARE @labelId int,
        @label varchar(max),
        @counter int

DELETE FROM @labels

IF @length > 80
SET @length = 80

SET @counter = 1

WHILE @counter <= @quantity
BEGIN

RETRYLABEL:

EXEC datex_footprint.Identities_GetNextId 'Label', @labelId OUTPUT

SELECT @label = ISNULL(@prefix,'')
                + RIGHT('00000000000000000000000000000000000000000000000000000000000000000000000000000000'
                + RIGHT(11, @material + 19, @lotDate + 29, @netWeight)
                + CONVERT(varchar(max),@labelId),ISNULL(@length,LEN(@labelId)))
                + ISNULL(@suffix,'')

IF EXISTS ( SELECT 1 FROM datex_footprint.LicensePlates LP WITH (NOLOCK)
            WHERE LP.archived = 0
            AND LP.lookupCode = @label)
BEGIN
GOTO RETRYLABEL
END

INSERT INTO @labels (id, label, number)
SELECT  @counter AS id,
        @label AS label,
        CONVERT(varchar(max),@counter) + ' of ' + CONVERT(varchar(max),@quantity) AS number

SET @counter = @counter + 1

END

SELECT          L.id as Id,
                L.label as Label,
                L.number as Squence
FROM @labels L

0 个答案:

没有答案