用checkbox控件打算做一个多选择查询问题,单个选项选择的查询已经实现。但是当选择2个或多个选项的查询时,Fill却一直报错“语法错误(操作符丢失)”在查询表达式请哪位高手能给指点下,看我2个选项以上的查询语句错在哪里了,谢谢。代码如下:
if (cb1.Checked)
{
queryselect += "model" + "like '%" + cbbcategory.Text + "%'";
}
if (cb2.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'";
}
if (cb3.Checked)
{
queryselect += "problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb4.Checked)
{
queryselect += "author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb1.Checked && cb2.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + " modelnumber" + " like '%" + txtMN.Text + "%'";
}
if (cb1.Checked && cb3.Checked)
{
queryselect += "model" + "like'&" + cbbcategory.Text + "&'" + " and" + "problemdescribe" + "like'" + cbbQC.Text + "%'";
}
if (cb1.Checked && cb4.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb2.Checked && cb3.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb2.Checked && cb4.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb3.Checked && cb4.Checked)
{
queryselect += " problemdescribe" + " like '%" + cbbQC.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb1.Checked && cb2.Checked && cb3.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb1.Checked && cb2.Checked && cb4.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb2.Checked && cb3.Checked && cb4.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'" + " and" + "author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb1.Checked && cb2.Checked && cb3.Checked && cb4.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'" + " and" + "author" + " like '%" + txtAuthor.Text + "%'";
}
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=|DataDirectory|\dbjt.mdb");
conn.Open();
da.Fill(ds, "jt")
if (cb1.Checked)
{
queryselect += "model" + "like '%" + cbbcategory.Text + "%'";
}
if (cb2.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'";
}
if (cb3.Checked)
{
queryselect += "problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb4.Checked)
{
queryselect += "author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb1.Checked && cb2.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + " modelnumber" + " like '%" + txtMN.Text + "%'";
}
if (cb1.Checked && cb3.Checked)
{
queryselect += "model" + "like'&" + cbbcategory.Text + "&'" + " and" + "problemdescribe" + "like'" + cbbQC.Text + "%'";
}
if (cb1.Checked && cb4.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb2.Checked && cb3.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb2.Checked && cb4.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb3.Checked && cb4.Checked)
{
queryselect += " problemdescribe" + " like '%" + cbbQC.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb1.Checked && cb2.Checked && cb3.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb1.Checked && cb2.Checked && cb4.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb2.Checked && cb3.Checked && cb4.Checked)
{
queryselect += "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'" + " and" + "author" + " like '%" + txtAuthor.Text + "%'";
}
if (cb1.Checked && cb2.Checked && cb3.Checked && cb4.Checked)
{
queryselect += "model" + " like '%" + cbbcategory.Text + "%'" + " and" + "modelnumber" + " like '%" + txtMN.Text + "%'" + " and" + " problemdescribe" + " like '%" + cbbQC.Text + "%'" + " and" + "author" + " like '%" + txtAuthor.Text + "%'";
}
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=|DataDirectory|\dbjt.mdb");
conn.Open();
da.Fill(ds, "jt")
并且每个条件应该 and 连接吧
queryselect += "model" + "like '%" + cbbcategory.Text + "%'"; string query = "select * from where 1=1"; if (true)
{
query += " and Name='xiaowang'";
}
if (true)
{
query += " and Age>20";
}
if (cb1.Checked)
{
queryselect += "and model" + "like '%" + cbbcategory.Text + "%'";
}
if (cb2.Checked)
{
queryselect += "and modelnumber" + " like '%" + txtMN.Text + "%'";
}
if (cb3.Checked)
{
queryselect += "and problemdescribe" + " like '%" + cbbQC.Text + "%'";
}
if (cb4.Checked)
{
queryselect += "and author" + " like '%" + txtAuthor.Text + "%'";
}
后面那些就没用了
把where改成where 0=0
后面check里面的sql前面都加上and
逻辑问题就像楼上说的,只留前4个就行