我想用一个ListBox从SQL中提出相应的信息作为条件查询,其信息可能是一行,也可能是多行,
但无论多行信息,都将作为ADODataSet里的CommandText中SQL语句的Where条件,然后将结果返回到DBGrid中,请问如何实现?

解决方案 »

  1.   

    var
      S: String;
      i: Integer;
    begin
      S:= '';
      for i := 0 to ListBox1.Items.Count - 1 do
      begin
        if S = '' then
          S :=  QuotedStr(ListBox1.Items[i])
        else
          S := S + ',' + QuotedStr(ListBox1.Items[i]);
      end;  if S = '' then
        S := ' where 1 <> 1 '
      else
        S := ' where 字段名 in (' + S +')';
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := 'select * from 表名 ' + S;
      ADOQuery1.Open;
    end;
      

  2.   

    楼上的很正确,学习。
    另说明一下:
    ListBox的内容作为查询条件的话,其内容最好只针对一个字段,不然的话,嗯,我是实现不了。楼上的应该可以。
      

  3.   

    再补充一下,或者内容格式如下:字段,条件。这样的话,可以对任一行进行截取,分离出来字段和字段对应的条件,转换成SQL语句的Where条件;字段和对应条件之间应该有分隔符。