Search This Blog

Header Detail Form

Untuk proses entry data, form header detail mutlak diperlukan. Apakah itu form header detail? Form header detail adalah suatu form yang terdiri dari header form dan detail form. Header form digunakan untuk entry data header dan detal form untuk mengentry data detail.
Sebagai contoh misalnya untuk entry data order permintaan bahan baku untuk proses produksi dari departemen produksi ke bagian gudang terdiri dari data-data nomor order, nama bagian, tanggal order, jam order, nama barang yang diorder, jumlah barang dan satuan barang.

Jika data tersebut dipecah berdasarkan header detail maka data pada header form adalah:
1. Nomor Order
2. Nama Bagian
3. Tanggal Order
4. Jam Order
5. Keteranagan
Sedangkan data yang dientry pada details form adalah:
1. Nama Barang
2. Jumlah Barang
3. Satuan Barang

Contoh bentuk header detail dari Order Permintaan bahan baku adalah sebagai berikut:


Pada Microsft Access, untuk membuat form header-detail diperlukan 2 buah tabel. Tabel pertama untuk menyimpan data header sedangkan tabel kedua digunakan untuk menyimpan data detail.

Pada contoh ini tabel header adalah tmpOrder dengan field-field data:
1. Nomor Order
2. Kode Bagian
3. Tanggal Order
4. Jam Order
5. Keterangan

Tabel detail adalah tmpOrder Detail
1. Nomor Order
2. Kode Barang
3. Jumlah Barang

Filed Nomor Order merupakan Primary Key pada tabel tmpOrder sedangkan pada tabel tmpOrder Detail Primary Key-nya adalah Nomor Order dan Kode Barang. Kedua tabel ini direlasikan pada field Nomor Order dengan tipe relasi satu ke banyak (one to many).

Relasi tabel pada microsoft access dapat dilihat seperti pada gambar berikut:

Pada gambar di atas tabel tmpOrder direlasikan dengan tabel tmpOrder Detail dengan relasi one to many. Untuk melihat detail relasi klik kanan pada garis yang menghubungkan tabel tmpOrder dan tabel tmpOrder Detail lalu klik Edit Relationship.

Akan muncul window Edit Relationship seperti gambar berikut:

Keterangan:
- Enforce Referential Integrity: pilihan untuk merelasikan antara 2 tabel
- Cascade Update Related Fields : Jika ada perubahan data pada field Nomor Order pada tabel tmpOrder maka akan merubah juga data pada tabel tmpOrder Detail
- Cascade Deleted Records : Jika data Nomor Order pada tabel tmpOrder dihapus, maka data pada tabel tmpOrder Detail juga akan ikut terhapus untuk data Nomor Order yang sama.

Pada form Order Untuk Proses Produksi tampak Nama Barang pada detal form-nya sedangkan tabel tmpOrder Detail yang digunakan pada form detal tidak ada field Nama Barang. Karena pada tabel tmpOrder Detail tidak ada data nama barang dan satuan barang, maka data nama barang dan satuan diambil dari tabel Barang yang direlasikan ke tabel tmpOrder Detail dengan menggunakan field Kode Barang.

9 comments:

Anonymous said...

mau nanya lagi nih, mas..
tentang relationship.

contoh kasus :
saya mau buat sebuah Database Kontrakan(setiap kontrakan terdiri atas petak-petak).

tbKontrakan(kode_kontrakan(PK),nama_kontrakan,alamat,pemilik)
tbPetak(kode_kontrakan,kode_petak)
tbFasilitas(kode_kontrakan,kode_petak,jumlah_kamar,lisrik,pdam,kamar_mandi)
tbHarga(kode_kontrakan,kode_petak,harga,sistem_byr)

1. apakah db yg saya rancang sudah benar dan bagaimana relationshipnya?
2. bagaimana caranya mencegar munculnya data ganda pada ketiga table terakhir. misal :kode_kontrakan=K01, kode_petak=A hanya ada satu record, padahal 2(dua)kode tsb berada pada 2(dua) field sehingga pemberikan status PK membingungkan (bagi saya..)
mohon bantuannya
Terima kasih

(Budhi)

AFA said...

1. Rancangan database tergantung dari kebutuhan input dan output yang dihasilkan jadi suatu rancangan database tidak dapat dikatakan benar atau salah.

2. Untuk mencegah muncul data ganda pada tabel tbPetak, tbFasilitas dan tbHarga maka field kode_kontrakan dan kode_petak dijadikan Primary Key. Dalam satu tabel kita dapat menseting dua field sebagai Primary Key.

Anonymous said...

Sudah saya coba, tapi sepertinya pada ms accees 1 table hanya bisa memakai 1 field PK. mungkin yg mas maksud, Indexed(no duplicate) ya?

Kalaupun bisa bagaimana kita merekam :

(kode_kontrakan,kode_peta)
K001,A
K001,B
K001,C
K002,A
K002,B
K003,A

Kalau kita PK atau No-duplicate-kan field Kode_Kontrakan dan field Kode_Petak pada tbPetak, kita hanya bisa merekam:

(Kode_Kontrakan,Kode_Petak)
K001,A
K002,B
K003,C

padahal dalam 1 Kontrakan terdiri dari lebih dari 1 Petak. misal pada Kontrakan K001 ada Petak A,Petak B,Petak C, dst..

(Budhi)

AFA said...

Cara membuat dua PK di tabel:
1. Buka tabel pada design view.
2. Tekan dan tahan tombol Ctrl.
3. Klik pada kotak sebelah kiri nama field Kode_Kontrakan.
3. Pada posisi tambol Ctrl masih ditekan klik pada kotak sebelah kiri nama field Kode_Petak.
4. Jika field telah terblok lepaskan tombol Ctrl.
5. Klik tombol Primary Key (gambar kunci) pada toolbar Tabel Design.
6. Sekarang tabel memiliki 2 buah PK.

Anonymous said...

Benar, mas, ternyata emang bisa, saya aja yg katro...hehehe..
O, ya kalo melihat rancangan database saya diatas, tbPetak tidak ada gunanya dong?

(Budhi)

Anonymous said...

Melanjutkan pertanyaan diatas,mas. jadi saya ubah tablenya sbb (dalam ms access) :

tbKontrakan(kode_kontrakan(PK),nama_kontrakan,alamat_kontrakan,pemilik)
tbPetak(kode_kontrakan(PK/DOK),kode_petak(PK/DOK),harga)
tbPenyewa(kode_penyewa(PK),no_ktp,nama)
tbSewa(kode_sewa(PK),kode_kontrakan(PK/DOK),kode_petak(PK/DOK),kode_penyewa,tgl_awal_sewa,tgl_akhir_sewa)

(catatan : DOK=Index, Duplicate OK)
Saya berharap pada tbPetak yg bisa dijadikan PK adalah field Kode_Kontrakan dan Kode_Petak, jadi kita bisa rekam (Kode_Kontrakan,Kode_Petak):(K001,A), (K001,B),(K001,C),(K002,A),(K002,B),(K003,A) dst..
Pada tbSewa saya bermaksud sama yaitu menjadikan gabungan 2(dua) field tsb sebagai Primary Key.
Yang jadi masalah ketika saya hendak merelasikan field kode_kontrakan di tbPetak dengan field kode_kontrakan pada tbSewa, tidak menghasilkan Relationship yang bisa di-Enforce Referential Integrity-kan yang salah satunya berarti “kita bisa merekam pada tbSewa Kode_Kontrakan atau Kode_Petak yang tidak ada di tbKontrakan atau di tbPetak”. Hal ini juga terjadi ketika saya mencoba merelasikan field kode_petak di tbPetak dengan field kode_petak pada tbSewa
Mohon bantuan dan solusinya.
Terima Kasih.
(Budhi)

AFA said...

Keliatannya design databasenya terlalu kompleks/rumit. Saran saya kalau tabel master cukup pake 1 PK saja dan tabel dengan 2 PK biasanya ada di tabel transaksi. Sebagai contoh tabel Purchase_Order_Header dan tabel Purchase_Order_Detail, PK pada tabel Purchase_Order_Header adalah No_PO dan PK di tabel Purchase_Order_Detail adalah No_PO dan Kode_Brg.

Untuk menganalisa database yang dibuat di Access pilih menu Tools -> Analyze. Disitu ada submenu Table dan Performance.

Anonymous said...

mas klo sya dah bkin form motor pke form spil dan dah sya isi datanya...
nah masalahnya pda ssat sya bkin switchboard trus sya menampilkan form motor ko data yg dah da g muncul y mas..
itu knapa...?
tlong blasannya mas wat UKP besok....

AFA said...

Ketika anda membuat item pada Switchboard untuk membuka form ada dua pilihan yaitu "Open Form in Add Mode" dan "Open Form in Edit Mode". Pastikan anda memilih "Open Form in Edit Mode". Jika anda memilih "Open Form in Add Mode" maka data yang sudah dimasukkan tidak akan ditampilkan pada form.