查询表里字段1的值是edit1.text或字段2的值是edit2.text
我这样写什么地方错了吗?
temp_sql:='select * from disk where (disk_name=:edit1.text or disk_code=:edit2.text)';
  
 adoquery1.Close;
 adoquery1.SQL.Add(temp_sql);
  adoquery1.Parameters[0].Value:=trim(edit1.text);
  adoquery1.Parameters[1].Value:=trim(edit2.text);
  adoquery1.Open;

解决方案 »

  1.   

    错误提示为:list index out of bounder (0)
      

  2.   

    先设置ADOQuery1 的属性Parameters,在里面加一个ss变量,
    with ADOQuery1 do
      begin
        close;
        sql.Clear;
        sql.Add('select * from supp where job_id=:ss');
        Parameters[0].Value:=100046;//0 对应的就是ss
        active :=true;
      end;
      

  3.   

    temp_sql:='select * from disk where (disk_name=:edit1.text or disk_code=:edit2.text)';
    你需要加两个
      

  4.   

    temp_sql:='select * from disk where (disk_name=case when :e1 is not null then :et1 else disk_name end or disk_code=case when :e2 is not null then :et2 else disk_code end)';
      
     adoquery1.Close;
     adoquery1.SQL.Add(temp_sql);
      adoquery1.Parameters[0].Value:=trim(edit1.text);
      adoquery1.Parameters[1].Value:=trim(edit1.text);
      adoquery1.Parameters[0].Value:=trim(edit2.text);
      adoquery1.Parameters[1].Value:=trim(edit2.text);  adoquery1.Open;
      

  5.   

    temp_sql:='select * from disk where (disk_name=case when :e1 is not null then :et1 else disk_name end or disk_code=case when :e2 is not null then :et2 else disk_code end)';
      
     adoquery1.Close;
     adoquery1.SQL.Add(temp_sql);
      adoquery1.Parameters[0].Value:=trim(edit1.text);
      adoquery1.Parameters[1].Value:=trim(edit1.text);
      adoquery1.Parameters[2].Value:=trim(edit2.text);
      adoquery1.Parameters[3].Value:=trim(edit2.text);  adoquery1.Open;
      

  6.   

    adoquery1.Close;
     adoquery1.SQL.Add(temp_sql);
      adoquery1.Parameters[0].Value:=trim(edit1.text);
      adoquery1.Parameters[1].Value:=trim(edit2.text);
      adoquery1.Open;
    这一句是必须是有两个参数,而你上面一句
    temp_sql:='select * from disk where (disk_name=:edit1.text or disk_code=:edit2.text)';
    是or时有可能是一个参数,这样就会有这种错误,请用IF语句判断才可以