那不如在中间层写一个方法,客户端把SQL语句传过去,就可以返回数据了。
在客户端过滤相同的数据集
说明:
传入参数 1:SourceDataSet,要过滤的数据集;
2: FilterString,条件-同Filter属性
传出参数 过滤后的数据集
Function FilterDataSet(SourceDataSet: TClientDataSet;
FilterString: String): TClientDataSet;
Var
i, j: integer;
CDS1, CDS2: TClientDataSet;
s: String;
begin
s := FilterString;
CDS1 := TClientDataSet.Create(Nil);
CDS2 := TClientDataSet.Create(Nil);
CDS1.Data := SourceDataSet.Data;
CDS2.Data := SourceDataSet.Data;
CDS1.First;
CDS2.First;
For j := 0 To CDS2.RecordCount - 1do
CDS2.Delete;
CDS1.Filtered := false;
CDS1.Filter := s;
CDS1.Filtered := true;
Try
For j := 0 To CDS1.RecordCount - 1do
begin
CDS2.Insert;
For i := 0 To CDS1.Fields.Count - 1do
begin
CDS2.Fields.Value := CDS1.Fields.Value;
end;
CDS2.Post;
CDS1.Next;
end;
Result := CDS2;
Finally
FreeAndNil(CDS1);
FreeAndNil(CDS2);
end;
end;