2011-06-29 123 views
1

当您尝试创建MS SQL Server 2008上的这个proc和尝试绑定的报告(水晶或SQL Server报表)你不能从报告中的任何参数的一部分。我没有得到任何错误。我只看到PROC名称并没有列在它从它那里得到任何数据。请帮助无法绑定凡在SQL查询

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) 

请帮助。

+0

[报告时SQL查询问题]的可能重复(HTTP:/ /stackoverflow.com/questions/6520506/sql-query-problem-when-reporting) – MatBailie

+0

语法错误:无法将“u”转换为任何有意义的内容 –

回答

1

这里是一个可能的选项,你可以,如果你使用的是SSRS 2008尝试。以下示例是基于问题中提供的数据使用SSRS 2008创建的。

  1. 创建一个名为dbo.Consumer_Premium和存储过程使用下SQL脚本部分提供的脚本命名dbo.GetData表。用数据填充该表中所示的屏幕截图#。

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

  3. 创建一个名为Gender与设置的报告参数,如图截图# - #。

  4. 配置如屏幕截图中所示的报告数据源# - #。

  5. 屏幕截图显示默认报表执行与参数Gender值设置为

  6. 屏幕截图显示默认报表执行时的参数Gender值更改为。您需要点击查看报告按钮来刷新数据。

希望有所帮助。

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