建议你把condition打印出来,再看看是哪的错
解决方案 »
- WinForm和Asp.net有什么区别
- 如何获得listView选中的列?
- 请教高手:在SQL2005中新添加的表如何才能替换原来的数据源?又不影响原来的附值?
- 关于web的文件访问权限问题,简单却奇怪,希望有经验的给予解答!
- 请问一下虚函数和过载有什么区别呀
- Access数据库如何批量操作呀 ?
- 请教一个枚举方面的问题,在线等,各位大大好心来看看啊
- VS2012,输入强签名密码后,提示指定了无效的提供程序类型
- 未能找到类型或命名空间名称“CSharpWin"(是否缺少 using 指令或程序集引用?)
- 对于DataTable,如何实现数据的Group By功能?
- 哪位老大能把以下代码翻译成C#的代码,谢谢了
- 求效率最高算法,取四个整数中的最大值
这个condition是你组合出来的SQL语句,应该是数据上出了问题
你可以这样
在myDV.RowFilter = condition;前加一行:
string a=condition;
然后在这行中断,看下a的值,应该是sql语句出了问题
if (this.textBox1.Text.Trim() != "")
{
condition += "商品编号 like '%'" + textBox1.Text.Trim() +"'%'";
if (this.textBox2.Text.Trim() != "")
{
condition += "and 商品名称 like '%'"+ textBox2.Text.Trim()+ "'%'";
}
}
else
{
if (this.textBox2.Text.Trim() != "")
{
condition += "商品名称 like '%'"+ textBox2.Text.Trim()+"'%'";
}
引号问题
stringbuilder sb=new stringbuilder("1=1");
if(textBox1.Text.trim()!="")
sb.apend("商品编号 like '%"+textBox1.Text.Trim()+"%'");这样写能好一点地
myDV.RowFilter = condition;
这边的condition直接改为myDV.RowFilter="商品编码 like '%1010002%'"
然后运行一下看能不能用
这样才可以
应该是 商品编号 like '%1010002%'
应该改成这样condition += "商品名称 like '%" + textBox1.Text.Trim() + "%'";另外在组合SQL时,前后条件之间的空格也是需要注意的
比如
a=where xxx
b=and
则应该是
a="where xxx";
b=" and";
把SQL整个打印出来,去SQLSERVER里查询下,如果没数据,那当然是什么都没有了
另外从你的代码里看,好象没有where啊Select * from shangpinxinxi where 商品编号 like '%" + textBox1.Text.Trim() + "%' and 商品名称 like '%" + textBox2.Text.Trim() + "%'where在哪?改成下面的看看string condition = "";
if (this.textBox1.Text.Trim() != "")
{
condition = " where 商品编号 like '%'+textBox1.Text.Trim()+'%'";
if (this.textBox2.Text.Trim() != "")
{
condition += " and 商品名称 like '%' + textBox2.Text.Trim()+'%'";
}
}
else
{
if (this.textBox2.Text.Trim() != "")
{
condition += "商品名称 like '%' + textBox2.Text.Trim()+'%'";
}
else
{
MessageBox.Show("请输入查询条件", "错误");
return;
}
你要考虑当text1没有值,text2有值时的sql语句该如何组合
text1有值
sql就是select * from xxx where xxx and xxxx
如果text1没值,text2有值,按上面简单判断就成了
select * from xxx and xxxxxxxxx
就报错了
你把你打印出的sql语句整个拷贝过来看下
private void button1_Click(object sender, EventArgs e)
{ string condition = "";
if (this.textBox1.Text.Trim() != "")
{
condition = " select * from shangpinxinxi where 药品编号='" + textBox1.Text + "' "; if (this.textBox2.Text.Trim() != "")
{
condition += " and select * from shangpinxinxi where 药品名称='" + textBox2.Text + "' ";
}
}
else
{
if (this.textBox2.Text.Trim() != "")
{
condition += "select * from shangpinxinxi where 药品名称='" + textBox2.Text + "' "; }
else {
MessageBox.Show("请输入查询条件", "错误");
return;
}
}
//////////////////////////////////////////////////////////
DataView myDV = new DataView(facNumSet.Tables["TableName"]); myDV.RowFilter = condition;
this.dataGridView1.DataSource = myDV;
///////////////////////////////////////////
if (this.dataGridView1.RowCount== 1)
{
MessageBox.Show("对不起,货品中没有与您检索条件相匹配的记录!");
return;
}
this.textBox1.Clear();
this.textBox2.Clear();
}
报的错是语法错误:“shangpinxinxi”运算符后缺少操作数。
bool flag=false;
if (this.textBox1.Text.Trim() != "")
{
condition+="商品编号 like '%"+this.textBox1.Text.Trim()+"%'";
flag=true;
}
if (this.textBox2.Text.Trim() != "")
{
if(flag)
{
condition+=" and 商品名称 like '%"+this.textBox2.Text.Trim()+"%'";
}
else
condition+="商品名称 like '%"+this.textBox2.Text.Trim()+"%'";}
if(condition=="")
{
MessageBox.Show("请输入查询条件", "错误");
return;}