你将query1.sql.add('select * from huz where status=''有效'' and tstatus=:tstatus');
改为
query1.sql.add('select * from huz where status='+''''+'有效'+''''+' and tstatus=:tstatus');
试试

解决方案 »

  1.   

    试试这句
    query1.sql.add('select * from huz where status=''有效'' 
    and tstatus='''+edit1.text+'''');
      

  2.   

    query1.parambyname('tstatus').asstring:=edit1.text;
    有问题
    你定义一个变量让它等于edit1.text
    然后 .asstring:=strxxx
      

  3.   

    这样用就行了
    sqlstr:='select * from huz where status=''有效'' and tstatus=''%s'''
    sqlstr:=format(sqlstr,[edit1.text])
      

  4.   

    试试下面的代码。
    if 字段1_edit.text<> '' then 
      begin
        条件1:=' 字段名1' + '=' + '''' + 字段1_edit.text+ '''';
        sign:=1;
      end
      else
        begin
          条件1:= '';
          sign:=0;
        end;
    if (字段2_edit.text<> '') and (sign=1) then  //收货单位
            条件2:=' and  字段2' +'=' + ''''+ 字段2_edit.text+ ''''
        else if (edt_input_unit.text <> '') and (sign=0) then
        begin
          条件2:=' 字段2' +'=' + '''' +字段2_edit.text+ '''';
          sign:=1;
        end
            else
            条件2:='';
    if (字段3_edit.text<> '') and (sign=1) then  //收货单位
            条件3:=' and  字段3' +'=' + ''''+ 字段3_edit.text+ ''''
        else if (edt_input_unit.text <> '') and (sign=0) then
        begin
          条件3:=' 字段3' +'=' + '''' +字段3_edit.text+ '''';
          sign:=1;
        end
            else
            条件3:='';
    exp1:=条件1+条件2+条件3;
    更多查询同理;
    此查询可以是任意条件的组合
      

  5.   

    各位,我想问一问,你们在设计时是不是已经先对TQUERY的SQL和PARAMS属性预先进行的设置?还是先保持这两个属性为空,然后在运行时,使用 TQUERY.CLOSE, TQUERY.SQL.ADD, TQUERY.PARAMBYNAME 来动态修改SQL语句?如果真是这样,会不会是我的ORACLE 8I或者DELPHI 5的DBE或者ODBC有问题呢?因为出错时,系统提示都跟 EDBEngine 有关的?!
      

  6.   

    我是在运行时指定的。我建议你把原先的query删掉,然后重新加一个,有一次我也遇到一个奇怪的问题,但用上述方法解决了。
      

  7.   


    query1.sql.clear
    query1.sql.add('select * from huz where status=''有效'' 
    and tstatus='''+edit1.text+'''');
    query1.sql.prapare;
    query1.sql.open
      

  8.   

    STR:='有效';query1.sql.add('select * from huz where status=:YX and tstatus=:tstatus');
    query1.parambyname('YX').asstring:=STR;
    query1.parambyname('tstatus').asstring:=edit1.text;
        
      

  9.   

    一般有两种方法:
    1.先生成SQL语句,再赋值给Query执行。
    如:
    var
      strSQL;
    begin
      strSQL := 'select * from huz where status = ''有效'' and tstatus = ';
      strSQL := strSQL + #39 + Edit1.Text + #39;
      Query1.SQL.Text := strSQL;
      Query1.Open ;
    end;
    2.给Query赋值代参数的SQL语句,然后再赋值这个参数,就是你的那种方法end;