请看我的照片。我有商店。我想在我的商店搜索(过滤)。 “Hrubka是英文”厚度“
这些代码适用于我:
using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad where SMENA LIKE '%" + txt_smena_sklad_filter.Text +
"%'and DATUM LIKE '%" + txt_datum_sklad_filter.Text +
"%'and DODAVATEL LIKE '%" + cmb_firma_sklad_filter.Text +
"%'and CISLO_PALETY LIKE '%" + txt_paleta_sklad_filter.Text +
"%'and HRUBKA LIKE '%" + txt_hrubka_sklad_filter.Text +
"%'and KVALITA LIKE '%" + cmb_kvalita_sklad_filter.Text +
"%'and DRUH LIKE '%" + cmb_druh_sklad_filter.Text +
"%'", cn))
{
但我想添加搜索“从”到:列“H”
示例:
之间
从40到50 Image
答案 0 :(得分:3)
通常,在构建查询时,应该打印出查询。那么错误可能很明显。
在继续之前,我还想指出你应该使用参数化查询。这与您的问题无关,但这是最佳做法。
你的最后一个条件是:
HRUBKA BETWEEN VALUES'%" + txt_sklad_od.Text "%'AND'% " + txt_sklad_do.Text+"'"
您在比较值中使用百分号,并在不适当的位置使用关键字VALUES
。我怀疑你想要某种野性梳理,比如LIKE
,但这不是那么有效。对于您当前的查询结构,您将删除百分号:
HRUBKA BETWEEN '" + txt_sklad_od.Text "' AND '" + txt_sklad_do.Text+"'"
答案 1 :(得分:0)
使用@Gordon Linoff回答我希望为您的代码添加更多编辑。
您的代码不是“注射安全”(check SQL Injection here)。我也不明白BETWEEN
在这里的使用...... HRUBKA
是一个数字字段吗? (Int,float,numeric等)
如果HRUBKA
是一个数字,那就像:
double sklad_od = 0, sklad_do = 0;
using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad "
"where SMENA LIKE '%" + String.IsNullOrEmpty(txt_smena_sklad_filter.Text) ? "'" : (txt_smena_sklad_filter.Text.Replace("'", "''") + "%'") +
" and DATUM LIKE '%" + String.IsNullOrEmpty(txt_datum_sklad_filter.Text) ? "'" : (txt_datum_sklad_filter.Text.Replace("'", "''") + "%'") +
" and DODAVATEL LIKE '%" + String.IsNullOrEmpty(cmb_firma_sklad_filter.Text) ? "'" : (cmb_firma_sklad_filter.Text.Replace("'", "''") + "%'") +
" and CISLO_PALETY LIKE '%" + String.IsNullOrEmpty(txt_paleta_sklad_filter.Text) ? "'" : (txt_paleta_sklad_filter.Text.Replace("'", "''") + "%'") +
" and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_hrubka_sklad_filter.Text) ? "'" : (txt_hrubka_sklad_filter.Text.Replace("'", "''") + "%'") +
" and KVALITA LIKE '%" + String.IsNullOrEmpty(cmb_kvalita_sklad_filter.Text) ? "'" : (cmb_kvalita_sklad_filter.Text.Replace("'", "''") + "%'") +
" and DRUH LIKE '%" + String.IsNullOrEmpty(cmb_druh_sklad_filter.Text) ? "'" : (cmb_druh_sklad_filter.Text.Replace("'", "''") + "%'") +
(double.TryParse(txt_sklad_od.Text, out sklad_od) && double.TryParse(txt_sklad_do.Text, out sklad_do) ? (" and HRUBKA BETWEEN " + sklad_od + " AND " + sklad_do) : "") +
" ", cn))
否则:
using (SqlDataAdapter dr = new SqlDataAdapter(" select * from tab_sklad "
"where SMENA LIKE '%" + String.IsNullOrEmpty(txt_smena_sklad_filter.Text) ? "'" : (txt_smena_sklad_filter.Text.Replace("'", "''") + "%'") +
" and DATUM LIKE '%" + String.IsNullOrEmpty(txt_datum_sklad_filter.Text) ? "'" : (txt_datum_sklad_filter.Text.Replace("'", "''") + "%'") +
" and DODAVATEL LIKE '%" + String.IsNullOrEmpty(cmb_firma_sklad_filter.Text) ? "'" : (cmb_firma_sklad_filter.Text.Replace("'", "''") + "%'") +
" and CISLO_PALETY LIKE '%" + String.IsNullOrEmpty(txt_paleta_sklad_filter.Text) ? "'" : (txt_paleta_sklad_filter.Text.Replace("'", "''") + "%'") +
" and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_hrubka_sklad_filter.Text) ? "'" : (txt_hrubka_sklad_filter.Text.Replace("'", "''") + "%'") +
" and KVALITA LIKE '%" + String.IsNullOrEmpty(cmb_kvalita_sklad_filter.Text) ? "'" : (cmb_kvalita_sklad_filter.Text.Replace("'", "''") + "%'") +
" and DRUH LIKE '%" + String.IsNullOrEmpty(cmb_druh_sklad_filter.Text) ? "'" : (cmb_druh_sklad_filter.Text.Replace("'", "''") + "%'") +
" and HRUBKA LIKE '%" + String.IsNullOrEmpty(txt_sklad_do.Text) ? "'" : (txt_sklad_do.Text.Replace("'", "''") + "%'") +
" ", cn))