/// <summary> /// 根据控件是否为空组合查询条件. /// </summary> /// <param name="GBox">GroupBox控件的数据集</param> /// <param name="TName">获取信息控件的部份名称</param> /// <param name="TName">查询关系</param> public static void Find_Grids(Control.ControlCollection GBox, string TName, string ANDSign) { string FindValue = ""; string sID = ""; //定义局部变量 if (FindValue.Length > 0) { FindValue = FindValue + ANDSign; } foreach (Control C in GBox) { //遍历控件集上的所有控件 if (C.GetType().Name == "TextBox" | C.GetType().Name == "ComboBox") { //判断是否要遍历的控件 if (C.GetType().Name == "ComboBox" && C.Text != "") { //当指定控件不为空时 sID = C.Name; if (sID.IndexOf(TName) > -1) { //当TName参数是当前控件名中的部分信息时 string[] Astr = sID.Split(Convert.ToChar('_')); //用“_”符号分隔当前控件的名称,获取相应的字段名 FindValue = FindValue + "(" + Astr[1] + " = '" + C.Text + "')" + ANDSign; //生成查询条件 } } if (C.GetType().Name == "TextBox" && C.Text != "") //如果当前为TextBox控件,并且控件不为空 { sID = C.Name; //获取当前控件的名称 if (sID.IndexOf(TName) > -1) //判断TName参数值是否为当前控件名的子字符串 { string[] Astr = sID.Split(Convert.ToChar('_')); //以“_”为分隔符,将控件名存入到一维数组中 string m_Sgin = ""; //用于记录逻辑运算符 string mID = ""; //用于记录字段名 if (Astr.Length > 2) //当数组的元素个数大于2时 { mID = Astr[1] + "_" + Astr[2]; //将最后两个元素组成字段名 } else { mID = Astr[1]; //获取当前条件所对应的字段名称 } foreach (Control C1 in GBox) //遍历控件集 { if (C1.GetType().Name == "ComboBox") //判断是否为ComboBox组件 { if ((C1.Name).IndexOf(mID) > -1) //判断当前组件名是否包含条件组件的部分文件名 { if (C1.Text == "") //当查询条件为空时 { break; //退出本次循环 } else { m_Sgin = C1.Text; //将条件值存储到m_Sgin变量中 break; } } } } if (m_Sgin != "") //当该务件不为空时 { FindValue = FindValue + "(" + mID + m_Sgin + C.Text + ")" + ANDSign; //组合SQL语句的查询条件 } } } } } if (FindValue.Length > 0) //当存储查询条的变量不为空时,删除逻辑运算符AND和OR { if (FindValue.IndexOf("AND") > -1) //判断是否用AND连接条件 { FindValue = FindValue.Substring(0, FindValue.Length - 4); } if (FindValue.IndexOf("OR") > -1) //判断是否用OR连接条件 { FindValue = FindValue.Substring(0, FindValue.Length - 3); } } else { FindValue = ""; } }