在报表执行期间导出包含所有参数值的 txt 文件
Posted
技术标签:
【中文标题】在报表执行期间导出包含所有参数值的 txt 文件【英文标题】:export txt file with all parameter values during the report execution 【发布时间】:2014-03-03 11:26:17 【问题描述】:我在 Report Builder 3.0 中开发了一份报表,报表服务器是 SRSS 2008 R2。此报告有一个名为 id_product 的报告参数。有两个可用的数据集。一组数据用于填充报告表。在第二个数据集中,我试图导出 id_product。以下查询仅适用于单值参数 id_product,此查询用于第二个数据集 Report 在尝试同时为多个产品运行报告时会弹出错误。我查看了 SQL Profiler,似乎使用当前代码无法在全局临时表中插入参数值。
我知道名为 Join 的 VB 表达式,但在这种情况下,我不确定是否可以使用它。如果我能用这种表达方式就好了。这样我就不会再创建数据集了。
当前查询:
drop table ##SelectedValues
create table ##SelectedValues(id_product nvarchar(max))
insert into ##SelectedValues(@id_product)
exec xp_cmdshell 'bcp "select ''id_product''
union all select * from ##SelectedValues" queryout "G:\Report\sqloutput.csv" -c -T -t'
输入:ProductId 参数值:12、16、20
所需的 csv 输出:
id_product
12
16
20
【问题讨论】:
【参考方案1】:您可以使用将逗号分隔的字符串解析为表格行的拆分函数,也可以使用我最喜欢的动态 sql! :)
if object_id('tempdb..#SelectedValues') is not null
drop table #SelectedValues
create table #SelectedValues(id_product nvarchar(max))
declare @id_product nvarchar(max),@sql nvarchar(max)
set @id_product = '12, 16, 20'
set @sql =
'select ''' + replace(@id_product,', ',''' union all select ''') + ''''
insert into #SelectedValues(id_product) exec(@sql)
select * from #SelectedValues
【讨论】:
以上是关于在报表执行期间导出包含所有参数值的 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章