我的delphi中用如下代码对数据表PYDM中接PYDM字段进行模糊查询,不出结果,请问什么原因?代码如下:
procedure TForm1.Edit1Change(Sender: TObject);
var
  s1:string;
  i:integer;
begin
  s1:=Trim(edit1.text);
  for i:=0 to length(s1)-1 do
  begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('Select BM,MC,PYDM,LB from PYDM,KC0');
  Query1.SQL.Add('where PYDM LIKE :x AND PYDM.BM=KC0.KCBM ');
  Query1.Params[0].Value:='s1'+'%';
  Query1.Open;
  Listbox1.Items.Clear;
  while not Query1.Eof do
    begin
      ListBox1.Items.Add(Query1.fieldbyname('BM').asstring+'  '+Query1.fieldbyname('MC').asstring);
      query1.Next;
    end;
  Query1.Close;
  end;
end;

解决方案 »

  1.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
      s1:string;
      i:integer;
    begin
      s1:=Trim(edit1.text);  
    //  for i:=0 to length(s1)-1 do
    //  begin
      if sl = '' then exit;
      Query1.Close;
      Query1.SQL.Clear;
    //  Query1.SQL.Add('Select BM,MC,PYDM,LB from PYDM,KC0');
    //  Query1.SQL.Add('where PYDM LIKE :x AND PYDM.BM=KC0.KCBM ');
    //  Query1.Params[0].Value:='s1'+'%';
      Query1.SQL.Text := 'Select BM,MC,PYDM,LB from PYDM,KC0 '
        + 'Where PYDM.PYDM Like ''' + sl + '%'' AND PYDM.BM=KCO.KCBM';
      Query1.Open;
      Listbox1.Items.Clear;
      while not Query1.Eof do
        begin
          ListBox1.Items.Add(Query1.fieldbyname('BM').asstring+'  '+Query1.fieldbyname('MC').asstring);
          query1.Next;
        end;
      Query1.Close;
    //  end;
    end;
      

  2.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
      s1:string;
      i:integer;
    begin
      s1:=Trim(edit1.text);
      for i:=0 to length(s1)-1 do
      begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add(format('Select BM,MC,PYDM,LB from PYDM,KC0 
      where PYDM LIKE ''%s%%'' AND PYDM.BM=KC0.KCBM',[sl]));
      Query1.Open;
      Listbox1.Items.Clear;
      while not Query1.Eof do
        begin
          ListBox1.Items.Add(Query1.fieldbyname('BM').asstring+'  '+Query1.fieldbyname('MC').asstring);
          query1.Next;
        end;
      Query1.Close;
      end;
    end;
      

  3.   

    你的Delphi字符串传递到SQL中有问题。
      

  4.   

    楼上说的对,你看一看你最后生成执行的sql 语句是不是对的!
      

  5.   

    Query1.Params[0].Value:='s1'+'%';
    应该为:Query1.Params[0].Value:=s1+'%';