使用SSRS查询中的参数

时间:2014-08-01 13:25:08

标签: sql visual-studio-2012 reporting-services parameters

在Visual Studio 2012中使用SQL Server Report Builder,我尝试用@myDate变量做一个简单的查询(其中可能有错误,但我只是快速,真实地编写了它)查询没有错误:D)

Select * from myTable x 
inner join OtherTable y on x.Id = y.Id 
where x.date = @myDate or y.date = @myDate

所以当我使用它时,我需要为它创建参数设置参数的名称和值,所以它将是@myDate并且他的值将等于  =Parameters!myDate.Value。 我希望它是可见的所以我可以随时更改它以查询不同的日期,这将从我的表中排序不同的数据。 所以我可以设置一个默认值,但这不是问题。

我遇到的问题是当我运行报告时,它会问我要设置为参数的日期。我输入一个日期,然后崩溃。

这里的错误是:

SQL0206:列或全局变量@MYDATE不可用。原因......:@ MYDATE未被发现为* N中的表* N,未被发现为全局变量......等等

所以在此错误后我尝试添加

DECLARE @myDate as DATE

但那也不起作用..

你们有没有做过这样的事情?我应该尝试不同的东西吗?

感谢您抽出宝贵时间帮助新手!

---------------编辑---------------

类型不匹配的代码

Select * from myTable x 
inner join OtherTable y on x.Id = y.Id 
where Date(x.date) = ? or Date(y.date) = ?

因此,当您在SSRS数据集中创建此类查询时,它将提示您识别参数。所以我创建了1个日期/时间类型的参数(只有SSRS中可用的日期类型),在查询属性中我设置了两个参数?价值:[@DateParameter]

现在问题是将SSRS日期/时间类型与数据库日期类型

进行比较时数据溢出

2 个答案:

答案 0 :(得分:3)

我找到了一种方法。您必须为查询使用表达式。

所以

="Select * from myTable x 
inner join OtherTable y on x.Id = y.Id 
where Date(x.date) = &" Parameters!MyDate.Value " & 
or Date(y.date) = & " Parameters!MyDate.Value " &"

这是我的疑问。现在我必须给我的参数赋值,所以我创建了另一个包含此查询的数据集:

SELECT CURRENT TIMESTAMP
FROM   sysibm.sysdummy1

然后有了这个我有时间,我只需要根据我的需要进行格式化,所以我添加了一个带有这样一个表达式的列:

=Cdate(Left(Cdate(DateSerial(cdate(Left(Fields!Date_Filter.Value,10)).Year, 
cdate(Left(Fields!Date_Filter.Value,10)).Month, 
cdate(Left(Fields!Date_Filter.Value, 10)).Day)), 10))

然后我将参数的默认值设置为此数据集的列。然后它工作得很好!

答案 1 :(得分:2)

尝试将其声明为全局变量@@ myDate