var
  a,b: String ;
begin
  a := trim(DBcbx_Kind.Text);
  b := trim(DBcbx_Name.Text);  with ADOQ_Pro do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select spmc from Products where
               splb =:a and spmc like :b');
      Parameters.ParamByName('a').Value := a;
      Parameters.ParamByName('b').Value := '%'+b+'%';
      Open;
    end;
  DBcbx_Name.Items.Clear;
  ADOQ_Pro.First;
  while not ADOQ_Pro.Eof do
    begin
      DBcbx_Name.Items.Add(ADOQ_Pro.FieldByName('spmc').AsString);
      ADOQ_Pro.Next;
    end;
开发环境:delphi6+sql2000
进行精确查询有结果,不使用参数模糊查询也能查出来,请问这是怎么回事?

解决方案 »

  1.   

    var
      a,b: String ;
    begin
      a := trim(DBcbx_Kind.Text);
      b := trim(DBcbx_Name.Text);  with ADOQ_Pro do
        begin
          Close;
          SQL.Clear;
          sql.add('select spmc from Products where splb='+''''+a+''''+' and         spmc         like ''%'+b+'%'''
          Open;
        end;
      DBcbx_Name.Items.Clear;
      ADOQ_Pro.First;
      while not ADOQ_Pro.Eof do
        begin
          DBcbx_Name.Items.Add(ADOQ_Pro.FieldByName('spmc').AsString);
          ADOQ_Pro.Next;
        end;
      

  2.   

    var
      a,b: String ;
    begin
      a := trim(DBcbx_Kind.Text);
      b := trim(DBcbx_Name.Text);  with ADOQ_Pro do
        begin
          Close;
          SQL.Clear;
          sql.add('select spmc from Products where splb='+''''+a+''''+' and         spmc         like ''%'+b+'%''');
          Open;
        end;
      DBcbx_Name.Items.Clear;
      ADOQ_Pro.First;
      while not ADOQ_Pro.Eof do
        begin
          DBcbx_Name.Items.Add(ADOQ_Pro.FieldByName('spmc').AsString);
          ADOQ_Pro.Next;
        end;