问题描述
我正在使用访问数据库作为数据源构建一个win表单应用程序,并且在我的winform的搜索按钮中,我有此代码”
private void searchAccessDatabase()
{
if (string.IsNullOrEmpty(KeywordTextBox.Text.Trim()))
{
Refreshdata();
return;
}
string strkeyword = KeywordTextBox.Text.Trim().ToString();
StringBuilder sb = new StringBuilder();
sb.AppendFormat("(Convert(ID,'System.String') LIKE '" + "{0}" + "')",strkeyword);
sb.AppendFormat("OR (Customer_Name LIKE '*" + "{0}" + "*')",strkeyword);
sb.AppendFormat("OR (Complaint_Number LIKE '*" + "{0}" + "*')",strkeyword);
sb.AppendFormat("(Convert(Size,strkeyword);
sb.AppendFormat("OR (Material_Number LIKE '*" + "{0}" + "*')",strkeyword);
sb.AppendFormat("OR (Nature_Of_Problem LIKE '*" + "{0}" + "*')",strkeyword);
sb.AppendFormat("OR (Spool_Type LIKE '*" + "{0}" + "*')",strkeyword);
string strFilter = sb.ToString();
material_Return_DataBindingSource.Filter = strFilter;
if (material_Return_DataBindingSource.Count != 0)
{
dataGridView1.DataSource = material_Return_DataBindingSource;
}
else
{
MessageBox.Show("No Records Found","Search Result",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
Refreshdata();
return;
}
}
但是在运行期间出现以下错误: “无法在System.Single和System.String上执行'赞'操作。”
我知道该错误与单元格的格式类型和我使用的搜索类型有关,但是由于我仍在学习,因此我无法纠正它们:任何人都请在我错的地方纠正我。>
这是样本数据表:它将帮助您查看我要输入到表中的样本数据,我想使用该数据进行搜索
解决方法
- 在有无转换语句的情况下进行测试
- 您没有任何*表示字符串相似性可以在何处结束,例如:
Name LIKE '*test*'
会在Name字段中获得带有test的所有记录,而不论其前后是Name LIKE 'test*
只会让您看到“名称”字段以test开头的内容。
您说的事实是“类似”某些东西,没有任何通配符或其他指示符,可能会引起问题。
尝试使它们相等,看看是否出错。
另外,您不需要多个字符串的字符串格式的+,因为sb.format可以在没有它们的情况下使用。
sb.AppendFormat("(Convert(ID,'System.String') LIKE '" + "{0}" + "')",strkeyword);
可以写为
sb.AppendFormat("(Convert(ID,'System.String') LIKE '{0}')",strkeyword);
我也不是说以下行开头没有“或”,否则可能会导致错误。
sb.AppendFormat("(Convert(Size,strkeyword);
也许当错误出现时,使用您的追加产生的最终字符串来更新您的问题。