【问题标题】:Allowing a user to create a custom query of a table允许用户创建表的自定义查询
【发布时间】:2009-05-06 06:58:05
【问题描述】:

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

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

示例:

表:

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 的另一个问题是在更改我的数据结构中的某些内容和查看报告中的更改之间有很多点击。我不希望用户必须更改某些内容,重新导出以访问,打开另一个程序,然后打开报告以查看更改的效果。

【问题讨论】:

    标签: c# datatable dataview


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我也强烈推荐现成的 - 尤其是早期。如果稍后发现用户真的需要您编写自定义解决方案,那么一定要去做。但在早期,我认为您花费的时间和精力不值得。

      【讨论】:

        猜你喜欢
        • 2012-07-20
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-16
        • 2016-12-26
        • 1970-01-01
        相关资源
        最近更新 更多