Membaca banyak data dari suatu database tentu sangat melelahkan dan merepotkan, apalagi jika harus menganalisanya. Data akan lebih mudah dibaca dan dianalisa ketika disajikan dalam bentuk grafik atau report yang bisa dicetak.
Buka kembali project TChart seperti pada tulisan terdahulu, jika tidak punya download TChart Source Code ver.1.3, kemudian ekstrak dan klik ganda file TChart.dpr melalui Widows Explorer. Sesuai dengan paragraf awal artikel ini download Linked Database Source Code, kemudian ekstrak di komputer kamu.. sebelum kamu menambahkan file .pas ke project, buatlah terlebih dahulu driver ODBC karena jika dipaksakan maka sebuah pesan error [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified akan muncul, dan program Delphi kamu akan autoclose (tertutup sendiri).
Database yang akan dihubungkan dengan grafik memakai Ms Access, cara koneksi dengan program Delphi biasanya memakai komponen ADO melalui ODBC. Segera buat driver ODBC, dengan mengklik Start -> Control Panel.. pada windows yang ditampilkan klik ganda menu Administrative Tools, klik ganda lagi pada menu Data Sources (ODBC) sampai muncul kotak dialog ODBC Data Source Administrator, pilih tab System DSN dan lakukan langkah-langkah seperti gambar di bawah ini
Jika sudah selesai, klik kanan mouse pada project TChart.exe, pada menu yang muncul klik Add.. kemudian cari dan pilih 2 buah file .pas (uLinked, uqfmLinked) yang akan ditambahkan seperti gambar di bawah ini
Seperti biasa aktifkan form fmMainTChart, kemudian klik ganda komponen popupmenu bernama pmOtherDemo.. pada popmenu yang muncul klik ganda menu Linked Database..
Tambahkan code seperti di bawah ini untuk menampilkan aplikasi ini melalui aplikasi TChart
procedure TfmMainTChart.miLinkedDatabaseClick(Sender: TObject); begin fmLinked.ShowModal end;
Tekan tombol Run untuk menjalankan aplikasi ini… jika muncul pesan Form ‘fmMainTChart‘ references form ‘fmLinked’ declarated in unit ‘uLinked’ which is not in your USES list. Do you wish to add it? tekan tombol Yes. Tekan kembali tombol Run.. Jika tidak ada pesan lain yang muncul berarti aplikasi telah berjalan dengan baik.
1. Menghubungkan database dengan komponen grafik
Komponen yang dipakai dalam unit uLinked ini, sebenarnya turunan dari komponen TChart yaitu TDBChart, karena untuk menghubungkan database (melalui dataset) lebih cocok menggunakan komponen TDBChart. Selain penambahan nilai Dataset dalam property Data Source dari komponen TChartSeries, semua property-nya sama dengan komponen TChart. TChartSeries adalah komponen yang ada di dalam TDBChart yang nantinya dipakai untuk menampilkan data dalam wujud grafik.. untuk lebih jelasnya klik ganda komponen TDBChart pada unit uLinked, di sana ada sebuah Series1 (series jenis Bar, atau TBarSeries), perhatikan gambar di bawah
Pada gambar di atas dipilih data source jenis Dataset dan data yang akan ditampilkan berasal dari tabel Orders (direfresentasikan dalam komponen tbOrdes), kemudian sebagai sumbu Y dipilih field AmountPaid, sedang sumbu X field SaleDate.

Perhatikan deklarasi yang ditambahkan dalam bagian published unit uLinked (bagian ini menggantikan bagian public, sebenarnya tidak ada alasan khusus untuk menghapus bagian public.. daripada kosong, kan?!…) juga function GetCompanyGrid, yang berisi code :
function TfmLinked.GetCompanyGrid: String;
begin
Result:= tbCustomer.FieldbyName('COMPANY').AsString;
end;
Function ini hanya untuk mendapatkan nilai field COMPANY dari record yang dipilih, ketika variabel FCompanyGrid dipanggil. Variabel ini nantinya dipakai sebagai title dari series dalam report dengan menggunakan Quick Report..
Prosedur untuk me-refresh data yang ditampilkan dalam grafik
Ketika terjadi scrolling atau editing data pada dataset master (dsCustomer, reprensetasi dari tabel Customer) maka data pada dataset client (dsOrders, representasi dari tabel Orders) otomatis berubah sesuai dengan data master-nya. Logikanya data-data yang ditampilkan dalam grafik seharusnya berubah mengikuti nilai dari tabel Orders (ingat dataset yang dimasukkan dalam Series1 adalah tbOrders) . Untuk itu Klik ganda sel di sebelah kanan event OnDataChange pada komponen TDataSource dsCustomer, dan lihat code-nya.
procedure TfmLinked.dsCustomerDataChange(Sender: TObject; Field: TField); begin dbcLinked.CheckDataSource(Series1); end;
Metode CheckDataSource akan me-refresh semua data pada TChartSeries baik dari dataset Query, Table atau sumber data TChartSeries lain. Metode ini dapat dipanggil secara rutin jika kita ingin menambahkan atau memodifikasi data yang ditampilkan secara realtime pada TChartSeries. Jadi data yang di-plot pada TChartSeries Series1 akan berubah ketika ada perubahan data pada dataset tbOrders.
Mem-preview report
Selain ditampilkan dalam aplikasi, agar grafik dapat dicetak maka perlu di-preview terlebih dahulu. Manfaatkan komponen Button yang ada dengan mengklik ganda komponen tersebut dan ketikkan code berikut :
procedure TfmLinked.btPrintPreviewClick(Sender: TObject); begin qrLinked.Preview; end;
2. Membuat report dengan Quick Report
Berikut tip untuk yang belum mengetahui cara praktis membuat form report dengan QuickReport, klik menu File -> New -> Other… pada kotak dialog New Items yang muncul, aktifkan tab New pilih Report.. maka sebuah form yang hanya terdiri atas komponen TQuickRep akan dibuatkan.
Dalam form qrLinked (dari unit uqfmLinked), hanya band summary yang diaktifkan (cuma property Bands.HasSummary yang diberi nilai True), kemudian komponen TQRChart ditambahkan pada band summary ini. Pada komponen TQRChart tersebut memang disengaja tidak ada series yang dibuat, karena akan dibuat secara realtime melalui prosedur event BeforePrint dari komponen TQuickRep qrLinked, seperti code di bawah ini.. tetapi sebelumnya deklarasikan variabel bsNewSeries dalam bagian public dari unit uqfmLinked.
public bsNewSeries: TBarSeries;
procedure TqrLinked.QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin if bsNewSeries = nil then begin bsNewSeries:= TBarSeries.Create(Self); bsNewSeries.ParentChart:= qrdbcLinked; bsNewSeries.Title:= fmLinked.FCompanyGrid; bsNewSeries.BarStyle:= bsRectangle; bsNewSeries.SeriesColor:= clGreen; bsNewSeries.Marks.Visible:= False; bsNewSeries.DataSource:= fmLinked.tbOrders; bsNewSeries.YValues.ValueSource:= 'AmountPaid'; bsNewSeries.XLabelsSource:= 'SaleDate'; end; end;
Prosedur di atas sebenarnya hanya memberi nilai pada beberapa property dari series dalam bentuk code. Catatan yang perlu diperhatikan adalah title dari series yang dibuat secara realtime tersebut sesuai dengan nilai dari variabel FCompanyGrid pada unit uLinked, warna bar ‘Hijau’, dan Data Source, sumbu Y, sumbu X dibuat sama dengan komponen TDBChart dalam unit uLinked.
Untuk membebaskan memori dari series yang terbentuk secara realtime tadi maka klik ganda sel di sebelah kanan event AfterPreview dari komponen TQuickRep qrLinked.
procedure TqrLinked.QuickRepAfterPreview(Sender: TObject); begin bsNewSeries.Free; bsNewSeries:= nil; end;
Nuwun..
Daftar download untuk artikel ini:
1. TChart Source Code ver.1.3 - 8.65 kB
2. Linked Database Source Code - 23.43 kB
3. TChart Application ver.1.3 - 647 kB




