我的任务是创建一个动态报表生成器来扩展我们当前的产品,这样我们的用户可以相对轻松地配置一个有用的报表,从他们输入到系统中的数据中提取数据。目前我们手动定制这些报告,此过程涉及开发人员(我)采用报告的要求(字段,总计,百分比等)并将结果发布为相对交互的页面,以便能够“向下钻取” '以获取记录行中的更多信息等。
这些报告并不是非常复杂,但它们足够参与,以编程方式生成这些报告似乎不可能。我觉得创建一个界面,允许用户自定义报告的外观不应该太困难,尽管它本身就涉及到。我不知所措的是如何创建一个界面,允许完全没有“编程”读写能力的用户轻松生成可以提取所需信息的SQL查询。
事实上,他们需要能够创建这些查询并访问其输入数据的大小,而不必知道他们真正在做什么。我觉得要按照要求工作,报告的生成必须与魔法尽可能无法区分。用户应该能够从可能的数据集中拖放他/她所需的内容并神奇地生成报告。
我当然要接受挑战,但我真的不知道从哪里开始。一旦我开始移动齿轮,解决个别问题将是“容易的”(实际上更像是过程的一部分),但是起步一直是挑战和令人沮丧的。如果有人可以为我提供搜索方向,我不会害怕投入时间。感谢您的时间,我期待着一些积极的建议。
答案 0 :(得分:4)
我以前的任务是这样的。我的建议:不要。除非所需的报告非常基本且您的用户不关心报告的外观,否则需要花费大量时间来实施。如果您指明了一个人的团队,那就不要了。你(甚至从长远来看)聘请一名初级开发人员或实习生或其他人来处理这部分工作会更便宜。
现在,有一些不同的报告设计师。我没有在网页上看到任何完全的工作,并且从非程序员的角度来看,所有这些工作都非常糟糕。
现在,有办法解决这个问题。大多数想要这些类型的报告的人都知道如何使用Microsoft Access。您可以利用他们的知识让他们创建自己的报告。这不是微不足道的,因为您不希望它们只是连接到您的数据库。所以,这就是我的建议:
答案 1 :(得分:4)
查看数据仓库的作用(例如The Data Warehouse Toolkit)。它们创建了几个非常宽的基本表,包含大量冗余数据并涵盖了数据库的某个方面。
我会创建几个这样的宽视图,让用户选择一个视图作为动态报告的基础。然后,他们可以选择要显示的列,排序和分组。但他们无法选择任何额外的表格或观点。
当然,典型视图必须涵盖有关数据库某个方面的所有内容。假设您有订单商品视图。这样的视图将包含所有订单的所有项目,包括数百列:
这样,动态报告相当容易使用,因为用户不需要加入任何表,但拥有他们需要的所有数据。
答案 2 :(得分:2)
我建议您查看现成的报告组件。例如Microsoft's Reporting Services,Telerik,DevExpress或(我应该承认,我们的产品)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中,因此应该可以适应其他服务器环境。