一个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设计方案!
Life is like a boat, and I'm at sea.