我需要在ASP.NET中编写动态报表生成器,我应该从哪里开始?

时间:2012-12-28 21:51:10

标签: javascript asp.net sql sql-server report

我的任务是创建一个动态报表生成器来扩展我们当前的产品,这样我们的用户可以相对轻松地配置一个有用的报表,从他们输入到系统中的数据中提取数据。目前我们手动定制这些报告,此过程涉及开发人员(我)采用报告的要求(字段,总计,百分比等)并将结果发布为相对交互的页面,以便能够“向下钻取” '以获取记录行中的更多信息等。

这些报告并不是非常复杂,但它们足够参与,以编程方式生成这些报告似乎不可能。我觉得创建一个界面,允许用户自定义报告的外观不应该太困难,尽管它本身就涉及到。我不知所措的是如何创建一个界面,允许完全没有“编程”读写能力的用户轻松生成可以提取所需信息的SQL查询。

事实上,他们需要能够创建这些查询并访问其输入数据的大小,而不必知道他们真正在做什么。我觉得要按照要求工作,报告的生成必须与魔法尽可能无法区分。用户应该能够从可能的数据集中拖放他/她所需的内容并神奇地生成报告。

我当然要接受挑战,但我真的不知道从哪里开始。一旦我开始移动齿轮,解决个别问题将是“容易的”(实际上更像是过程的一部分),但是起步一直是挑战和令人沮丧的。如果有人可以为我提供搜索方向,我不会害怕投入时间。感谢您的时间,我期待着一些积极的建议。

6 个答案:

答案 0 :(得分:4)

我以前的任务是这样的。我的建议:不要。除非所需的报告非常基本且您的用户不关心报告的外观,否则需要花费大量时间来实施。如果您指明了一个人的团队,那就不要了。你(甚至从长远来看)聘请一名初级开发人员或实习生或其他人来处理这部分工作会更便宜。

现在,有一些不同的报告设计师。我没有在网页上看到任何完全的工作,并且从非程序员的角度来看,所有这些工作都非常糟糕。

现在,有办法解决这个问题。大多数想要这些类型的报告的人都知道如何使用Microsoft Access。您可以利用他们的知识让他们创建自己的报告。这不是微不足道的,因为您不希望它们只是连接到您的数据库。所以,这就是我的建议:

  1. 生成与Access兼容的可下载数据库
  2. 确保下载的数据库“易于”处理。这意味着复制数据并对许多事情进行非规范化
  3. 确保您不会在可下载数据库中留下任何敏感内容(密码,他们不应该看到的内部内容等)
  4. 最后,确保他们能够以安全的方式下载并且性能良好。您可能需要告诉您的用户,可下载的数据库每周或每月只会“同步”一次,因为实时同步它可能相对昂贵

答案 1 :(得分:4)

查看数据仓库的作用(例如The Data Warehouse Toolkit)。它们创建了几个非常宽的基本表,包含大量冗余数据并涵盖了数据库的某个方面。

我会创建几个这样的宽视图,让用户选择一个视图作为动态报告的基础。然后,他们可以选择要显示的列,排序和分组。但他们无法选择任何额外的表格或观点。

当然,典型视图必须涵盖有关数据库某个方面的所有内容。假设您有订单商品视图。这样的视图将包含所有订单的所有项目,包括数百列:

  • 订单产品ID,产品名称,正常价格,折扣,付费价格,含价格。相关部分的运费等。
  • 订单ID,订单日期,交货日期,运费等。
  • 客户ID,客户名称,客户地址等。
  • 每个日期由以下几列组成:完整日期,一年中的一天,一个月,一年,四分之一,一年中的季度等。
  • 每个地址包括完整地址,城市,州,地区,区号等。

这样,动态报告相当容易使用,因为用户不需要加入任何表,但拥有他们需要的所有数据。

答案 2 :(得分:2)

我建议您查看现成的报告组件。例如Microsoft's Reporting ServicesTelerikDevExpress或(我应该承认,我们的产品)SharpShooter Reports

答案 3 :(得分:1)

开始四处寻找,有什么样的报告工具?那里有什么东西甚至接近他们期待的东西吗? 周围的工具将是通用的,您的情况可能相当具体。您已经知道用户正在寻找的部分答案。 你的解决方案应该以这种方式帮助他们。

你使用了“魔法”这个词。这应该是一个巨大的警告信号。作为开发人员,我们不做 magic ,我们做逻辑。我们可以制造幻想,我们不能做魔术。

我会深入研究Sql Analysis Services和Excel。 有一个演示文稿over here。这些家伙也不做魔术,但他们能够做很多事情。

答案 4 :(得分:0)

我们使用EasyQuery和FastReport.NET的组合。

EasyQuery允许我们的用户构建动态查询并提取报告和FastReport所需的数据 - 用于生成实际报告并将其导出到Excel或PDF。

答案 5 :(得分:0)

看看zpmsoftware.com。它具有用于ASP.NET MVC的开源报告生成器,并输出到屏幕,excel和pdf。适应Webform并不麻烦。由于大多数花哨的东西都在jquery / javascript中,因此应该可以适应其他服务器环境。