我使用CXGRID过滤出一部分数据,想统一修改某一列的值,直接处理后台数据集用
FIRST;
WHILE NOT EOF DO
BEGIN

END
这样处理是整张表,撤掉过去后看到全部都被修改了。
他的过滤机制跟DBGridEh不同,DBGrideh是filter数据集的模式。
而CXGRID不是,不知道如何统一修改过滤出来的数据呢?

解决方案 »

  1.   

    使用CXGRID过滤出数据,是在CXGrid数据的基础上,通过再次过滤,让CXGRID仅显示过滤后的数据。但是CXGRID的数据集并没有过滤,所以你使用with CXGRID1.DataSource.DatsSet do
    begin
      first;
      while not Eof do
      begin 
        .......
      end;
    end;这些都还是没有过滤的数据。建议你使用一个过程(或按键事件),通过SQL语句过滤,再进行你需要的处理:procedure TFrm1.Button1Click(Sender: TObject);
    var SQL:string;
    begin
      SQL:='select * from 表名 Where (日期>='+#39+s1+#39+') and (日期<='+#39+s2+#39+')';
      DataModule1.ClientDataSet1.Active:=False;
      DataModule1.ClientDataSet1.DataRequest(SQL);
      DataModule1.ClientDataSet1.Active:=True;
      with DataModule1.ClientDataSet1 do
      begin
        first;
        while not Eof do
        begin 
          .......
        end;
      end;
      DataModule1.ClientDataSet1.Active:=False;
    end;DataModule1.ClientDataSet1 这是C/S的控件,你可以使用其它数据集控件。如:ADO的数据集控件。