各位好:
   请问在程序运行的时候,要动态的输入数据库的查询条件,(也就是说数据库查询条件是由用户自己按需要输入进去的。)怎么用话句来实现它,用到那此组件。请大家帮我写写好吗?谢谢了!

解决方案 »

  1.   

    query1.close;
    query1.sql.clear;
    query1.sql.add(你接收的字符串);
    query1.open;
      

  2.   

    用的控件有:combobox(放大于,小于,或者等于),edit(具体的比较值),button(写对应的sql代码,然后执行他们),如果你写的是‘小于’,‘20’,那么你就可以写
    adoquery1.close;
    adoquery1.sql.clear
    if combobox1.text='小于' 
      then
        adoquery1.sql.add('select * from biao1 where xh<'+''+edit1.text+'');
    ....
    adoquery1.open;
      

  3.   

    先谢谢!
       但要是多个条件,而且关系不一样,数据类型也不一样,如数据有int型  char型 data型怎么办呢。
      

  4.   

    var
      s,sqlstr:string;
    begin
      s:=format('and 字段名 like %d',[你的查询的整形值]);
      s:=s+format('and 字段名 like ''%s%%'',[你的查询的字符值]) ;
      s:=s+format('and 字段名 like ''%s%%'',[formatdatetime('yyyy-mm-dd',你的查询的datetime值)]);
      sqlstr:= 'select * from tablename where 1=1';
      sqlstr:= sqlstr+s;
      adoquery1.close;
      adoquery1.sql.clear;
      adoquery1.text:=sqlstr;
      adoquery1.open; 
    end;
      

  5.   

    请问朋友!
    jf~~~~
     
    up~~是什么意思
      

  6.   

    为什么要放在一个条件输入框中?一般都是有多个条件选择(可以输入,也可以选择的).然后通过字符串连接起来就行了
    简单举例如下
    var 
     sql:string;
    begin
      sql:='select * from tabel';
     if trim(edit1.text)<>'' then 
      sql:=sql+'字段A like'+#39+'%'+trim(edit1.text)+'%'+#39; 
     if ----- then 
      sql:=sql+ ----------;
     if ----- then 
      sql:=sql+ ----------;
    ---------------
    -------
    end;
      

  7.   

    query1.close;
    query1.sql.clear;
    query1.sql.loadfromfile('.........');
    query1.open
    或者楼上的 也可以