有多项查询条件(>20),用户自选条件,比如10个,如何将满足查询条件项目数 >N,(N由用户自选.比如8)
的记录全部显示出来??
的记录全部显示出来??
解决方案 »
- sql2000一varchar字段内容形如2-4,2-1,2-111...如何让其有序?
- 基础问题-----对象与接口
- 这个问题真的好难吗?竟然没人回答上来.关于在Dbgrid中显示备注型字段内容的问题?
- ===呕血推荐===一个人气很旺的网站
- 小问题,很快结帖
- 不用存储过程,怎样用在前台用ADOquery内嵌的SQL语句实现以下功能?
- 请问一下DELPHI开发b/s结构的问题
- 各位:你们好!我想做一个类似word中的公式编辑器,选择某个公司,输入相关数据后生成图片!将它做成插件的形式,能给点思路吗?
- 数组判断上的问题?
- ZSWang,有空来坐坐//Kingron
- DBGrid的问题
- adoquery1.SQL.add的方法的使用怪事请问高手
是不是这个意思。
select * from table1 where 条件1 and 条件2 ……
这个条件由用户自己选择?
不过对楼主的(信誉值+问题点数)=100的巧合感到好奇
希望下次放多点分
sqlstr:='select * from table where 1=1'
sqlstr:=sqlstr+@#@#$
两分就写这么多吧
SELECT * FROM 表 WHERE 进行固定
后面的条件让用户自已去组合'设定值栏口' '连接符(AND,OR等) 添加按钮(将左边的设定添加到下面的MEMO控件中
MEMO中显示:
姓名='张三'
AND 编号='0101'
OR ...然后通过MEMO.LINES.TEXT与上面的SELE进行连接你应该明白了,道理是这样的,方法很多
Var
Str:String;
I:Integer; //记数器,有多少个查询条件被使用
开始的时候
Str:='';
if 查询条件1被赋值 then
begin
Str:=Str+'1';
Inc(I);
end;
else
Str:=Str+'0';if 查询条件2被赋值 then
begin
Str:=Str+'1';
Inc(I);
end
else
Str:=Str+'0';//如此类推
我们不光知道了有多少个查询条件而且知道了是哪些查询条件,这样在拼接SQL语句时就可以了,当然在拼接的时候还要注意多种字段如日期字段啊等先转换成字符串啊,这种方法我已经使用过了,只不过查询组合条件没有超过10个的,但是原理是一样的(在拼接时也要用一个计数器记录已经有几个拼上去了,自己体会一下吧,有什么问题给我发邮件[email protected])
if tb_zk.Active then
tb_zk.Active := false;
tb_zk.Filtered := false;
if (trim(cb_dw.Text) <> '') and (trim(cb_fc.text) = '') and (trim(cb_bz.Text) = '') then
tb_zk.Filter := 'a2=' + '''' + cb_dw.Text + ''''; //+ 'and a3=' +''''+ cb_fc.Text +''''+ ' and a4=' +''''+ cb_bz.Text+'''';
if (trim(cb_dw.Text) <> '') and (trim(cb_fc.text) <> '') and (trim(cb_bz.Text) = '') then tb_zk.Filter := 'a2=' + '''' + cb_dw.Text + '''' + 'and a3=' + '''' + cb_fc.Text + ''''; //+ ' and a4=' +''''+ cb_bz.Text+'''';
if (trim(cb_dw.Text) <> '') and (trim(cb_fc.text) <> '') and (trim(cb_bz.Text) <> '') then tb_zk.Filter := 'a2=' + '''' + cb_dw.Text + '''' + 'and a3=' + '''' + cb_fc.Text + '''' + ' and a4=' + '''' + cb_bz.Text + '''';
tb_zk.Filtered := true;
tb_zk.Active := true;