无法绑定SQL查询中的WHERE部分

时间:2011-06-29 13:11:14

标签: sql sql-server reporting-services crystal-reports

当您尝试在MS SQL Server 2008上创建此proc并尝试绑定报表(Crystal或SQL Server报表)时,您无法从报表中获取任何参数。我没有得到任何错误。我只看到proc名称,并且没有列下面的列来从中获取任何数据。请帮忙

create proc getdata 
@where as nvarchar (max)
as
declare @sql as varchar(max)
set @sql='select cp.address,
(case when cp.male =1 then ''Male'' 
      when cp.female =1 then ''Female'' 
      else null end ) AS "Gender" 
from consumer_premium cp where '+ @where
exec(@sql);

@where示例执行

getdata 'male=1'

表格

CREATE TABLE [dbo].[Consumer_Premium](
    [Address] [nvarchar](255) NULL,
    [Male] [bit] NULL,
    [Female] [bit] NULL)

请帮忙。

1 个答案:

答案 0 :(得分:1)

如果您使用SSRS 2008,可以尝试以下一种方法。以下示例是使用SSRS 2008根据问题中提供的数据创建的。

  1. 使用SQL Scripts部分下提供的脚本创建名为dbo.Consumer_Premium的表和名为dbo.GetData的存储过程。使用数据填充表格,如屏幕截图# 1

  2. 所示
  3. 创建名为BindWhere.rdl的SSRS报告,如屏幕截图# 2 所示。

  4. 使用屏幕截图# 3 - # 5 中显示的设置创建名为Gender的报告参数。

  5. 配置报告数据源,如屏幕截图# 6 - # 8 所示。

  6. 屏幕截图# 9 显示默认报告执行,参数Gender设置为值男性

  7. 屏幕截图# 10 显示参数Gender值更改为女性时的默认报告执行情况。您需要单击“查看报告”按钮刷新数据。

  8. 希望有所帮助。

    SQL脚本:

    CREATE TABLE [dbo].[Consumer_Premium](
        [Address] [nvarchar](255) NULL,
        [Male] [bit] NULL,
        [Female] [bit] NULL
    ) ON [PRIMARY]
    GO
    
    CREATE PROCEDURE getdata 
    (
        @where AS NVARCHAR(MAX)
    )   
    AS
        DECLARE @sql AS VARCHAR(MAX)
        SET @sql='select cp.address,
        (case when cp.male =1 then ''Male'' 
              when cp.female =1 then ''Female'' 
              else null end ) AS "Gender" 
        from consumer_premium cp where '+ @where
        EXEC(@sql);
    GO
    

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    5

    屏幕截图#6:

    6

    屏幕截图#7:

    7

    屏幕截图#8:

    8

    屏幕截图#9:

    9

    屏幕截图#10:

    10