ClientDtSet_1.Filter:='工程名称='+quotedstr('data_block_1');
  ClientDtSet_1.Filtered :=true;工程名称字段为memo类型

解决方案 »

  1.   

    可以在OnFilterRecord事件里处理begin    
      if DataSet.FieldByName('工程名称').AsString=Edit1.Text then  
         Accept:=true  
      else 
         Accept:=false; 
    end;
      

  2.   

    你这个Edit1.text是我过滤的字符吗?关键一设置过滤字段,就报类型不匹配啊,还没到你这个事件里面啊
      

  3.   

    你这个Edit1.text是我过滤的字符吗?关键一设置过滤字段,就报类型不匹配啊,还没到你这个事件里面啊
    前提当然是去除原先的过滤写法了
      

  4.   


    procedure TForm1.RzButton5Click(Sender: TObject);
    begin
     //  ClientDtSet_1.Filter:='工程名称='+quotedstr('data_block_1');
      ClientDtSet_1.Filtered :=true;
    end;procedure TForm1.ClientDtSet_1FilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    begin
      if (DataSet.FieldByName('工程名称').AsString=quotedstr('data_block_1')) then
        Accept :=true
      else
        Accept :=false;
    end;执行上面的代码,我发现在该事件,跳转到的是Accept=false;
    执行的结果是这是MEMO字段的显示方法procedure TForm1.ClientDtSet_1Field2GetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    begin
      Text:=Sender.AsString;
      DisplayText :=true;
    end;procedure TForm1.ClientDtSet_1Field2SetText(Sender: TField;
      const Text: String);
    begin
      Sender.AsString :=Text;
    end;
      

  5.   

    你好,这是原程序的代码地址http://download.csdn.net/detail/wangwei244157887/7237619
    试验用的是ACCESS,实际是Sqlite,用你的方法试验没成功
      

  6.   

    看你的程序,既然Sender.AsString都能显示,没理由有问题。为什么不trace一下这行代码??DataSet.FieldByName('工程名称').AsString=quotedstr('data_block_1')
    为什么需要quotedstr??其实这里已经不需要了...
      

  7.   

    看你的程序,既然Sender.AsString都能显示,没理由有问题。为什么不trace一下这行代码??DataSet.FieldByName('工程名称').AsString=quotedstr('data_block_1')
    为什么需要quotedstr??其实这里已经不需要了...
    恩,太谢谢了,为什么用你这种方法可以,而直接写Filter属性却不可以呢?求指教
      

  8.   

    看你的程序,既然Sender.AsString都能显示,没理由有问题。为什么不trace一下这行代码??DataSet.FieldByName('工程名称').AsString=quotedstr('data_block_1')
    为什么需要quotedstr??其实这里已经不需要了...
    恩,太谢谢了,为什么用你这种方法可以,而直接写Filter属性却不可以呢?求指教
    因为Memo字段,控件无法确定存储的内容,无法统一像AsString来使用;所以控件内部会提示类型匹配问题。
      

  9.   

    看你的程序,既然Sender.AsString都能显示,没理由有问题。为什么不trace一下这行代码??DataSet.FieldByName('工程名称').AsString=quotedstr('data_block_1')
    为什么需要quotedstr??其实这里已经不需要了...
    恩,太谢谢了,为什么用你这种方法可以,而直接写Filter属性却不可以呢?求指教
    因为Memo字段,控件无法确定存储的内容,无法统一像AsString来使用;所以控件内部会提示类型匹配问题。
    虽然不怎么明白,但是感觉有点类似于一个字段设置为Integer类型,但是我们也可以像是用ASString方法一样,进行强制转换,对吗?