显示SSRS报告作者

时间:2018-03-13 15:38:04

标签: reporting-services

在SSRS中有一个名为Author的报告属性。

pointing out report

我试图在文本框的报告底部显示作者。我尝试了以下方法:

="Report Created By " & Globals!Author

但它没有用。请告诉我这里缺少的东西。

1 个答案:

答案 0 :(得分:0)

我不认为此数据在报表生成器中公开,但是,如果您想维护自定义程序集并将其嵌入报表中,那么您可以使用下面的代码并添加以便报表调用'自定义代码。

  1. 创建类似于下面的引用Microsoft.SqlServer.ReportingServices2010的类库项目。

    toto
  2. 在报告中包含程序集。

  3. 一旦程序集在报表服务器上并由报表引用,那么您可以在报表自定义代码中创建一个包装函数,类似于:

    using RS = Microsoft.SqlServer.ReportingServices2010;
    
    public class MicrosoftReportingService //: IReportService
    {
         private RS.ReportingService2010 _service=new RS.ReportingService2010();
    
         public void CheckConnection()
         {
             _service.Url = <SSSR_ENPOINT>;
             NetworkCredential credentials = new NetworkCredential(<USER_NAME>,<PASSWORD>,<DOMAIN>);
             _service.Credentials=credentials;           
          }
    
         private List<RS.CatalogItem> GetReportsInFolder(string path)
        {
            CheckConnection();
            RS.CatalogItem[] reportItems = _service.ListChildren(path, true);
            List<RS.CatalogItem> result = new List<RS.CatalogItem>();
            foreach (RS.CatalogItem reportItem in reportItems)
                if (reportItem.TypeName == "Report" || reportItem.TypeName == "LinkedReport")
                    result.Add(reportItem);
            return result;
        }
    
        public CatalogItem GetReportData(string reportPath, string reportName)
        {
            List<RS.CatalogItem> reportItems = GetReportsInFolder(reportPath);
            return reportItems.Where(p=>p.Name==reportName).FirstOrDefault();
        }
    
        public string GetReportAuthor(string reportPath, string reportName)
        {
            CatalogItem item = GetReportData(reportPath,reportName);
            return (item == null) ? "" : item.CreatedBy;
        }
    }
    
  4. 最后,您可以将代码嵌入到表达式中。

    Public GetReportAuthor(reportPath As String, reportName As String) As String
        Dim rs As New MicrosoftReportingService()
        Return rs.GetReporAuthor(reportPath, reportName)
    End Procedure