允许用户创建表的自定义查询

时间:2009-05-06 06:58:06

标签: c# datatable dataview

我正在编写一个生成单个大型信息表的程序。该表由两种类型的列组成,列包含数量,列包含属性。数量是可以求和的数值,属性是定义数值的定性值。

如果数据位于数据库的表中,我可以编写一个查询,选择特定的属性和数量,并对所选属性具有相同值的数量求和。

示例:

表:

Quanity1    Quanity2    Quanity3    Property1   Property2   Property3
12          43            12           RED        Long      Rough
43        23            23          Blue       Short     Smooth
43        90            34           RED        Fat     Bumpy

查询:

SELECT sum(Quanity1), sum(Quanity2), Property1 FROM Table Group By Property1

结果:

Quanity1    Quanity2    Property1
43         23            Blue
55           133         Red

我想要做的是为用户提供一个图形界面来完成此操作,而不知道如何编写SQL查询或任何代码。例如,一组列表框,用于选择要查看的属性和数量,并显示一个表格,显示所选字段的总和。我稍后可能还想为用户添加执行其他SQL查询的功能,例如基于某些条件进行过滤等操作。我后来才知道,我需要能够根据这些用户查询生成漂亮的报告。

我对ADO和.NET一般都很新。但我认为最好的方法是将我的数据导出到System.Data.DataTable中,然后为用户创建一个接口,通过为其RowFilter属性生成一个字符串来创建System.Data.DataView。虽然,对我来说,如何不仅对DataTable进行过滤和排序,而且生成另一个只包含大型主表中特定列的表或视图,这一点并不明显。

总的来说这听起来像是最好的选择,还是我应该考虑另一种方法?有没有人对我应该如何实现这一点有任何具体的提示或建议?我也在质疑LINQ是否会使这一切变得更容易。

更新 我很欣赏使用Access或其他可用工具的建议,但它确实不是一个选项。访问对于这里的用户来说太复杂了,试图弄清楚,而实际上我需要的更多。我总是将Access作为高级用户的选项。但我仍然想设置一个基本的查询功能,用户可以选择他们想要的列,软件会自动创建选择和总和相应列的视图/查询。

除了要复杂化Access的另一个问题之外,在我的数据结构中更改某些内容和查看报表中的更改之间会有很多次点击。我不希望用户必须更改某些内容,重新导出以访问,打开另一个程序,然后打开报告以查看其更改的效果。

2 个答案:

答案 0 :(得分:2)

考虑购买现成的查询工具,而不是重新发明轮子。能够做到这一点的最便宜的是MS Access或Excel中的MSQuery。更详细地说,您可以使用报表生成器(如果您的数据库基于SQL Server - 它是免费提供的)或第三方工具,如Business Objects或Brio。

如果您可以在没有紧密集成的情况下生活,那么这比尝试构建您自己的即席查询工具要容易得多。

答案 1 :(得分:0)

我也强烈推荐现成的 - 尤其是早期。如果稍后用户真的需要您编写自定义解决方案,那么请务必去寻找它。但是在这个问题上,我认为你花费的时间和精力并不值得。