asp.net 多条件组合搜索

violetkenneth 2011-11-09 04:41:07
各位高手:


我现在是有三个下拉菜单,三个textbox,一个搜索按钮,我想是根据填选的不通进行搜索,不用存储过程一个sql语句能实现吗?

要是用程序在后台拼,实在是太多了。有没有更好的方法?


谢谢了!
...全文
347 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen0118 2011-11-10
  • 打赏
  • 举报
回复
用户从下拉列表里面选择条件,选择了条件之后自动填充到对应的文本框,最后整理为一个变量传入SQL.
allen0118 2011-11-10
  • 打赏
  • 举报
回复

我之前做过类似的查询功能,根据不同的条件去匹配数据,给用户提供了很多的选择项,用户具体选择哪一些条件我们根本不能确定,所以都是传入的一些变量,
直接一条SQL语句就可以了,整个条件全图是变量,我记得我QQ空间里面有一篇日志的,你可以留一个邮箱给我,晚上我下班了发给你。
huayy 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 sp1234 的回复:]
没看到懂拼什么
[/Quote]

+1
  • 打赏
  • 举报
回复
没看到懂拼什么
yangniao 2011-11-09
  • 打赏
  • 举报
回复
那么定义一个字符串 string sql="";
如果第一个文本框不为空那么
sql=sql+下拉列表的值+文本框的值
如果第二个文本框不为空 那么
sql=sql+下拉列表的值+文本框的值
如果第三个文本框不为空 那么
sql=sql+下拉列表的值+文本框的值
sql的最后结果是一个查询语句的条件部分,
并上前边的查表,
select * from table where +sql 应该可以搞定

龙火 2011-11-09
  • 打赏
  • 举报
回复
用LINQ 逐步筛选之,很方便
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lizeyuan8238386 的回复:]

引用 7 楼 nevermore_0923 的回复:

怎么多了?

StringBuilder sb = new StringBuilder();
sb.Append(" select * from table where 1=1 ");
if(!string.isNullorEmpty(textbox1.text))
{
sb.Append(" and ....");
}
……
[/Quote]最后那个break不要
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nevermore_0923 的回复:]

怎么多了?

StringBuilder sb = new StringBuilder();
sb.Append(" select * from table where 1=1 ");
if(!string.isNullorEmpty(textbox1.text))
{
sb.Append(" and ....");
}
[/Quote]
顶个,还有点就是dropdownlist的话,里面选选项较多用,可以在以上基础上加上
 
string strWhere = string.Empty;
switch (int.Parse(ddlName.SelectedItem.Value))
{
case 1: { strWhere = " and 字段1 like '%" + tbox1.Value + "%'"; break; }
case 2: { strWhere = " and 字段2 like '%" + tbox2.Value + "%'"; break; }
case 3: { strWhere = " and 字段3 like '%" + tbox3.Value + "%'"; break; }
case 4: { strWhere = " and 字段4 like '%" + tbox4.Value + "%'"; break; }
case 5: { strWhere = " and 字段5 like '%" + tbox5.Value + "%'"; break; }
break;
}
return strWhere;
Bule 2011-11-09
  • 打赏
  • 举报
回复
SQLBuilder sb =new SQLBuilder();
sb.Append("select * from table where(1=1)");
if(this.txtbox1.text!=null&&this.txtbox1.text!="")
{
sb.Append("and field="+‘“this.txtbox1.text”')
}
.......
  • 打赏
  • 举报
回复
可以使用拼接啊

sWhere = 'where 1=1 ';
if (a.text <> '')
{
sWhere = sWhere + ' and XX = ' + a.text;
}

if (b.text <> '')
{
sWhere = sWhere + ' and XXx = ' + b.text;
}
.
.
.
最后组合得到的条件就是你想要的
zell419 2011-11-09
  • 打赏
  • 举报
回复
多条件也可以用一个存储过程 。

(@cid = '-1' or charindex(@cid,cid)> 0) and
(@recom_1 = -1 or @recom_1=recom_1) and
(@recom_2 = -1 or @recom_2=recom_2)
黄亮 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nevermore_0923 的回复:]
怎么多了?

StringBuilder sb = new StringBuilder();
sb.Append(" select * from table where 1=1 ");
if(!string.isNullorEmpty(textbox1.text))
{
sb.Append(" and ....");
}
[/Quote]
+1
violetkenneth 2011-11-09
  • 打赏
  • 举报
回复
如果,我是选择了前两个下拉菜单和第二个输入框。其他的没有输入或选择。sql里都是and,我怎么查?还有我一个一个框判断,是很简单才判断六次。可是被判断的框不是空,可怎么保证其他的框是不是空的呢?
violetkenneth 2011-11-09
  • 打赏
  • 举报
回复
那三个textbox是时间,怎么用like?
弦弦 2011-11-09
  • 打赏
  • 举报
回复
怎么多了?

StringBuilder sb = new StringBuilder();
sb.Append(" select * from table where 1=1 ");
if(!string.isNullorEmpty(textbox1.text))
{
sb.Append(" and ....");
}
insus 2011-11-09
  • 打赏
  • 举报
回复
violetkenneth 2011-11-09
  • 打赏
  • 举报
回复
我已经在后台拼了12条了,还是没有满足搜索条件。要是全写上还不要36条了。。。我的天啊。我都怕搜索按钮想抽人。
huayy 2011-11-09
  • 打赏
  • 举报
回复
用like,默认%,后台拼也一条语句搞定。
violetkenneth 2011-11-09
  • 打赏
  • 举报
回复
呃。。。就没其他的办法了吗?sql语句实现这么难?
gudengdulang 2011-11-09
  • 打赏
  • 举报
回复
只要能够分开得到三个下拉菜单和三个textbox的值,用一个sql语句还是能够查询出来的
毕竟sql中也是有联合查询的么
不过,感觉这样写出来的sql语句应该会很不好写,很累赘
加载更多回复(1)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧