Penampilan master detil dibutuhkan untuk data-data yang disimpan dalam lebih dari satu tabel dan mereka mempunyai hubungan satu sama lain. Contoh master detil adalah "faktur dan isi faktur" atau "nomor tunggu pasien" dan "data pasien". Ada beberapa cara menampilkan data master detil. Salah satunya dengan TAdoQuery.
Langkah-langkah Pemrograman
Beri form VCL-VCL berikut: 2 TAdoQuery, 1 TDataSource, 2 TDBGrid
Dalam artikel ini, saya akan menjadikan AdoQuery1 sebagai master dan AdoQuery2 sebagai detil. Kita tidak dapat secara langsung menghubungkan AdoQuery2 ke AdoQuery1. Agar dapat terhubung, kita membutuhkan perantaraan DataSource1. Hubungkan DataSource1 ke AdoQuery1 dan Datasource2 pada AdoQuery2
DataSource1.DataSet := AdoQuery1;
DataSource2.DataSet := AdoQuery2;
Kemudian barulah kita dapat menghubungkan AdoQuery2 ke AdoQuery1 dengan menghubungkan AdoQuery2 ke DataSource1
AdoQuery2.DataSource := DataSource1;
Pasangkan DBGrid1 pada AdoQuery1 melalui Datasource1 dan DbGrid2 pada Datasource2
DbGrid1.DataSource := DataSource1;
DbGrid2.DataSource := DataSource2;
Sekarang kita akan memberitahu tempat database yang akan diakses oleh AdoQuery1 dan AdoQuery2 dengan mengisi property ConnectionString.
AdoQuery1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Dataku.mdb;Persist Security Info=False';
AdoQuery2.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Dataku.mdb;Persist Security Info=False';
Komponen-komponen database sudah siap berperang. Sekarang kita tinggal memberikan daftar field yang akan diambil dan bagaimana cara mengambilnya. Sebelum membuat query, saya akan menampilkan tabel-tabel dan hubungan antar tabelnya sebagai berikut:
Saya bermaksud mengambil semua data pada tabel FakturMaster sebagai Master sebagai berikut:
AdoQuery1.SQL.Add('from FakturMaster');
Sedangkan saya mengambil detil dengan hanya menambilkan nama barang, unit, harga dan perkalian antara harga dan unit dengan nama title field total
AdoQuery2.SQL.Add('select B.NamaBarang As Barang, F.Unit, F.Harga, (F.Unit * F.Harga) As Total');
AdoQuery2.SQL.Add('from FakturDetil As F Left Join Barang As B');
AdoQuery2.SQL.Add('On B.KodeBarang = F.KodeBarang');
AdoQuery2.SQL.Add('where F.NoFaktur = :NOFAKTUR');
Sekarang jalankan aplikasi. Anda akan mendapatkan penampilan mirip-mirip seperti ini:
Kode program selengkapnya:
0 comments:
Posting Komentar