SSRS-用于在参数

时间:2019-04-12 07:26:56

标签: reporting-services report

因此,我几天前here发布了一个问题,其中我有一个@Sem_ID参数,并且我必须传递多个由定界符分隔的ID。我找到了解决方案,但是只有当我有一个数据集时它才起作用。现在的问题是我的报表包含3个Tablix和3个数据集,每个Tablix都有一个数据集。

我尝试了什么:我创建了一个tablix,并在行内插入了一个矩形元素。我在矩形内移动了一个网格,然后尝试运行该报告,但在预览时收到了SSRS错误:文本框“ Textbox10”的Value表达式引用了字段“ Kondition”。报表项表达式只能引用当前数据集范围内的字段,或者如果引用了集合,则引用指定的数据集范围内的字段。字段名称中的字母必须使用正确的大小写。

例如,这两个查询中的每一个代表一个数据集,因此,两个数据集:

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)

和第二个数据集:

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

因此,如果我通过@Sem_Id = 123; 456,那么我该如何显示两个网格分别用于Id = 123和Id = 456?

1 个答案:

答案 0 :(得分:1)

很少有观察结果:您不能将Dataset1的另一个Tablix移动到Tablix(矩形)Dataset2。他们是不同的。您可以使用SubReport,其中在Tablix 1内有使用Dataset2并显示其数据的SubReport。 第二:

您的用例可以通过子报告很好地解决。怎么样?? 将您的Sem_ID作为参数传递给SubReport,前提是您的Dataset2(子报表)确实包含Sem_Id字段。

少量帮助链接 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)

enter image description here