MVC 中的水晶报表

Posted

技术标签:

【中文标题】MVC 中的水晶报表【英文标题】:Crystal Reports in MVC 【发布时间】:2012-02-02 12:07:35 【问题描述】:

好的,所以我正在为我工​​作的公司构建一种报告中心,其中最简单的部分是构建一个基于 Web 的文件浏览器,现在我将继续研究它的报告方面并开始它,我正在集成 Crystal Reports。 我已经从 SAP 网站为他们获取了文件,但我遇到了一些问题,

首先,我找到的所有示例都使您必须定义数据源/数据库,并在代码中包含它的登录信息。这是一个问题,因为我们有很多水晶报表,有很多不同的数据库引用,所以我不能只为所有这些报表使用一个。事实上,有报道称我们同时使用该引用的多个数据库。

其次,我发现的所有示例都表明您必须为每个报告创建一个特定页面。我的目标是能够将报告链接作为变量,并为我们拥有的所有报告提供一页。

我昨天看了所有能找到的东西,但找不到我需要的东西。我也想知道 ReportClass.Load 函数到底是做什么的。在我能找到的每个示例中,我都没有注意到我使用它时所拥有的 ReportClass 有任何明显的差异。

在搜索时,我找到了一个答案,建议构建一个 Web 表单应用程序来构建报表,然后使用 I-Frame 来抓取它,但这是我想要避免的事情。

所以在审查中:

1) 我需要构建 Crystal Reports 而无需引用数据库

2) 我需要它通过仅提供 .rpt 文件的路径来灵活处理变量报告

3) 我希望它在单个应用程序中,在 MVC 中,并避免 IFrames

非常感谢您的帮助!!

编辑:我找到了适合我的解决方案。我没有使用 RAZOR 视图,而是使用了 ASPX 视图,它的工具箱中有 Crystal Reports Viewer Tool。为了使其可变,我使用了 ViewBag。

控制器代码:

[HttpGet]
    public ActionResult Viewer(string Path)
    
        var sessionID = Session.SessionID;
        ViewBag.Path = newPath;
        return View();
    

ASPX 查看代码:

    <% Report.Report.FileName = ViewBag.Path; %>
    <CR:CrystalReportViewer ID="Viewer" runat="server" AutoDataBind="True" GroupTreeImagesFolderUrl="" Height="100%" ReportSourceID="Report" ToolPanelWidth="200px" Width="100%" />
    <CR:CrystalReportSource ID="Report" runat="server">
        <Report></Report>
    </CR:CrystalReportSource>

【问题讨论】:

我很乐意,从现在开始这可能是一个很好的解决方案,事实上我计划在最终项目中添加 s-s-rS 报告和 Excel 报告的功能,但我们已经有数百个已经制作了水晶报表,我只是为它们制作查看器。尝试重做它们将花费太长时间。我们现在更倾向于使用 s-s-rS 报告,但我们仍然需要 Crystal 中已有的绝大多数报告。并感谢您的帮助! 是的,我忽略了你帖子中关于现有报告的部分,所以我删除了我的评论:) 我不知道第 2 点和第 3 点,但第 1 点在 Crystal、s-s-rS 或我知道的任何其他报表设计器中是不可能的 - 你应该如何向报表添加字段如果您无法确定这些字段是什么? (您应该能够在不访问数据库的情况下修改现有报告的布局,但不能从头开始构建它们。) 因为关于数据库的信息应该存储在水晶报表本身中。因此,我不需要告诉它在哪里查看或任何登录信息。 【参考方案1】:

有人问了here 的“类似”(不准确)问题。希望这能让你走上正确的道路。

【讨论】:

【参考方案2】:

1) 我需要构建 Crystal Reports 而无需引用数据库

您是否考虑过为您的报告和分析需求构建数据仓库?与传统的报告结构相比,数据仓库有很多好处,尤其是在从多个来源提取数据时。

关于第 2 点和第 3 点,您是否认为水晶报表可能根本不是最理想的报表解决方案?

Crystal 报告是一个强大的工具,但老实说,当它通过 Internet 或 Intranet 提供报告情报时,我并不是它的忠实粉丝。

您考虑过切换工具吗?例如,http://www.tableausoftware.com/ 提供了一些出色的数据可视化工具,而 IMO 对您所描述的工作来说是一个更好的工具。

请注意,这只是一种工具(因为那里有很多工具),但我有一些经验,它超出了我们的预期,尤其是当它位于数据仓库之上时。

【讨论】:

以上是关于MVC 中的水晶报表的主要内容,如果未能解决你的问题,请参考以下文章

如何用VB.NET做水晶报表?

C#怎么生成水晶报表

winform 中crystalReport报表1对多设计

在水晶报表中添加记录数

Winform中怎么使用水晶报表?

Visual Studio 2010 里面的水晶报表怎么弄?