我有十个查询条件,提供了十个编辑框或组合框供用户输入查询信息,有什么好的办法来判断应该使用那些信息来组成SQL语句。例如:(50分)

  • 主题发起人 主题发起人 seeme0526
  • 开始时间 开始时间
用like或And还是OR就看你想达到效果要求怎样了,
上述说的都是相对简单的并列条件关系,
如果用到条件与条件间层次、嵌套关系就再不能这么简单几句了。
 
babieboy :
like 在 oracle有问题?我怎么没见过。

我的方法是这样的
var
name,sex,age,email,homepage:string;
sql :string;
begin
if trim(edtname.text) = '' then name = '%' else name = edtname.text;
................
if trim(edthomepage.text) = '' then name = '%' else name = edthomepage.text;
sql := 'SELECT * FROM TABLE WHERE NAME LIKE :NAME,SEX LIKE :SEX,AGE LIKE :AGE.....';
//绝对没问题的
// 我在ORACLE上有20多个条件组合查询
end;
 
只要一个tedit就可以了,各关键字可以用特殊符号来分隔,比如用&表示于与,用@表示或。
然后在执行查询的时候再分解出来。
查询时可以用for 语句 逐字符查,分解出一个关键字就在strsql变量里加一个条件。

 
自己写一个过程也可以
prodedure outSQLString( stEdit, stField, IsNull: Boolean) : String
{//传入的stEdit参数为Edit的Text值,stField为要查询的字段,IsNull判断SQL是否为空
if stEdit = "" then
Result := ""
else
begin
if IsNull then
Result := "Select * From Tablename where " + stField + "=" + stEdit //Like
else
Result := " and " + stField + "=" + stEdit; //或Like
end;
}
然后在程序中循环调用:
stSQL := outSQLString(Edit.Text,FieldName);
 
if then 最简单好用,只要注意对应关系,不会错的。不过代码多点。
 
如果EDIT 为空,则赋值为“%”
用 LIKE % 就可以达到多条件的选择!
 
多人接受答案了。
 
后退
顶部