简体   繁体   English

SSRS-用于参数中传递的多个值的多个Tablix

[英]SSRS - Multiple tablix for multiple values passed in parameter

So, I've posted a question few days ago here where I had a @Sem_ID parameter and I had to pass multiple IDs separated by a delimiter. 因此,几天前,我在这里发布了一个问题其中我有一个@Sem_ID参数,并且我必须传递多个由分隔符分隔的ID。 I found solution but it only works when I have one dataset. 我找到了解决方案,但是只有当我有一个数据集时它才起作用。 The problem now is that my report has 3 tablixes and 3 datasets, one dataset for each tablix. 现在的问题是我的报表包含3个Tablix和3个数据集,每个Tablix都有一个数据集。

What I tried: I created aa tablix and inserted a rectangle element inside row. 我尝试了什么:我创建了一个tablix,并在行内插入了一个矩形元素。 I moved a grid inside the rectangle and then tried running the report but received an SSRS error while previewing: The Value expression for the text box 'Textbox10' refers to the field 'Kondition'. 我在矩形内移动了一个网格,然后尝试运行该报告,但是在预览时收到了SSRS错误: 文本框'Textbox10'的Value表达式引用了字段'Kondition'。 Report item expressions can only refer to fields within the current dataset scope or, if inside an aggregate, the specified dataset scope. 报表项表达式只能引用当前数据集范围内的字段,或者如果引用了集合,则引用指定的数据集范围内的字段。 Letters in the names of fields must use the correct case. 字段名称中的字母必须使用正确的大小写。

For example, each of these two queries represent a dataset, so two datasets: 例如,这两个查询中的每一个代表一个数据集,因此两个数据集:

SELECT Sem_ID, Sem_KW, Sem_Jahr, Sem_SemNrKata, Sem_von, Sem_bis, h.chr_name, h.chr_ort
FROM acc_seminar.t_Seminar
JOIN dbo.tbl_hotel h ON Sem_Ht_ID=h.pk_hotel
WHERE Sem_ID IN (SELECT value  
FROM fn_Split(@Sem_ID, ';')  
WHERE RTRIM(value) <> '') AND (Sem_SemTh_ID != 76 AND Sem_Sto = 0)

and second dataset: 和第二个数据集:

SELECT tu.TU_Name AS Name, tu.TU_Vorname AS Vorname, ParkgebuehrBrutto AS Preis
FROM acc_seminar.t_Teiluber_Ext tux
JOIN acc_seminar.t_Teiluber tu ON tux.TeiluberId = tu.TU_ID
JOIN acc_seminar.t_Seminar s ON tu.TU_Sem_ID = s.Sem_ID WHERE s.Sem_ID IN (SELECT value  
FROM fn_Split(@Sem_ID, ';')  
WHERE RTRIM(value) <> '')  AND ParkgebuehrBrutto IS NOT NULL

So if I pass a @Sem_Id = 123;456 , how do I then show two grids for Id=123 and then for Id=456 ? 因此,如果我通过@Sem_Id = 123; 456,那么我该如何显示两个网格分别用于Id = 123和Id = 456?

Few Observations: You cannot move another Tablix for Dataset1 to Tablix (Rectangle) Dataset2. 很少观察到:您不能将Dataset1的另一个Tablix移动到Tablix(矩形)Dataset2。 They are different. 他们是不同的。 You could use SubReport wherein Inside Tablix 1 you have SubReport which uses Dataset2 and shows it's data. 您可以使用SubReport,其中在Tablix 1内有使用Dataset2并显示其数据的SubReport。 Second: 第二:

Your Use Case can be very well solved with Sub-reports. 您的用例可以通过子报表很好地解决。 How?? 怎么样?? Pass your Sem_ID as parameter to SubReport provided your Dataset2 (subreport) does conatin Sem_Id field. 将您的Sem_ID作为参数传递给SubReport,前提是您的Dataset2(子报表)确实包含Sem_Id字段。

Few Links for help http://t-xie.net/2016/05/17/ssrs-pass-multiple-value-parameter-to-sub-report/ https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/dd220581(v=sql.105) 很少有帮助的链接http://t-xie.net/2016/05/17/ssrs-pass-multiple-value-parameter-to-sub-report/ https://docs.microsoft.com/en-us/以前的版本/ SQL / SQL服务器-2008-R2 / dd220581(v = SQL.105)

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM