首页上一页 1 下一页尾页 1 条记录 1/1页
2011092802
发表在C#图书答疑
2011-09-28
是否精华
是
否
版块置顶:
是
否
c#案例开发全程实录第2版企业人事管理项目mymoudle.cs中组合查询条件模块
#region 组合查询条件
/// <summary>
/// 根据控件是否为空组合查询条件.
/// </summary>
/// <param name="GBox">GroupBox控件的数据集</param>
/// <param name="TName">获取信息控件的部份名称</param>
/// <param name="TName">查询关系</param>
public void Find_Grids(Control.ControlCollection GBox, string TName, string ANDSign)
{
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 = "";
}
#endregion
请逐句解释下好吗?
#region 组合查询条件
/// <summary>
/// 根据控件是否为空组合查询条件.
/// </summary>
/// <param name="GBox">GroupBox控件的数据集</param>
/// <param name="TName">获取信息控件的部份名称</param>
/// <param name="TName">查询关系</param>
public void Find_Grids(Control.ControlCollection GBox, string TName, string ANDSign)
{
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 = "";
}
#endregion
请逐句解释下好吗?