Praktikum 6
SubForm dan Kode VBA A. • • • • •
TUJUAN Dapat mengkaitkan antara Form Utama dan SubForm Dapat menghubungkan antar Form secara manual Memahami arti dari Non-Synchronized Form Dapat memodifikasi properti pada obyek Form Dapat menambahkan kode VBA pada Form
B. DASAR TEORI Form utama dalam bentuk columnar atau record tunggal dipadukan dengan subform dalam bentuk tabular adalah cara alami untuk mempresentasikan informasi untuk tabel- tabel dengan relasi one-to- many. Sebagai contoh, form yang diperlihatkan pada Gambar 6.1 terdiri dari dua bentuk form : form utama yang berisi informasi spesifik tentang suatu mata kuliah (course); dan subform yang menampilkan semua kelas (sections) yang berhubungan dengan mata kuliah tersebut.
Gambar 6.1. : Kombinasi antara form dengan sub form
PEMBUATAN FORM UTAMA • Gunakan wizard untuk membuat form columnar yang menggunakan tabel Courses. • Atur kembali field -field yang ada pada tabel sebagaimana Gambar 6.2.
82
83
Gambar 6.2. Pengaturan field-field yang ada pada form utama agar tersedia cukup ruang untuk subform
PEMBUATAN SUBFORM • Gunakan wizard untuk membuat subform, seperti yang ditunjukkan pada Gambar 6.3 dan Gambar 6.4.
Gambar 6.3. Menggunakan wizard untuk membuat subform Sections
84 Gambar 6.4. : Menggunakan wizard untuk membuat subform Sections (lanjutan)
• Subforms yang dibuat dengan menggunakan wizard memerlukan beberapa modifikasi agar sesuai dengan apa yang kita inginkan. Sejumlah proses modifikasi pada form hasil wizard ditunjukkan pada Gambar 6.5.
Gambar 6.5. Mengedit subform untuk mengurangi jumlah spasi yang digunakan
• Simpan form dengan nama sfrmSections kemudian tutup form. MENYAMBUNG FORM UTAMA DENGAN SUBFORM • Buka form utama (frmCoursesMain) dalam mode desain • Pilih Window -> univ: Database untuk membuka database window pada latar depan (foreground). Alternatif lain, tekan icon ( ) pada tool bar. • Lakukan langkah- langkah seperti yang ditunjukkan pada Gambar 6.6 untuk men-drag subform ke dalam form utama (main form).
Gambar 6.6. : Drag subform ke dalam form utama (main form)
• Hasil dari operasi drag-and-drop seperti yang ditunjukkan pada Gambar 6.7. Keuntungan dari metode drag-and-drop dalam pembuatan sub form adalah bahwa lebar subform control secara otomatis diset sama dengan lebar subform.
85
Gambar 6.7. : Operasi drag-and-drop membuat subform control
MENGAITKAN FORM DAN SUBFORM SECARA MANUAL Jika baik form maupun subform dikaitkan dengan sebuah table, dan telah ada relasi yang didefinisikan diantara kedua tabel, maka terdapat link diantara kedua form tersebut. Akan tetapi jika relasi tersebut belum ada sebelumnya, maka kita harus membuat link- nya secara manual. • Uji link atau kaitan diantara form dan subform dengan memeriksa property sheet dari subform control, seperti yang diperlihatkan pada Gambar 6.8.
Gambar 6.8. : Uji kaitan atau link diantara form dan subform
Istilah “link child field” dan “link master field” identik dengan “foreign key” dan “primary key”. Main form adalah parent (“one” side) sedangkan subform adalah child (“many” side). • Tampilkan hasil dari kombinasi form dan subform tersebut. Perhatikan pada saat kita merubah atau memindah posisi record dari course, maka jumlah sections yang diperlihatkan pada subform juga berubah (pada Gambar 6.9).
86
Gambar 6.9. : Sinkronisasi antara form dengan subform
PENAMBAHAN KODE VBA Berikut ini akan ditambahkan kode VBA untuk Form yang sudah dibuat sebelumnya. Kode Visual Basic Application (VBA) ditambahkan dengan maksud untuk menambah fungsionalitas pada form, dan untuk menghindari hal- hal yang tidak diinginkan semisal melakukan penghapusan secara tidak disengaja, atau perubahan data pada saat melakukan navigasi pada record-record yang ada pada table. Membuat Form Dalam Mode Read-Only Buka form Data Karyawan ya ng dibuat sebelumnya dengan menggunakan Form Wizard. Kemudian klik kanan pada kotak kecil disebelah kiri atas form, seperti yang ditunjukkan pada gambar :
Klik kanan
Setelah itu akan muncul menu pilihan, dan klik pada pilihan Build Event :
Kemudian akan tampil jendela untuk menuliskan kode VBA, dan ketik kode berikut : Me.AllowEdits=False
87
Penulisan kode VBA dilakukan berdasarkan suatu event. Event adalah suatu kejadian yang membutuhkan suatu aksi atau tindakan. Seperti yang dibuat sebelumnya, form dalam mode Read-Only. Form harus di-set dengan properti AllowEdits diisi dengan nilai False, pada saat form mulai dipanggil, sehingga event yang terkait dalam hal ini adalah event On Load pada object Form. Berikut ini akan dijelaskan cara untuk menuliskan kode VBA berdasarkan properti event yang dimiliki oleh suatu object. Cara lain untuk menuliskan kode VBA pada event Form Load seperti yang dibuat sebelumnya, dapat dilakukan dengan langkah berikut : 1. Tampilkan properti form, dengan mengklik View->Properties
2. Setelah itu akan tampil jendela property dari tiap object yang ada pada form.
3. Klik mouse pada sembarang area pada form atau pada kotak kecil di sebelah kiri atas form untuk memilih object form. 4. Kemudian klik pada tab Event yang ada pada jendela properti pada pilihan On Load, klik tanda …
88
Setelah itu akan tampil jendela untuk menuliskan kode VBA, dan ketik kode yang sama seperti sebelumnya : Me.AllowEdits=False Klik ini Perhatikan judul dari sub procedure yaitu Form_Load yang memiliki maksud yang sama dengan pilihan event On Load. Menambahkan Tombol Add Record Untuk Menyisipkan Record Baru Untuk menambahkan fungsionalitas pada Form, perlu ditambahkan fasilitas semisal untuk melakukan penambahan data (Add), menghapus data (Delete), atau menyimpan data (Save). Tombol-tombol tersebut berhubungan dengan operasi record (record operation) dan dapat ditambahkan dengan menggunakan toolbox command button dalam mode wizard.
mode wizard
command button
Untuk menambahkan tombol pada form lakukan langkah- langkah berikut : C. Aktifkan mode wizard (lihat gambar diatas), kemudian klik pada command button. Buat tombol pada daerah form seperti yang ada pada gambar berikut :
89 D.
Setelah itu akan muncul dialog Command Button Wizard. Pilih Categories pada Record Operations. Dan pada kotak sebelah kanan (Actions) terdapat daftar operasi yang bisa dilakukan, diantaranya operasi untuk add, delete dan save record.
E. F.
Pilih Add New Record, kemudian klik tombol Next. Berikutnya, pilihan untuk menampilkan tombol dengan menggunakan teks (tulisan) atau gambar. Pilih teks dan beri tulisan Add Record, dan tekan Next.
G.
Berikutnya, kita harus memberi nama tombol yang baru kita buat, beri nama tambahrecord, dan tekan Next.
90 H. Dan terakhir tekan tombol F inish. Menempatkan Kursor Pada Posisi Field Dengan Setfocus Tombol yang baru dibuat, berfungsi untuk menambahkan record baru. Cobalah menggunakan tombol yang baru dibuat dengan mengklik View -> Form View. Klik pada tombol Add Record, setelah itu akan tampak form dengan semua record kosong yang perlu diisi, seperti pada gambar berikut :
Arahkan kursor pada field KaryawanID, untuk mulai mengisi field yang pertama. Sehingga tampak kursor pada field KaryawanID seperti pada gambar berikut :
Pada saat menjalankan form dalam Form View, agar secara otomatis kursor berada pada Karyawan ID (tempat pertama pengisian field), maka perlu di-set dengan menggunakan properti Set Focus. Untuk itu, tambahkan kode berikut ke dalam kode VBA dari tombol Add Record. Caranya : Klik kanan tombol Add Record kemudian akan tampil menu, dan pilih Build Event, setelah itu tambahkan kode berikut : Private Sub tambahrecord_Click() On Error GoTo Err_tambahrecord_Click DoCmd.GoToRecord , , acNewRec KaryawanID.SetFocus // Kode yang ditambahkan Exit_tambahrecord_Click: Exit Sub Err_tambahrecord_Click: MsgBox Err.Description Resume Exit_tambahrecord_Click End Sub
91 Setelah itu, coba jalankan Form View, dan sekarang secara otomatis kursor akan ditempatkan pada field KaryawanID. Setelah mengisi field ini, untuk berpindah ke field berikutnya, tekan tombol Tab pada keyboard. Masukkan data record baru, misal seperti pada contoh berikut :
Setelah mengisinya dengan lengkap, untuk berpindah ke record yang lain (record sebelumnya), klik pada tombol navigasi yang ada pada bagian bawah :
Setelah mengklik tombol navigasi untuk menuju ke record sebelumnya, maka pada pada tampilan terlihat bahwa form tidak berada dalam mode Read-Only artinya kita bisa melakukan perubahan terhadap data. Padahal diingink an bahwa form akan kembali berada dalam mode Read-Only setelah mengisi data baru. Untuk mengembalikan form dalam mode Read-Only tambahkan kode VBA pada event After Insert yang dimiliki oleh object Form :
Klik disini
Setelah itu akan muncul menu dan pilih Code Builder. Kemudian tambahkan kode berikut pada prosedur AfterInsert :
Dengan penambahan kode tersebut, maka Form akan kembali dalam mode Read -Only setelah pengisian record baru.
92 Menampilkan Pesan (Message) Pada User Seringkali kita perlu memberi pesan (message) pada user untuk memberikan informasi tentang sesuatu. Semisal pada penambahan record baru, agar user tahu bahwa record yang baru diisi telah disimpan, maka perlu diberi pesan bahwa “Record sudah disisipkan” ata u “Record baru telah disimpan”. Untuk itu, pada event After Insert yang dimiliki oleh Form, tambahkan kode berikut :
Setelah itu jalankan form, dan setelah mengisi record baru, arahkan navigasi ke record sebelumnya, akan muncul pesan bahwa record sudah disimpan seperti pada gambar berikut :
Menambahkan Tombol Del Record Untuk Menyisipkan Record Baru Aktifkan mode wizard pada toolbox, kemudian tempatkan tombol baru di sebelah tombol Update Record. Beri teks Del Record. Cobalah untuk menjalankan form dengan tombol yang baru dibuat. Pada tampilan record yang akan dihapus, klik tombol Del Record. Perhatikan apa yang terjadi. Record tidak bisa dihapus. Kenapa bisa demikian ? Hal ini dikarenakan form masih dalam mode Read-Only. Jadi apapun perubahan yang dilakukan terhadap record termasuk perintah penghapusan pada record, tidak memberikan berpengaruh. Bagaimana caranya agar perintah penghapusan pada saat mengklik Del Record bisa dilaksanakan, caranya dengan menambah kode berikut pada event On Clik yang ada pada tombol Del Record.
93
Untuk menguji kode yang sudah ditambahkan, jalankan form sekali lagi. Lakukan penghapusan pada salah satu record dan akan ditampilkan dialog untuk konfirmasi penghapusan :
Klik Yes untuk menghapus record. Setelah itu, jika kita melakukan navigasi dengan berpindah ke record sebelumnya, akan tampak bahwa form tidak dalam mode Read-Only. Untuk mengembalikan form ke mode Read-Only tambahkan kode ke dalam event After Update pada object Form :
Jalankan form sekali lagi, dan coba untuk menghapus satu record, lakukan konfirmasi dengan mengklik Yes, setelah melakukan navigasi ke record sebelumnya, form akan kembali ke mode Read-Only. Menambahkan Tombol Update Record Untuk Mengubah Isi Record Berikutnya tambahkan satu tombol lagi yaitu Update Record yang berfungsi untuk melakukan perubahan terhadap isi record. Tombol ini dibuat tidak dengan menggunakan mode wizard. Jadi non-aktifkan mode wizard pada toolbox :
94
kemudian buat tombol Update Record di sebelah tombol Delete Record :
Tambahkan kode VBA pada event On Click yang dimiliki oleh tombol Update Record.
Jalankan form sekali lagi, dan coba untuk mengubah isi record dengan mengklik tombol Update Record, setelah melakukan navigasi ke record yang lain, form akan kembali ke mode Read -Only. Bisa ditambahkan pesan untuk memberi informasi bahwa telah dilakukan perubahan terhadap record. Event yang bersesuaian untuk keperluan ini adalah event After Update yang dimiliki oleh Form :
95
C. LATIHAN SOAL : 1) Buat desain form untuk database perpustakaan dengan menambahkan kode VBA untuk menghindari perubahan atau penghapusan data yang ada pada form (mode diset read-only). 2) Buat form dan subform untuk informasi tentang Shipment dan ShipmentDetails. Form ini digunakan untuk menyimpan detail pengiriman dari seorang supplier. Kedua form dibuat berdasarkan queri berikut : • Form Shipment merupakan main form • Form ShipmentDetails dibuat berdasarkan join query sehingga validasi informasi (semisal nama produk) terlihat pada saat sebuah nomer produk ditampilkan. 3) Buat form/subform untuk memperlihatkan order dari customer. Bagian atas dari form berisi informasi tentang order dan beberapa informasi tambahan tentang customer. Subform harus berisi informasi tentang apa yang diorder dan dikirim. Form yang dibuat pada langkah awal ini digunakan untuk menampilkan order yang sudah ada, bukan untuk menambahkan order baru. Untuk menambahkan order baru, form harus lebih kompleks. Sebagai contoh, untuk menampilkan berapa jumlah tiap item user harus memutuskan berapa yang harus dikirim. 4) Set properti Allow Additions dan Allow Edits dari form “menampilkan order” menjadi bernilai No. Ini untuk mencegah user agar tidak bisa merubah detail dari order yang telah dibuat fakturnya atau berusaha untuk menggunakan form ini untuk keperluan memasukkan data order baru D. LAPORAN RESMI 1) Buatlah rangkuman tentang cara pembuatan form dan sub form! 2) Jelaskan mengapa diperlukan sub form!