dbgrideh 设置了 sfilter  之后  检索过滤中文字段会报错   match......搜索了帖子说这是 ClientDataSet 中文过滤问题  但是我没找到解决方法dbgrideh + Adoquery  是没有问题的忘高手指点

解决方案 »

  1.   

    procedure TForm1.ClientDataSet1FilterRecord(DataSet: TDataSet;var Accept: Boolean);  
    var  
      strTemp: String;  
    begin  
      strTemp:= DataSet.FindField('字段名').AsString;  
      if Pos('中文', strTemp) <> 0 then  
        Accept:= True  
      else  
        Accept:= false;  
    end;
      

  2.   

    http://topic.csdn.net/t/20030805/09/2109363.html
    http://topic.csdn.net/t/20061114/09/5155649.html
    两篇帖子,你看一下
      

  3.   

     case   DataSet.Fieldbyname(fieldname).DataType   of   
              ftString,ftWideString:   
                    begin   
                        if   not   checkbox1.Checked   then   
                              begin   
                                  dataset.Filtered:=false;   
                                  dataset.Filter:='';   
                              end;   
                        dataset.OnFilterRecord:=FilterRecord;   
                        dataset.Filtered:=true;   
                    end;   
              ftSmallint,ftInteger,ftWord,ftLargeint,ftFloat,ftBCD:   
                    begin   
                        if   not   checkbox1.Checked   then   
                              dataset.Filtered:=false;   
                        dataset.Filter:=fieldname+'='+trim(edit1.text);   
                        dataset.Filtered:=true;   
                    end;   
          else   
              begin   
                  raise   exception.Create('该字段类型不可识别!');   
              end;   
          end;
    procedure   TFilterForm.FilterRecord(DataSet:   TDataSet;var   Accept:   Boolean);   
      begin   
          if   pos(StrLower(pchar(trim(edit1.text))),StrLower(pchar(dataset.FieldByName(fieldname).asstring)))>0   then   
                accept:=true   
          else   
                accept:=false;   
      end;
      

  4.   

    我用的 是 dbgrideh  并启用了 STfilter 过滤功能  
    问题是 还没有到 ClientDataSet1FilterRecord  这个过程 
    dbgrideh 的 ehlibcds 单元就 错了 type  mismatch  in  expression
      

  5.   

    你可以使用cxgrid来过滤也可以,不在ClientDataSet中过滤。
      

  6.   

    我不是 代码实现的过滤 而是  用三方控件 ehlib  dbgrideh 实现的过滤跟踪至  ehlibcds.pas 单元  出异常  “type  mismatch  in  expression ”网上我也查阅了不少资料 问题本身应该是Tclientdataset 中文过滤 bug 造成的  并且至今没有更正所以发帖 求解决方案因为项目中 采用了 控件ehlib  所以不考虑cxgrid 谢谢!
      

  7.   

    我现在做的只有两件事了 :1  期待delphi2010 正式版  据说已更改此bug2  放弃使用 dbgrideh 表格过滤功能
      

  8.   

    我现在做的只有两件事了 :1  期待delphi2010 正式版  据说已更改此bug2  放弃使用 dbgrideh 表格过滤功能