2010-12-10 87 views
1

我一直在一个脚本,将交换两个ID圆这是主键:报告服务存储procedues

CREATE PROCEDURE dbo.ID 
    @OldName NVARCHAR(128), 
    @NewName NVARCHAR(128) 
AS 
    DECLARE @NewId INT, @OldId INT 

    CREATE TABLE TmpTable (ID INT, Name NVARCHAR(128)) 

    INSERT INTO TmpTable (Name,ID) 
    VALUES (@NewName, (SELECT ID FROM Table1 WHERE [Name] = @NewName)); 

    INSERT INTO TmpTable (Name,ID) 
    VALUES(@OldName, (SELECT ID FROM Table1 WHERE [Name] = @OldName)) 

    UPDATE Table1 
    SET ID = (SELECT MAX(ID) + 1000 FROM Table1) 
    WHERE [NAME] = @NewName 

    UPDATE Table1 
    SET ID = (SELECT MAX(ID) + 2000 FROM Table1) 
    WHERE [NAME] = @OldName 

    UPDATE Table1 
    SET ID = (SELECT ID FROM TmpTable WHERE Name = @NewName) 
    WHERE [Name] = @OldName 

    UPDATE Table1 
    SET ID = (SELECT ID FROM TmpTable WHERE Name = @OldName) 
    WHERE [Name] = @NewName 

    DROP TABLE TmpTable 
go 

什么我现在要做的是运行本作中,报告服务,其中报告NewNAme和OldNAme将从查询Table1表的下拉框中选择。目前,当我尝试导入此代码时,它会要求输入值。

  1. 如何将存储过程导入报表。
  2. 如何获取下拉框来查询列[Name]。

回答

0

我一直在使用报告向导的大部分时间,使用文本导入像

exec ID 1,2 

这让我该基地返回值的表矩阵存储过程。但在你的情况下,不适用,因为没有选择返回。

向导创建报告后,右键单击数据集并选择存储的过程。点击刷新字段,参数将自动添加。

要让你的报表参数下降,你需要一个数据源。我根据select语句或其他存储过程添加一个新的数据集来选择我需要的值。

右键单击参数并选择参数属性 您现在可以跳转到可用值选项卡并选择“从查询中获取值” 选择提供下拉值的数据集。

还有其他选项,如允许可以微调下拉工作方式的空值等。

很好奇你为什么想要一个运行你显示的SQL而不返回任何值的报表。似乎有更好的方法让用户能够运行类似的东西。

1

当您将存储过程添加到报告ass数据源时,ssrs会自动添加其参数以报告ass报告参数。

如果您想通过下拉菜单指定参数,则必须编写一个应用程序(如Web应用程序)并将此参数传递给您的报告。