我在报告服务方面遇到了很大麻烦。 我需要使用带有2个参数(2个id)的存储过程。 如果填充第一个参数,则启动SELECT。 如果填充了第二个参数,则启动另一个SELECT。
CREATE Procedure apGetEvrPourRapport
@id_exu int, @id_exd int
AS
BEGIN
IF isnull(@id_exu, 0) > 0
print 'id_exu : ' + cast(@id_exu as nvarchar(16))
BEGIN
EXEC apReport_Extrait_Lecture_Filtre @id_exu, null
END
-- Cas du document unique et document de travail
IF isnull(@id_exd, 0) > 0
print 'id_exd : ' + cast(@id_exd as nvarchar(16))
BEGIN
--EXEC another sp
END
END
在Report Services的数据中,当我通过感叹号填充正确的参数时,我检索到了良好的SELECT,但在Dataset View中,我只检索了第二个SELECT,因此预览失败:(
如何设置数据集以考虑SELECT的这个开关?
感谢您的帮助。
答案 0 :(得分:0)
一个月前我做到了这一点。
您需要做的是使用报告的“数据集”节点的“字段”节点手动将字段添加到XML,然后使用其所有参数调用存储过程。您将希望隐藏任何在特定方案中无法获得值的列,或者它们将显示“#ERROR”。
<Field Name="status">
<DataField>status</DataField>
<rd:TypeName>System.Byte</rd:TypeName>
</Field>
<Field Name="longname">
<DataField>longname</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="name">
<DataField>name</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
您将无法再次在设计器中修改数据集,否则将消除您的字段和/或不保存。但是,您仍然可以在设计器中修改报表的其他部分。