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;