不管做什么软件,查询是个非常重要的问题;
我觉得查询必须有以下几点:
1、方便性:
    特别对于单据之类的查询来讲显得尤为重要,操作员在很多张单据里找自己需要的那张。
我看过很多软件是这样做的:
 
    1、主窗体上有一个查询按钮,操作员点击这个按钮,弹出一个查询界面,里面有单号,供货商编号,供货商名称 这几个查询条件。
    2、操作员输入查询条件,比如单号为20050201;
    3、操作员点击确认按钮,查询窗体关闭;
    4、主窗体显示查询条件的结果;
上面这种方法是绝大部分软件的做法,但是我个人非常不赞这种方法:
其弊端有:
       1、操作麻烦,需要弹出一个查询界面,弹出后输入条件确认后,需要关闭该窗体才能进行查询;
       2、回到主界面后,看不到操作员刚才输入的查询条件;
       3、如果操作员第一次查询输入的条件不够准确,查不到相应的信息,还要回头再进入查询界面;
       4、查询条件不够,比如入库单里还有制单人编号,制单人名称,制单时间,单据状态,备注等信息,如果操作员想根据这些条件来查询,系统就不提供。但是如果查询条件太多,查询界面看上去会很花,给人的感觉不太好;
2、功能性:
        很多软件查询条件都作的相对比较弱,比如商品信息,一般就是按照商品编号,商品名称,商品类别这样最简单的条件查询;
        但是如果操作员想按照商品的规格,单位,保质期,重量,颜色,供货商等条件进行查询就不行;如果开发人员提供所有的查询,在主界面里放那么多查询条件会把主界面搞得太乱,那就必须做一个新的查询界面,但是这样也增加了操作的复杂度;
3、开发的复杂度;
    软件的各个业务复杂度不一样,查询条件也要根据客户订制,很多客户对不同窗体的查询要求也不一样,有的客户觉得 某个查询条件需要,一定要有,有的认为某个查询条件不需要,不要提供。有时当客户把软件用了一段时间后,觉得查询条件不好,需要修改。
   所以我觉得需要搞个无为而治的方法,就是在控件里把查询的功能做好,不要在单独做查询功能,而且满足所有可能出现的查询条件,这样一来界面比较清爽,二来也不用自己去开发了。
下面这幅图就是实现了入库单的查询:
http://bbs.2ccc.com/attachments/qingyun_20051014182948.jpg
其查询条件是:
  单据编号包含“3”,供货商编号包含“000”,供货商名称包含“大连”;
制单人名称为“daizhicun” ;该界面里的查询通过dbgrideh自带的功能实现。而且操作简单,功能也很强大,几乎满足了所有的查询需求;
以上我对查询功能制作的一些想法,不知道大家平时是怎么做的。

解决方案 »

  1.   

    相关帖子:
    http://bbs.2ccc.com/topic.asp?topicid=195286
    http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3238267
      

  2.   

    不错。比较人性化其实要说功能强大,直接允许用户输入sql语言最方便了其他最基本的查询sql语言很简单,用户几分钟就能懂了
      

  3.   

    楼上的兄弟,用sql 语句不现实,那样对客户要求太高。而且就算客户能够操作,这样的查询效率也太低了,毕竟需要客户一个一个的把sql语句敲写进去,而且很有可能写出了要报错。另外,我个人做查询功能,不太喜欢用sql语句,因为这样每做一次查询,就要到数据库就重新获取一次数据,增加了数据库的负担。 我这里的查询一般都是通过 filter实现的。每次查询都是在本地进行。
      

  4.   

    我们公司的软件是这样做的:
    1.主窗体上有一个查询按钮,操作员点击这个按钮,弹出一个查询界面,默认是简单模式(当然还有个高级模式)。(这个界面基类里写好,程序员开发单据时,根本不用写代码).
    简单模式下,只有两个条件,即取主窗体grid上前两个列为查询条件。可切换高级模式,里面可以自定义主窗体grid 里每一个字段的条件(界面绝不是你所想像的一个字段就放一个label,一个edit那么的傻)。
    2.公司有自己开发的grid控件,grid的title上面有过滤的小按钮(用过excel的过滤功能没?就跟那个一模一样的效果,我就不多说了).
      

  5.   

    楼上 merkey2002(小样的) 朋友,你的建议非常好。能否把你的这个软件截图或者一个简单的demo软件发给我看看。[email protected]