我想对一些数据进行filter, 字段类型为widestring,在输入汉字时过滤,结果出错。这是什么原因?

解决方案 »

  1.   

    在汉字字符串加上quotedstr().估计是少引号
      

  2.   

    该段filter代码如下,帮忙分析:
    {******************************************************************************}
    {                 过滤                                                         }
    {******************************************************************************}
    procedure TSysLookupFM.BtnFilterClick(Sender: TObject);
    begin
      EdtFilter.SetFocus;
      with FField.LookupDataSet do begin
        Filtered := False;
        Filter := '';
        if Trim(EdtFilter.Text) <> '' then begin
          Filter := '(';
          Filter := Filter + Fields[1].FieldName + ' like ' + QuotedStr(Trim(EdtFilter.Text) + '%');
          Filter := Filter + ' or ' + Fields[1].FieldName + ' like ' + QuotedStr('%' + Trim(EdtFilter.Text) + '%');
          Filter := Filter + ' or ' + Fields[1].FieldName + ' like ' + QuotedStr('%' + Trim(EdtFilter.Text));
          Filter := Filter + ')';
          if FieldCount > 4 then begin
           Filter := Filter + ' and ' + Fields[4].FieldName + ' = 0 ';
          end;
        end else begin
          if FieldCount > 4 then begin
            Filter := Fields[4].FieldName + ' = 0 ';
          end;
        end;
        Filtered := True;
        BtnYes.Enabled := not IsEmpty;
      end;
    end;
      

  3.   

    if FieldCount > 4 then begin
           Filter := Filter + ' and ' + Fields[4].FieldName + ' = 0 ';
          end;
    /// 如果 Fields[4] 是字符型就会出错