我想用模糊查询"报名日期",在数据库里设置的是日期函数,在查询条件中只输入"年份"或"月份"即可查出来,为什么只能输入"年份",数据库就正确,而输入"月份"或全输入完就不正确了呢???源代码如下:
++++++++++++++++++++++++++++++++++++++++++++++++++++++
private void Button1_Click(object sender, System.EventArgs e)
{
string strCommand="select * from 新生报名表 where ";
string str="";
if(TextBox1.Text!="")str+="or 姓名     like'%"+TextBox1.Text+"%'";
if(TextBox2.Text!="")str+="or 家庭地址 like'%"+TextBox2.Text+"%'";
if(TextBox3.Text!="")str+="or 录取专业 like'%"+TextBox3.Text+"%'";
      if(TextBox4.Text!="")str+="or 报名时间 like'%"+TextBox4.Text+"%'";if(str!="")strCommand=strCommand+str.Remove (0,2);
else return;SqlDataAdapter da=new SqlDataAdapter(strCommand,myConnection);
DataSet ds=new DataSet();
da.Fill(ds,"scores");
DataGrid1.DataSource=ds.Tables["scores"].DefaultView;
DataGrid1.DataBind();
}

解决方案 »

  1.   

    if(TextBox3.Text!="")str+="or 录取专业 like'%"+TextBox3.Text+"%'";
    {
        if(TextBox4.Text.Length<=2) str+="or 报名时间 like '%-%"+TextBox4.Text+"%-%'";
      else str+="or 报名时间 like'%"+TextBox4.Text+"%'";
    }
      

  2.   

    不好意思,好几天没睡好,眼花了
    if(TextBox4.Text!="")
    {
        if(TextBox4.Text.Length<=2) str+="or 报名时间 like '%-%"+TextBox4.Text+"%-%'";
      else str+="or 报名时间 like'%"+TextBox4.Text+"%'";
    }
      

  3.   

    if(TextBox4.Text!="")
    {
        str+="or 报名时间 like'%"+TextBox4.Text+"%'";
        //比较年月可以
        str += " OR (year(报名时间) = '年' AND month(报名时间) ='月' AND day(报名时间) ='日') "  // 具体年月日可以根据TextBox4.Text进行分析获取,上面的字符串也可以根据条件进行组合
    }
      

  4.   

    yingcongxiao(孤魂夜尸):你的这种方法只能实现对"年"的查询,要是我输入"2003-5",就查不出来了,我去试一下Seeko0(阿 枫(www.vivichen.com)) 的方法,为什么要这么做呢??我有点不明白,请高人指点!!!
      

  5.   

    日期不能用模糊查询的只能用between and
    根据年月设置好其始和终止日期