【问题标题】:SSRS - Format Output of Dataset for Input of ParameterSSRS - 参数输入的数据集格式输出
【发布时间】:2016-04-12 20:31:48
【问题描述】:

我有一个由需要参数的存储过程驱动的数据集。参数是 DATETIME,但我无法在报告中以这种方式呈现,因为 DateTime 显示为日历,我需要下拉值。

唉,我有一个数据集来驱动名为 BaselineDate 的参数的选择。问题归结为 SSRS 格式化参数的 DateTime 值然后作为 VARCHAR 传递给存储过程的方式。 VARCHAR 值的格式错误。

SSRS

预期值

2016-04-07 13:01:19.173

更新

根据@Marco Bong 的建议,我已将驱动参数选项的数据集转换为正确的格式。不幸的是,SSRS 我将参数值作为 null 传递。

下面是我创建的调试表。我只是将参数的值插入到此表中。正如您所看到的,SSRS 将 null 作为 NULL 传递给存储过程,这在理论上应该是不可能的,因为参数设置为不允许 null。有什么想法吗?

【问题讨论】:

  • 让我了解您的尝试。您有一个使用日期时间值填充参数的数据集,但您的参数是文本数据类型,对吧?
  • 您可以访问 SP 代码吗?我很确定如果您将 datetime 转换为 varchar,它将根据您的需要出现。 SSRS 将日期时间列隐式转换并格式化为文本以填充参数。
  • 您还可以创建表变量并从您的 SP 填充它。 INSERT INTO @MyTableVariable EXEC MyStoredProcedure。然后从表中将列转换为 VARCHAR。
  • 我可以这样做,但我遇到的问题是在 SSRS 级别。我需要用户从下拉列表中选择发布日期,然后在存储过程中使用该值。
  • 您可以创建一个内部参数以将值传递给 SP,并使用您的可见参数让用户选择该值,然后将其再次转换为日期时间并将其值分配给您拥有的内部参数传递给 SP =CDATE(Parameters!visibleBaseLineDate.Value)

标签: sql-server tsql datetime reporting-services


【解决方案1】:
select CONVERT(NVARCHAR,getdate(),21) as dtValue
//output will be ===> 2016-04-13 08:32:16.697

更新

如果您想在另一个数据集(执行您的商店产品)中使用该选定值,您可能需要这样做:

然后你可以在你的查询中使用这个@param1。

something = @param 或设置 @baselineDate = @param

【讨论】:

  • 这让我更近了一步,不幸的是它刚刚揭示了更奇怪的行为。请查看更新。
  • @ExceptionLimeCat getdate() 只是我查询的一个示例,您的基线值应该来自 storeprod?然后将其转换为 ==> CONVERT(NVARCHAR,baselineDate,21) as baselineDate
  • 不,您是正确的,但下拉列表中的该值未传递给存储过程。 NULL 被传递.. 即使它是不允许的,并且我有一个文本框被填充为所选值
  • 您的意思是下拉选择的值将触发另一个数据集,该数据集将执行您的商店产品?
  • 不喜欢:选择值 -> 单击查看报告,但它传递 null 未选择的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2016-05-28
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多