Master-Detail¶
Konsep Master-Detail dalam relational database disebut juga dengan One-to-many. Artinya satu record dalam sebuah dataset dapat direlasikan dengan banyak record di dataset lain. Ini adalah sebuah model yang menggunakan data dari satu dataset untuk memfilter data di dataset lain. Dataset yang digunakan untuk memfilter data disebut Master dan set data yang difilter disebut Detail.
Untuk mengimplementasikan konsep Master-Detail pada Epigoni, perlu dibuat dan dilakukan pengaturan-pengaturan tertentu pada tiga bagian metadata, yaitu: dataset, data package, dan form.
Dataset¶
Langkah pertama adalah membuat Datasets Master dan dataset Detail, dengan konfigurasi masing-masing sebagai berikut.
Dataset Master¶
Dataset Name: QRY_PLAYLIST (opsional)
Dataset Title: Playlist (opsional)
Connection: Connections ke database Chinook
Command Type: QUERY
Update Mode: UPDATEABLE
Update Table: PLAYLIST
Command Text:
SELECT
PLAYLISTID, NAME
FROM
PLAYLIST
Pada tab Fields, tentukan PLAYLISTID sebagai Key.
Dataset Detail¶
Dataset Name: QRY_PLAYLISTTRACK (opsional)
Dataset Title: Playlist Track (opsional)
Connection: Connections ke database Chinook
Command Type: QUERY
Update Mode: UPDATEABLE
Update Table: PLAYLISTTRACK
Command Text:
SELECT
PLAYLISTID, TRACKID
FROM
PLAYLISTTRACK
WHERE
PLAYLISTID=:PLAYLISTID
Pada tab Fields, tentukan PLAYLISTID dan TRACKID sebagai Key.
Pada tab Parameters, tambahkan atau generate parameter PLAYLISTID dengan Data Type-nya adalah INTEGER.
Data Package¶
Selanjutnya buatlah Data Packages baik dengan cara manual atau dengan cara generate dari dataset QRY_PLAYLIST.
Setelah data package terbentuk, klik kanan pada dataset QRY_PLAYLIST kemudian klik tombol Go To Data Package untuk menuju data package yang telah dibuat.
Edit data package tersebut, kemudian pada Data Package Editor, klik tombol Add Child pada QRY_PLAYLIST.
Pada Data Package Member, klik tombol “…” pada edit box Dataset.
Pilih dataset QRY_PLAYLISTTRACK, kemudian klik tombol OK.
Pada Data Package Member, untuk Relation Type-nya pilih MASTER-DETAIL.
Klik tombol Generate All Link sehingga kolom Links terisi dengan PLAYLISTID=PLAYLISTID.
Klik tombol OK, sehingga terlihat hasilnya yaitu dataset QRY_PLAYLIST dan QRY_PLAYLISTTRACK telah berelasi sebagai Master-Detail seperti pada gambar berikut.
Klik tombol Close pada Data Package Editor untuk menyimpan perubahan yang dilakukan.
Form¶
Untuk membuat form, lakukan seperti pada langkah pembuatan data package di atas, yaitu klik kanan pada data package yang telah dibuat, kemudian pilih Create Form atau Create Form and Action seperti pada gambar berikut.
Setelah form terbentuk, klik kanan dan pilih Go To Presentation untuk membuka form tersebut.
Selanjutnya, klik tombol Design.
Pada Standard Form Designer, klik tab Content, kemudian klik pada MultiTable1, selanjutnya isi DatasetName dengan QRY_PLAYLIST dan DatasetDetailName dengan QRY_PLAYLISTTRACK seperti pada gambar berikut.
Gulung (scroll) ke bawah dan ubah EditorType menjadi dpeMasterDetail.
Sampai pada tahap ini, penerapan konsep Master-Detail telah terpenuhi. Untuk melihat hasilnya, klik tombol Refresh Preview atau Preview Modal. Form Playlist akan tampak seperti pada gambar berikut.
Lakukan proses tambah atau ubah untuk memastikan form Master-Detail telah berfungsi dengan baik.
—
Selain menggunakan MultiTable, form Master-Detail dapat juga dibuat dengan menggunakan Table. Prinsipnya sama dengan MultiTable yaitu mengatur DatasetName dengan dataset master (QRY_PLAYLIST) DatasetDetailName dengan dataset detail (QRY_PLAYLISTTRACK) dan EditorType menjadi dpeMasterDetail. Hanya saja data yang tampil pada tampilan grid depan hanya data atau grid master saja.
Supaya data atau grid detail dapat juga ditampilkan pada bagian depan form, maka tambahkan satu Table lagi dengan mengatur DatasetName dengan dataset detail QRY_PLAYLISTTRACK.
Untuk membuatnya, terlebih dahulu kita hapus Multitable1 dengan mengklik tombol Remove.
Klik tombol Add dan pilih Table.
Isi DatasetName dengan dataset master yaitu QRY_PLAYLIST dan EditorType menjadi dpeMasterDetail.
Tambahkan lagi Table, kemudian isi DatasetName dengan dataset detail yaitu QRY_PLAYLISTTRACK.
Klik tombol Refresh Preview atau Preview Modal untuk melihat perubahan yang terjadi.
Seperti terlihat pada gambar di atas, tiap grid memiliki sekumpulan tombol, yaitu Add, Edit, dan Delete. Pada kebanyakan kasus, untuk grid detail biasanya tidak perlu ditampilkan set tombol kecuali pada mode tambah atau ubah pada data master.
Untuk menghilangkan tombol Add, Edit, dan Delete pada grid detail, ubahlah nilai ShowAddButton, ShowEditButton, dan ShowDeleteButton menjadi False pada Table2.
Klik tombol Refresh Preview atau Preview Modal untuk melihat hasilnya.