不過,把GROUP BY的邏輯想通應該也可以如法泡製。
直接把結果轉出來吧!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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化
沒有留言:
張貼留言