Pada komponen TIBDataSet terdapat property RecordCount, yang merupakan warisan dari class TDataSet.
Namun sayangnya property RecordCount yang ada di TIBDataSet kurang memenuhi kebutuhan informasi yang kita butuhkan.
property RecordCount yang ada di TIBDataSet hanya menampilkan record yang sudah dimuat (fetch row), bukan keseluruhan record hasil query.
Kali ini kita akan melakukan override untuk memperbaiki bug/kelemahan property RecordCount agar sesuai dengan yang kita harapkan.
Berikut ini contoh kodenya …
uses SysUtils, Classes, DB, IBCustomDataSet, IBDatabase, IBXPlus, DBTables; type // Tambahkan ini ... TIBDataSet = class(IBCustomDataSet.TIBDataSet) private function GetRecordCountPlus: Integer; published property RecordCount: Integer read GetRecordCountPlus; end; // Sampai sini .. Tekan Ctrl+Shift C untuk menulis codenya Tdm = class(TDataModule) db: TIBDatabase; tr: TIBTransaction; tb: TIBDataSet; ... ... ... ... { TIBDataSet } function TIBDataSet.GetRecordCountPlus: Integer; var s: string; begin s:=SelectSQL.Text; System.Delete(s,1,pos('from ',LowerCase(s))-1); s:='select count(*) '+s; with IBCustomDataSet.TIBDataSet.Create(nil) do begin Database:=Self.Database; SelectSQL.Text:=s; Open; Result:=Fields[0].AsInteger; Close; Free; end; end;
Setelah melakukan perbaikan diatas, maka property RecordCount akan menghasilkan informasi sesuai dengan yang kita butuhkan yaitu jumlah record sesuai hasil query.
Semoga bermanfaat
No Comments