Belajar MS Access (8)

Oleh: Haer Talib (HaerTalib.com)

Artikel ini merupakan lanjutan artikel Belajar MS Access (7).

Keterangan:
Artikel Belajar MS Access ditulis secara bersambung di www.RumahAccess.com sebagai bahan belajar/tutorial bagi pemula. Dalam tulisan ini dibahas cara pembuatan database dan aplikasi Invoice sebagai contoh kasusnya.


Pada artikel sebelumnya kita telah menyelesaikan pembuatan form untuk mengelola data Customer. Form tersebut terdiri dari tiga buah form, yaitu frm_Customer sebagai form utama, frm_Customer_sub sebagai subform (dataheet), dan frm_Customer_data sebagai form data (single form, popup). Teknik ini kita sebut “Form Tiga Serangkai” dan dapat diterapkan hampir pada semua kebutuhan mengelola data.

Pada artikel ini kita akan membuat form untuk memasukkan data Invoice.

TABLE INVOICE


Pada artikel seri ke-2 kita telah membuat tbl_Invoice untuk menyimpan data Invoice, serta tbl_Invoice_detail untuk menampung detail dari setiap Invoice. Kedua table telah dihubungkan dengan Relationship.

Sebenarnya, kalau hanya untuk menyimpan data saja kedua table tersebut sudah mencukupi. Anda bisa menggunakan tampilan Datasheet untuk memasukkan dan mengelola data.

Namun anda tentu mengharapkan bisa memasukkan data dalam bentuk form Invoice, kemudian mencetak Invoice yang diperlukan. Untuk keperluan inilah kita membuat aplikasinya.


FORM INVOICE


Saya mempunyai contoh aplikasi Invoice yang digunakan di perusahaan saya, hasil cetaknya seperti berikut ini:


Gambar 1. Contoh Invoice


Untuk memasukkan data Invoice, digunakan form seperti berikut ini:

Gambar 2. Contoh form input data Invoice


Tentu banyak model Invoice. Selain ditentukan oleh kreativitas pembuatnya, model Invoice juga ditentukan oleh keperluan sesuai jenis usaha. Namun untuk latihan kita, mungkin sebaiknya kita nyontoh saja dari tampilan di atas.

MEMODIFIKASI tbl_Invoice


Setelah saya periksa kembali rancangan tbl_Invoice yang telah kita buat pada latihan yang lalu, ternyata kita perlu melakukan sedikit modifikasi agar terpenuhi semua unsur yang terdapat pada contoh Invoice di atas.

Untuk itu lakukan langkah-langkah sebagai berikut:
1.    Buka file database Invoice.accdb yang sudah anda buat sebelumnya.
2.    Pada Navigation Pane, klik-kanan tbl_Invoice, klik “Design View”.
3.    Tambahkan field-field sehingga tampak sebagai berikut:



Gambar 3. Memodifikasi tbl_Invoice

Field-field yang ditambahkan adalah:
UP -- Text -- 50
Pengantar -- Text -- 255
Lain -- Currency
Kota -- Text -- 50
Status -- Text -- 20

MEMBUAT FORM frm_Invoice


Sekarang kita membuat form untuk memasukkan data Invoice. Lakukan langkah-langkah sebagai berikut:
1.    Klik ribbon tab CREATE, klik “Form Design”.
2.    Langsung simpan dengan nama: frm_Invoice
3.    Untuk property form, atur sebagai berikut:




4.    Selanjutnya, tambahkan field ke atas form sehingga tampak sebagai berikut:



Gambar 4. Rancangan form frm_Invoice

Perlu ketelatenan ya? Tentu saja. Hingga tahap ini, kemampuan anda seharusnya sudah bisa untuk menambahkan field, menambahkan button, menambahkan dan mengatur tata letak control di atas form.

Berikut ini saya kasih beberapa clue:
  • Untuk mengubah Text Box menjadi Combo Box: klik-kanan field (Text Box), klik “Change To”, pilih “Combo Box”.
  • Untuk Combo Box Status, sebaiknya anda membuat sebuah table yang berisi status Invoice sehingga pemakai tinggal memilih status yang tepat, misalnya: Draft, Terkirim, Pending, Problem, Closed. Di dalam latihan ini, beri nama table sebagai: tbl_Invoice_Status, dengan field tunggal bernama Status. Jadi pada Row Source Combo Box Status terisi: tbl_Invoice_Status



  • Untuk Combo Box CustomerID



  • Di bawah Combo Box CustomerID, terdapat sebuah Text Box yang diberi warna latar belakang abu-abu (grey), digunakan untuk menampilkan alamat dari Customer. Text Box ini diberi nama: txtAlamat
    Property Control Source: =[CustomerID].Column(2)
  • Di bawah Text Box Pengantar, tambahkan sebuah Subform. Beri nama: Sub1 
  • Untuk field Nomor, beri warna latar belakang grey. Walaupun field ini bisa diedit atau diisi secara manual, namun kita akan membuat penomoran yang otomatis (trik ini yang sering ditanyakan).
  • Untuk Sub Total, tambahkan sendiri Text Box dari Controls. Beri nama: txtSubTotal
    Property Control Source diisi: =DLookUp("Ttl";"qry_Invoice_total";"MasterID=" & Nz([RecID];0))
    Pada ekspresi di atas terdapat sebuah Query bernama qry_Invoice_total yang akan kita buat kemudian.
  • Untuk Total, tambahkan juga Text Box dari Controls. Beri nama: txtTotal
    Property Control Source diisi: =[txtSubTotal]-Nz([Diskon];0)+Nz([Lain];0)-Nz([Pajak];0)
  • Warna grey pada kotak di belakang field Kota, PenandaTangan, dan Jabatan merupakan sebuah Box yang bisa ditambahkan dari Controls. Box ini ditempatkan di bagian belakang (klik Box lalu pada ribbon tab Arrange, klik “Send to Back”).
  • Untuk field Pengantar dan Keterangan dengan tinggi lebih dari field biasa, sebaiknya atur property:

  • Di sebelah kanan field Nomor dan field Sub Total tambahkan control Label dengan simbol « (bisa ambil dari aplikasi Character Map di Windows). Maksud simbol ini adalah field di sebelahnya bisa di-double-click untuk melakukan perhitungan ulang (recalculate).
  • Untuk Button, yang pertama bernama: cmdUndo, yang kedua bernama: cmdSave dan yang ketiga bernama: cmdPrint 
  • Untuk gambar ikon dan logo perusahaan, tambahkan control Image (jangan salah control ya). Image untuk ikon diberi nama: imgIcon dan Image untuk logo perusahaan diberi nama: imgLogo 
  • Untuk setiap form section (Form Header, Detail, dan Form Footer) jangan lupa atur Tab Order nya agar navigasi di dalam form logis.

Pekerjaan mengatur tata letak field seharusnya selesai :D, namun jika anda mencoba menjalan form di atas, mungkin akan muncul error karena query qry_Invoice_total belum dibuat. Anda bisa mengosongkan dulu property Control Source dari txtSubTotal agar tidak muncul error.



MENAMBAHKAN EVENT ON RESIZE


Pada form Invoice ini kita menggunakan sebuah subform. Agar ukuran subform ini sesuai dengan ukuran form induknya, maka diperlukan sedikit perintah ketika terjadi event Resize (perubahan ukuran form induk).

Selain itu kita juga menyediakan Button yang diletakkan pada sudut kanan-atas. Agar letak button ini ikut menyesuaikan dengan ukuran form, maka letaknya harus dibuat dinamis, yang bisa kita atur juga pada event Resize.

Untuk tujuan di atas, lakukan langkah-langkah sebagai berikut:
1.    Tekan F4 untuk menampilkan Property Sheet (jika belum tampil).
2.    Pada Property Sheet, pilih “Form” (dalam Selection Type).
3.    Klik tab “Event”.
4.    Pada property On Resize, pilih: [Event Procedure]
5.    Klik tombol Builder () di bagian kanan isian property sehingga muncul jendela Visual Basic for Application.
6.    Masukkan code program sebagai berikut:

Private Sub Form_Resize()
    On Error Resume Next
    Me.Sub1.Height = Me.InsideHeight - Me.FormHeader.Height - Me.FormFooter.Height - Me.Sub1.Top
    Me.Sub1.Width = Me.InsideWidth - Me.Sub1.Left * 2
    Me.cmdPrint.Left = Me.InsideWidth - Me.cmdPrint.Width - 100
    Me.cmdSave.Left = Me.cmdPrint.Left - Me.cmdSave.Width - 50
    Me.cmdUndo.Left = Me.cmdSave.Left - Me.cmdUndo.Width - 50
End Sub

Tutup jendela Visual Basic for Application, lalu simpan form. Code program tersebut akan disimpan bersama form yang mengandungnya.

Pada tahap ini, ketika saya menjalankan form frm_Invoice, tampak sebagai berikut:


Gambar 5. Tampilan frm_Invoice

Well, sampai tahap ini kita break dulu ya, in syaa Allah akan disambung pada artikel berikutnya.

Bagi anda yang beragama Islam, selamat menjalankan ibadah puasa dan ibadah Ramadhan lainnya. Bagi yang akan mudik, selamat berlebaran di kampung halaman, bahagia bersama keluarga.

Salam.

(Bersambung)



7 komentar:

Sumiyanto Joglo Bali mengatakan...

Terus konsisten berkarya bang Haer, access is never die

Nino mengatakan...

Betul Access never die, terus konsisten berkarya bang Haer

Edy WIYONO mengatakan...

sampai sekarang, saya masih tetep pakai ms access di kantor. pokoknya access die hard lah.

Nino mengatakan...

Wah itu belum seberapa ..
Saya pakai MS Access bukan hanya di kantor ..
Di rumah, di mal, di mesjid, di pabrik, di mana mana .. disini Access .. disana Access .. dimana mana hatiku Access .

Edy WIYONO mengatakan...

Betul bang Nino. Access memang bisa dipakai di mana mana.
Untuk masjid dan RT saya juga olah datanya pakai Access.
mantap memang Access itu bang.

cepwahyu mengatakan...

Access ga akan pernah mati...sumber income juga soalnya...terus nulis dan berkarya bang haer...sy nambah ilmu lagi nih..

Edy WIYONO mengatakan...

cak Sum meskipun sudah di bisnis perkayuan. tetep tidak bisa tinggalin Access. Memang Access bisa menyatukan semua kalangan.