一个Query Builder,征集更好用的Query Builder的设计方案

 

        用C# 2.0做了一个Query Builder(一些系统把它叫做“万能查询”):

        “添加”按钮添加一个表达式或一个表达式逻辑运算符AND或OR;
        “清除”按钮清除所有的表达式和表达式间的逻辑运算符;
        “确定”按钮获得构造的WHERE clause。

        特点:
                1、    运算符是由所选择字段的字段来确定的,如字段为字符时,可能支持的运算符包括:大于、等于、小于、前包括、后包括、包括、不包括、小于等于、大于等于、不等于、介于之间、在列表中
                2、    字段取值由所选字段和所选运算符共同决定的,如日期时间类型的字段取值用DateTimePicker来输入,和其他表关联的字段取值使用下拉列表框来输入
                3、    可以增加或减少每个表达前面或后面的括号的数目来形成复杂查询,并自动判断括号数目是否正确

        作用:
                设置窗体或DataGridView数据的过滤条件;选择数据进行批量更新


        这个东东实现了Query Builder的基本功能,但是自己总是觉得不太满意:用户会认为这样设计的查询条件构造工具方便吗?

        先来看看一个供销存系统的所谓“万能查询”:

        这个Super Filter也能完成基本的功能,但是操作起来不方便,功能也不完全,但是以前见过的“万能查询”基本上都是这个样子的。

        再来看看Access的查询设计器:

 

        微软所有产品的查询设计器都与此相类似,显然这是一个给程序员或具有数据库知识的人使用的工具:要求用户自己输入条件(运算符和值),虽然条件有“或”选项,但是能构造的查询条件还是有限的。倒是字段的选择做的比下拉列表来得方便多了。另外,它允许多表之间的连接,但这对终端用户来说是不现实的——他们不可能了解数据库的结构。

         如果按照程序员的思路来的话,Query Builder可以做得更强大,实现的功能也会更多;如果按照终端用户的思路来的话,应该越简单越好,能够快速掌握,符合用户的习惯。如何在这两者之间权衡,是很麻烦的事情。在此虚心向各位请教,征集更好的、适合终端用户使用的Query Builder设计方案!

posted @ 2006-01-03 22:06  蜡人张  阅读(4372)  评论(36编辑  收藏  举报