在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日期/时间类型与数据库日期类型
进行比较时数据溢出答案 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