何时使用 RDLC 而不是 RDL 报告?

2023-11-30

过去几周我一直在研究 SSRS 2005 / 2008,并创建了一些服务器端报告。对于某些应用,一位同事建议我针对特定情况研究 RDLC。我现在正在尝试了解 RDL 和 RDLC 之间的主要区别。

搜索这些信息最多只能得到零散的信息。我了解到:

  • RDLC 报告不存储有关如何获取数据的信息。
  • RDLC报告可以直接由ReportViewer控件执行。

但我仍然不完全理解RDLC文件和其他相关系统(报表服务器、源数据库、客户端)之间的关系。

为了更好地掌握 RDLC 文件,我想知道它们的使用与 RDL 文件有何不同,以及在什么情况下会选择 RDLC 而不是 RDL。也欢迎提供资源链接。

Update:

A ASP.NET 论坛上的主题讨论同一问题。从中,我对这个问题有了更多的了解。

RDLC的一个特点是它可以运行完全客户端在 ReportViewer 控件中。

  • 这消除了对 Reporting Services 实例的需要,甚至消除了对任何数据库连接的需要,但是:
  • 它增加了必须手动提供报告中所需数据的要求。

这是优点还是缺点取决于特定的应用。

在我的应用程序中,无论如何都有一个 Reporting Services 实例可用,并且可以轻松地从数据库中提取报告所需的数据。我还有什么理由考虑 RDLC,还是应该坚持使用 RDL?


根据我的经验,这两件事需要考虑的事情很少:

I. RDL 报告一般为 HOSTED 报告。这意味着您需要实施 SSRS 服务器。它们是来自 SQL Server 的 Visual Studio 的内置扩展,用于报告语言。当您安装 SSRS 时,您应该有一个名为“Business Intelligence Development Studio”的附加组件,使用报告比没有它更容易。

R eport

D定义

L angauge

RDL 报告的优点:

  1. 您可以将报告托管在为您运行服务的环境中。
  2. 您可以在项目或继承级别上配置安全性,以将安全性作为独立概念来处理
  3. 您可以配置该服务来发送电子邮件(前提是您有可以访问的 SMTP 服务器)并按计划保存文件
  4. 您有一个通常称为“ReportServer”的数据库,您可以在发布后查询有关报告的信息。
  5. 您仍然可以通过使用 ASP.NET、WPF(带有 winform 控件 bleh!)或使用“ProcessingMode.Remote”的 .NET 中的 Winform 编写的客户端应用程序中的“ReportViewer”来访问这些报告。
  6. 您可以设置用户可以看到和使用的参数以获得更大的灵活性。
  7. 您可以将报表的一部分配置为用于连接字符串的“数据源”,也可以将 SQL 查询、XML 或其他数据集配置为“数据集”。这些部分和其他部分可以被存储和配置为定期缓存数据。
  8. 您可以编写服务 http:// /ReportServer/ReportingService2010 或 /ReportExecution2005 的 .NET 代理类。然后,您可以在 .NET 中编写自己的方法,用于直接通过代码托管 SSRS 报告的服务器的服务通过电子邮件发送、保存或操作 SSRS 数据。使用 ReportService2010.asmx 以编程方式从共享点导出 SSRS 报告

缺点:

  1. 与其他东西相比,SSRS 在快速启动方面有点不稳定。大多数人对安全策略和将报告设计为 VS 的“附加”感到困惑。 SQL 2005 = VS BIDS 2005,SQL 2008 = VS BIDS 2008,SQL 2012 = VS BIDS 2010(笑)。
  2. 继续 1 恕我直言,安全设置策略过于复杂。有服务器安全性、数据库安全性和角色,以及为服务托管的页面上的两个安全设置。大多数人只设置了一个管理员,却无法进入,并想知道为什么其他用户不能进入。根据我的经验,关于 SSRS 最常见的投诉或问题与进入有关。
  3. 您可以使用“表达式”来“增强”您的报告。很多时候,你做的事情太多了,你的报告的性能就会变得很低。
  4. 您可以做并导出一定数量的事情。据我所知,如果没有 javascript hack,SSRS 就不会悬停在报告上。
  5. 速度和性能可能会受到影响,因为愚蠢的 SSRS 配置会回收系统,并且第一份报告有时可能需要一段时间才能加载站点。您可以通过更改它来解决这个问题,但我发现为其提供保持活动服务效果更好。

二. RDLC 报告是客户端包含的报告,不在任何地方托管。名称中额外的 c 表示“客户端”。通常,这是 RDL 语言的扩展,仅在 Visual Studio 客户端应用程序中使用。当您添加“报告”项时,它就存在于 Visual Studio 中。

RDLC 报告的优点:

  1. 您可以更轻松地将 wcf 服务连接到数据集。
  2. 您可以更好地控制数据集,并且可以直接使用填充有实体框架对象或 ADO.NET 的 POCO 类以及表本身。您可以在将数据绑定到报告之前对数据进行优化。
  3. 您可以直接在代码后面添加附加组件来自定义外观。

缺点:

  1. 您需要自己处理参数,虽然您可以实现包装器方法来帮助跑腿工作,但不幸的是,这比预期的要多一些。
  2. 用户无法查看“ReportViewer”控件中的参数,除非它处于远程模式并访问 RLD 报告。因此,您需要在控件外部自己制作文本框、下拉菜单、单选按钮以传递给它。有些人喜欢这样加控制,我个人不喜欢。
  3. 任何您想要为分发报告提供服务的事情都需要您自己构建。发送电子邮件、订阅、保存。抱歉,您需要在 .NET 中构建它,否则实现一个已经从上面执行此操作的代理,您可能只是使用托管报告。

老实说,我出于不同的目的都喜欢两者。如果我想要向分析师提供一些他们一直使用的东西,并调整图形、图表、向下钻取并导出到 Excel,我会使用 RDL,并且让 SSRS 的站点完成处理电子邮件分发的所有跑腿工作。如果我想要一个具有报告部分的应用程序,并且我知道该应用程序是它自己的具有规则和治理的模块,我会使用 RDLC 并让参数更小,并由用户在进入报告部分之前做出的决策驱动他们所在的客户和网站,然后他们通常只是选择一个时间范围或类型,仅此而已。因此,一般来说,复杂的报告我会使用 RDL,而对于简单的报告,我会使用 RDLC 恕我直言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 RDLC 而不是 RDL 报告? 的相关文章

  • 使用 Visual Studio 2008 编辑 RDL 文件

    我已在两个工作站上安装了 SQL Server 2008 Express 在一台工作站上 它更新了 VS2008 安装 以便我可以创建包含 rdl 文件格式的报告的报告项目 在其他工作站上 VS2008只能创建 编辑 rdlc文件 报告编辑
  • 尚未为 Microsoft 报告服务中的数据源“Product_Detail”提供数据源实例

    我正在尝试在报告中显示记录 数据位于数据集中 但这与他们无关 当表单加载时 它会显示报告布局 但是当我点击按钮时它显示错误 下面是我的代码 using Microsoft Reporting WinForms
  • 如何让子组跨越三列?

    我正在尝试做什么 在我的报告中 我试图在 tablix 中获取一些基本数据 在这个 tablix 中有一个主要的summary行和detail里面有行 我想要做的是将详细信息放在子行中 但分为三列 例如我的 tablix 现在看起来像这样
  • 每行都有不同的钻取

    我有一份 SSRS 报告 其中包含多个级别的深入研究 数据针对顶级视图进行聚合 但我需要根据其中一列的类型显示不同的向下钻取报告 Eg 表 1 苹果 Name Cost Fuji 1 5 Gala 3 5 表 2 南瓜 Name Cost
  • SSRS - 如何使 IIF 语句忽略无效值

    我正在使用 Business Intelligence 2008 在 SSRS 中创建一个表 我有一个日期 作为字符串 作为表中使用的值之一 该值可能有一个表示日期的字符串 也可能为空 如果它有一个值 我希望该值以不同的方式格式化 现在 我
  • 从功能区按钮触发报告

    我有几个自定义报告 我希望能够向功能区添加触发它们的按钮 是否可以 如果是这样 任何例子都会很棒 提前致谢 要从功能区按钮运行报告 您需要创建一个 js 文件 其中包含将从按钮调用的函数 你需要 4 样东西 rdlName rdl 文件名
  • 隐藏和删除 ssrs 报告中标题的空白

    我正在研究一个ssrs报告 我可以隐藏最后一页上的标题 IIF Globals PageNumber Globals TotalPages 1 or Globals PageNumber Globals TotalPages true fa
  • 如何合并 SQL Server Reports RDL 中具有相同值的行(特定列)?

    我是在 BIDS 中使用 RDL 来使用 SQL Server 2005 报告服务的新手 我需要修改现有报告 以便可以合并相邻行中的单元格 这些单元格对于该特定列具有相同的值 例如 考虑这是从报告 RDL 使用的存储过程返回的表 Id Su
  • 子查询返回超过 1 个值。当子查询时这是不允许的

    我正在尝试使用 SQL 从 SCCM 返回 Windows 更新合规性数据 我已从内置 SSRS 报告中提取了查询 我没有为每个 colname 计算机组 运行单独的查询 而是尝试通过将 colname 声明为表并插入多个值来合并为一个查询
  • 将报告 (RDLC) 设置为横向打印和 A4

    有没有办法将 RDLC 报告设置为始终横向并始终使用 A4 而无需每次通过打印对话框手动执行此操作 我已经在这个问题上呆了几个小时了 谷歌搜索后什么也没有出现 事实上 有没有办法跳过打印对话框本身 TIA 您当然可以避免打印对话框并直接打印
  • 在矩阵 SSRS 中填充空日期

    我正在尝试找到一种方法来填充矩阵中没有数据的日期 我现在拥有的如下 但我也想显示之间的所有日期 我尝试了几种不同的 iif 语句 但要么出现错误 要么没有变化 SELECT ee No TTMain CustFn me Date Opene
  • SSRS 计算行组和列组的计数

    我正在构建案例结果报告 其中对行组和单列分组进行父子分组 Parent Row Group Location 子行组 结果 列组 月份 报告中贯穿的是一年中的月份 报告中贯穿的是位置以及给定月份中该位置的不同结果细分 看起来像这样 Jan
  • 无法加载文件或程序集“Microsoft.ReportViewer.ProcessingObjectModel,版本=10.0.0.0”

    使用 MVC5 和 rdlc 生成 pdf 它在本地主机中工作正常 但是当我尝试生成报告时将应用程序部署到服务器时 出现错误 某些组件丢失 webapp 应用程序中的服务器错误 Could not load file or assembly
  • 如何允许多个参数为空值

    我在 SSRS 报表生成器中的报表有多个参数 如果不需要选择 我希望所有参数都允许空白值 但是当我尝试运行报告时 第一个参数将允许空 空白值 并且它将提示我输入其余参数 有没有办法解决 Set Allow Blank Value and o
  • T-sql:获取列的总和

    我有一张如下所示的表 W1 W2 w3 Gold 10 2 3 Silver 3 1 1 但我需要一个结果 W1 W2 w3 Gold 10 12 15 Silver 3 4 5 有什么方法可以得到这个结果吗 Mysql查询 SELECT
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 添加ssrs报告描述

    无论如何 我可以添加一个在执行前显示在报告中的 ssrs 报告描述吗 我用谷歌搜索 大多数人说这是不可能的 但必须有一种方法来调整它 对吗 对于仍然需要添加用户可以在执行报告之前阅读的报告描述的任何人 我在我使用的两个 SSRS 版本 20
  • 如何修复错误 MC1000 未知构建错误,“找不到类型“System.Web.UI.TagPrefixAttribute”

    我有一个 WPF 项目 对于我正在使用的报告服务 Microsoft ReportingServices ReportViewerControl WebForms Microsoft ReportingServices ReportView
  • SSRS:如何在 ssrs 2008 r2 中创建类似数据透视表的报告 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions I need to create r
  • SSRS - 在特定组后添加分页符 - SQL Server 2008 R2

    有没有办法在第 n 组之后添加分页符 我有一个有两列的表 并按州分组 State Name MA Sarah Bob NY Jane TX Klein 我希望第三组 TX 有自己的页面 如何在特定组后添加分页符 由于您使用的是 2008R2

随机推荐

  • 自定义 EditorTemplate 未在 MVC4 中用于 DataType.Date

    我正在使用以下命令将 MVC3 应用程序升级到 MVC4来自微软的说明 一切都进行得相当顺利 除了我的一些日期模型属性现在呈现不同 例如 这些属性之一在视图模型中定义如下 Required ErrorMessage Required Dat
  • 当上游存在更改时,为什么 git status 显示分支是最新的?

    更改存在于跟踪分支的上游 但是当我输入时git status它表明我的本地分支机构是最新的 这是新行为吗 我是否更改了配置设置 或者出了什么问题 ubuntu host my repo git status On branch master
  • 占位符中的不同颜色[重复]

    这个问题在这里已经有答案了 我有一个带有占位符的输入字段 如下所示
  • OpenOffice Base 中的 sql 方言

    我熟悉 SQLite 和 MySQL 中的 SQL 但 OpenOffice Base 似乎要么非常瘫痪 要么我不明白如何执行原始 SQL 我想 有效地 这样做 INSERT INTO t2 SELECT NULL as id t foo
  • 如何确保编译时枚举开关的完整性?

    我有几个 switch 语句来测试enum All enum值必须在switch的陈述case陈述 在代码重构期间 可能会发生以下情况 enum收缩和增长 当 的时候enum收缩编译器会抛出错误 但如果enum成长 匹配状态被遗忘并产生运行
  • 在共享主机上显示 Laravel 存储的图像

    我已经在实时服务器上成功部署了我的第一个 Laravel 应用程序 一切看起来都很棒 除了我无法显示正在上传到的图像 myproject src storage app public myfolder1 folder 这是我在 HostGa
  • 如何将命令的输出插入批处理文件中的变量?

    在 Windows 上的批处理文件中 我想要一些变量具有以下输出dir b命令 如何实现这一目标 批处理文件不能很好地处理这个用例 我确实找到了一个描述使用临时文件的技术的线程
  • 规范与非规范终端输入

    我正在准备考试 我对 Unix 中规范与非规范输入 输出的工作方式感到困惑 例如 curses 我知道有一个缓冲区可以应用 行规则 来进行规范输入 这是否意味着非规范输入会绕过缓冲区 或者只是意味着不应用任何线路规则 此过程对于输入和输出操
  • 如何将文本转换为\x代码?

    我想将普通文本转换为 x 代码 例如 x14 x65 x60 例如 normal text base64 decode converted x codes for above text x62 141 x73 145 x36 64 x5f
  • Python用strptime解析日期

    我有以这种格式返回日期的网址 url date 2015 01 12T08 43 02Z 我不知道为什么会有字符串 将其获取为更简单 2015 01 1208 43 02 使用它来解析会更简单 datetime datetime strpt
  • 根据数组数量显示 div

    这是我的功能 function yyy hero image option callback hero options get option hero options count count hero options totalimg co
  • 在 C# DllImport 中使用 32 位或 64 位 dll

    情况如下 我在 dot net 应用程序中使用基于 C 的 dll 有 2 个 dll 一个是 32 位版本 称为 MyDll32 dll 另一个是 64 位版本 称为 MyDll64 dll 有一个静态变量保存 DLL 文件名 字符串 D
  • 如何在回收站视图android中选择多个项目?

    我想在回收器视图中选择多个项目 当选择它时 我想将该项目的复选框的可见性设置为可见 所以 只要我能够设置onlongClickListner使用接口和处理onLongClick片段中的事件 每当用户长按任何项目时 应用程序onCLick逻辑
  • 如何从 UIActivityItemSource 函数返回多个值

    是否可以从 UIActivityItemSource 函数返回多个值 并将它们传递给 UIActivityViewController 的 ActivityItems 我想返回 message image url 数组并传递给 Activi
  • 从 .NET 应用程序使用 OTRS TicketConnector

    我想消费OTRS 票务连接器 NET 应用程序中的 Web 服务 通常 连接到 Web 服务的最简单方法是通过 添加服务引用 导入其 WSDL 不幸的是 OTRS TicketConnector 不发布 WSDL 我找到了 TicketCo
  • 错误:[Errno 32] 当 paypal 回调 python django 应用程序时管道损坏

    您好 我正在与我的 django 应用程序进行 Papal 集成 我正在使用 svn 和 python 2 6 的最新版本 django 然而 我发现每次当 paypal 的沙箱访问我的通知 url 时 我都会收到 500 Errno 32
  • TSQL-Merge 中条件匹配时更新和插入

    我一直在尝试编写一个存储过程 在其中我可以使用具有以下条件的合并来执行 UpSert 如果记录存在 则将目标的结束日期更改为昨天的日期 当前日期 1 如果记录不存在则插入新记录 这是我在 SP 中使用的表 tblEmployee CREAT
  • 推/拉布局的问题

    我有一个简单的布局 带有侧边栏 col 3 和内容 col 9 3 9 我试图得到它 所以在 xs 一侧我的布局是 Content Sidebar 所以我尝试添加col xs push 12到侧边栏和col xs pull 12然而 对于内
  • 如何修改此正则表达式以获取测试字符串中的所有日期

    test string dated as of October 17 2012 when we went caroling dated as of December 21 2011 when we ate bananas import re
  • 何时使用 RDLC 而不是 RDL 报告?

    过去几周我一直在研究 SSRS 2005 2008 并创建了一些服务器端报告 对于某些应用 一位同事建议我针对特定情况研究 RDLC 我现在正在尝试了解 RDL 和 RDLC 之间的主要区别 搜索这些信息最多只能得到零散的信息 我了解到 R