Translate

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化

沒有留言:

張貼留言

Why I Choose Delphi! (CHT)

扣除使用 C++ Builder 的時間,我實際使用 Delphi 的時間點是 2012 年,它帶我看到了不一樣的世界,見識到世界各地的高手使用 Delphi 創造出他們引以為豪的產品,並且無私的分享他們的學習知識,使我的技術能力得以跟隨他們的能力提升。 最最讓我喜歡的...