Translate

ebook【Delphi跨平台資料庫程式設計火速上手】電子書出版 (CHT)

Delphi 跨平台資料庫程式設計火速上手,是本關於整合 Delphi 的跨平台技術打造 2-Tier 架構的跨平台 APP 的入門技術書。 全書沒有需要理解的技術知識,只講套路。 力求短時間把製作 APP 的工法熟悉,未來要開發其它的應用程式也能舉一反三。 底下...

2013/06/14

ClientDataSet上使用GROUP BY篩選

ClientDataSet對已經收到的資料集是不能再下SQL語法篩選的。

不過,把GROUP BY的邏輯想通應該也可以如法泡製。

直接把結果轉出來吧!


procedure TfmMain.CDS_GroupBy_Proc(cdsSource: TClientDataSet; GroupFieldName1,
  GroupFieldName2: string);
var
  Field1, Field2:string;
begin
  with cdsSource do
  begin
    IndexFieldNames := GroupFieldName1;
    First;
    Field1 := FieldByName(GroupFieldName1).AsString;
    Field2 := FieldByName(GroupFieldName2).AsString;
    Next;   //迴圈從第二行開始
    while not Eof do
    begin
      //相同工程的時候
      if (Field1 = FieldByName(GroupFieldName1).AsString) and
         (Field2 = FieldByName(GroupFieldName2).AsString) then
      begin
        Prior;    //Delete成為最後一筆記錄的時候,為了Eof物件不會變成True
        Delete;
      end
      else
      begin
        Field1 := FieldByName(GroupFieldName1).AsString;
        Field2 := FieldByName(GroupFieldName2).AsString;
      end;

      Next;
    end;
    //您選擇的第一行
    First;
  end;
  try
    cdsSource.ApplyUpdates(0);
  except
    mmoLog.Lines.Add('CDS_GroupBy_Proc Error');
  end;
end;

參考來源:ClientDataSet上のGroup By化

沒有留言:

張貼留言