大悟还俗

邮箱 key_ok@qq.com 我的收集 http://pan.baidu.com/share/home?uk=1177427271
  新随笔  :: 联系 :: 订阅 订阅  :: 管理

TdxMemData 的Bug和使用

Posted on 2013-10-21 13:29  大悟还俗_2  阅读(913)  评论(0编辑  收藏  举报

aa.CopyFromDataSet(acdsBase);//克隆一个,与LoadFromDataSet区别,如果设置了Field,那么L只会导入设置的部分,而C则是全部复制过来

TdxMemData不能使用Filter。

  ID:=aa.FieldByName('ID').AsString;
  aa.Filter:='ParentID='+QuotedStr(ID);
  if aa.FindFirst then
  repeat
    Prompt(aa.FieldByName('Name').AsString);

  until aa.FindNext=false;

无效。

 

或许是我不会用。

谁会,请指教。

============================================================================

09-02-23

一次偶然的机会找到一点代码。

 

procedure TfrmReportEmpSalary.dxBarButton2Click(Sender: TObject);
begin
  inherited;
  dxMemData1.DisableControls;
//  dxMemData1.ProgrammedFilter:=true;//这里可以不要
  dxMemData1.Filtered:=false;
  dxMemData1.ProgrammedFilter:=false;//设置false,直接用OnFilterRecord事件来判断。
//  dxMemData1.Filter:='EnterpriseNo='+QuotedStr('DYJQY');//这里写什么都没用。
  dxMemData1.Filtered:=true;
  dxMemData1.EnableControls;

end;

procedure TfrmReportEmpSalary.dxBarButton3Click(Sender: TObject);
begin
  inherited;
  with dxMemData1 do
  begin
    DisableControls;
    try
//      ProgrammedFilter:=false;//这里可以不要

      Filtered:=false;
      ProgrammedFilter:=true;//设置true,代码控制

      First;
      while not eof do
      begin
        if dxMemData1.FieldByName('EnterpriseNo').AsString='DYJQY' then
          FilterList.Add(Pointer(dxMemData1.CurRec+1));//是保存在FilterList里的。
        Next;
      end;
      Filtered:=true;
    finally
      EnableControls;
    end;
  end;
end;

procedure TfrmReportEmpSalary.dxMemData1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  inherited;
  Accept:=DataSet.FieldByName('EnterpriseNo').AsString='EJXDQY';

end;

procedure TfrmReportEmpSalary.dxBarButton4Click(Sender: TObject);
begin
  inherited;
  Prompt(IntToStr(dxMemData1.FilterList.Count));
end;