9

我想在标题中使用子报告,因为它被用于许多报告。但是,子报告不会进入标题,字段值也不会。虽然,参数会很好。

有关如何绕过此问题的任何建议或参考?

4

6 回答 6

4

我用另一种方式解决了这个问题。

创建了一个包含页眉和页脚的报告。

然后对于我们需要的每个报告,我们只需创建一个子报告。

我知道它远非完美。但它适用于我们的报告。

另一种选择是创建一个程序集,将数据泵入标题中的字段。如果标题中没有太图形化的内容,则可以正常工作...

于 2009-10-19T15:32:12.970 回答
3

我遇到了完全相同的问题。几个小时后,我找到了解决方案(没有子报告)。

在 SSRS 2012 中存在“矩形”。我从未真正研究过它,因为我认为它只是用于图形用途。事实上,您可以在其中对多个元素进行分组。您可以发布为Reportpart的整个矩形。您可以在其他报告中使用此报告部分,甚至可以在页眉或页脚中使用。

于 2012-07-02T09:28:39.010 回答
1

在页眉或页脚的母版页级别使用Globals!PageName内置字段,然后PageName在每个子报表中定义值。这将允许页眉或页脚随变量中定义的字符串值而PageName变化。

例如:将页脚文本框设置为: [&PageName]=Globals!PageName

在母版页调用的每个子报表中,将PageName值定义为:

<PageName>This is the Dynamic Page Footer String.  You can include subreport names, or any dynamic subreport text here </PageName>

PageName在子报表中的代码视图中,在该部分正下方的 tablix 定义中设置了值:

<DataSetName>YourDataSetName</DataSetName> 

有关您可以使用的全局变量的更多详细信息,请查看:
https ://msdn.microsoft.com/en-us/library/dd255216.aspx

于 2016-06-28T17:22:15.007 回答
0

一个建议可能有助于有限的情况子集:您可以使用数据集中的默认值填充参数,并在标题中使用该参数。当然,这一次只能为您获取一个字段/值,但是如果您只需要将数据库中的一两个项目放入您的标题中,这可能是一个不错的解决方法。

于 2012-08-30T05:30:19.077 回答
0

从这个答案中得到了想法: https ://stackoverflow.com/a/57991114/11829240

不能真正把它贴在那里,因为主题是关于 rdlc 的,它只是客户端。但我会说它适合这里。

创建一个图像,将其大小设置为按比例匹配,使用以下 url:

http://*reportserverUser*:*reportserverPassword*@*ssrsHost*/ReportServer?%2f*reportName*&rs:Command=Render&rs:Format=IMAGE&rc:OutputFormat=BMP&rc:dpix=1000&rc:dpiy=1000

&rs:Format=IMAGE给我一张图片。

&rc:OutputFormat=BMP作为 BMP,因为报告无法处理 TIFF。

&rc:dpix=1000&rc:dpiy=1000给我一个更高的分辨率,这样它就不会难看

编辑:似乎在 VisualStudio 中本地工作,但不在 ReportServer 上。可能必须为身份验证创建自定义 DLL。

编辑2:

[System.Security.SecuritySafeCritical]
[WebPermission(System.Security.Permissions.SecurityAction.Assert, Unrestricted = true)]
public static string GetReport(string reportname)
{

    // request file permission for config-file
    FileIOPermission f = new FileIOPermission(FileIOPermissionAccess.Read, @"c:\ssrs\ssrsutils_auth.txt");
    f.Assert();

    // BASE-URL\tusername\tpassword
    var config = File.ReadAllText(@"c:\ssrs\ssrsutils_auth.txt");

    // Get BASE-URL and insert reportname into {0} placeholder
    var str = string.Format(config.Split('\t')[0], reportname);
    var requestUri = new Uri(str);

    // Set Credentials according to configuration
    NetworkCredential nc = new NetworkCredential(config.Split('\t')[1], config.Split('\t')[2]);

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestUri);

    request.Credentials = nc;

    // Give me an Image object
    var img = Image.FromStream(request.GetResponse().GetResponseStream());

    // and return as Base64
    return GetBase64(img);
}

private static string GetBase64(Image image)
{
    using (MemoryStream m = new MemoryStream())
    {
        image.Save(m, ImageFormat.Png);
        byte[] imageBytes = m.ToArray();
        return Convert.ToBase64String(imageBytes);
    }
}

然后将图像源设置为数据库,使用以下表达式:

=*Project*.*Class*.GetReport("*ReportName*")

Mime Type to image/bmp,你就可以开始了

示例配置c:\ssrs\ssrsutils_auth.txt(将 [TAB] 替换为实际的 \t - ASCII 09):

http://*ssrsHost*/ReportServer?%2f{0}&rs:Command=Render&rs:Format=IMAGE&rc:OutputFormat=BMP&rc:dpix=1000&rc:dpiy=1000[TAB]username[TAB]password

顺便提一下,SSRS 处理 CAS 的方式。 https://stackoverflow.com/a/61816621/11829240

于 2021-08-04T13:35:01.897 回答
0

SSRS 将不允许子报表进入标题。我遇到过这个问题,我想我有一个解决方案。将子报表添加为附加数据集,并将响应放入文本框中。这个对我有用...?

于 2017-01-11T14:28:30.393 回答