用心做好每一件事情!

自由组合查询

 

程序和数据库联合起来进行自由组合的查询

在做一个查询功能的时候,用户要根据很多的条件自己去进行任意的组合查询,当时想到了常用的if else,后来想到不行,并不能满足用户的要求,并且还有可能漏掉很多的可能性。于是采用下面的方法:

界面如图:

数据访问层的方法如下:

public DataTable GetMaterInfos(string machine, string slot, string feeder, string starttime, string endtime,string cpn, string username)
        { 

            OracleConnection con = new OracleConnection(base.WebConfigurationConnectionStrings_MESDB());
            DataTable dt = new DataTable();
            string aa = "AND EQPNAME='"+machine+"'";
            string bb = "AND SLOT='"+slot+"'";
            string cc = "AND FEEDERNAME='"+feeder+"'";
            string dd = "AND USERNAME='"+username+"'";
            string ee = "AND PN='" + cpn + "'";

            if (machine == "")
            {
                aa = string.Empty;
            }
            if (slot == "")
            {
                bb = string.Empty;
            }
            if (feeder == "")
            {
                cc = string.Empty;
            }
            if (username == "")
            {
                dd = string.Empty;
            }
            if (cpn == "")
            {
                ee = string.Empty;
            }

            string Sql = "SELECT MONAME,TASKNAME,EQPNAME,SLOT,PN,FEEDERNAME,UPNNAME,UPNQTY,DATETIME,USERNAME FROM GLB_MATERIALHISTORY  " +
                            "WHERE to_date(DATETIME,'YYYY-MM-DD HH24:MI:SS') BETWEEN TO_DATE('" + starttime + "','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + endtime + "','YYYY-MM-DD HH24:MI:SS') "+aa+"  "+bb+"  "+cc+" "+dd+" "+ee+"";                       
          
            OracleCommand comm = new OracleCommand();
            comm.CommandType = CommandType.Text;
            comm.CommandText = Sql;
            comm.Connection = con;
            OracleDataAdapter da = new OracleDataAdapter(comm);
            da.Fill(dt);
            return dt;
        }

因为我不知道用户到底输入了哪几个值,所以如果按照平常那样的话当有一个值为空的时候就查不出来数据,SQL里面都是and,所以上面就让用户点击按钮了以后没有值的话就传入一个空的。问题就解决了、、、

 

posted @ 2010-06-24 20:09  无 影  阅读(644)  评论(0编辑  收藏  举报
作者: Allen【QQ:96966 1314】 网名:无影 出处: http://www.cnblogs.com/allen0118/ 声明: 本文版权归作者和博客园共有!转载时必须保留此段声明,且在文章页面明显位置给出原文连接。