Skip to main content

Memodifikasi Report Berdasarkan Permintaan Pengguna

Ada kalanya pengguna ingin membaca report sesuai dengan keinginan. Tujuannya, supaya pengguna lebih fokus pada apa yang sedang dikerjakannya. Selain itu, bila report itu dicetak tidak membutuhkan kertas dalam jumlah yang banyak sehingga biaya alat tulis kantor bisa diirit.

Pada bagian ini kita akan memodifikasi report yang telah dibuat agar bisa memenuhi permintaan pengguna, misalkan dengan menggunakan form dialog seperti tampak pada gambar berikut ini.

Gambar 1
Gambar atas menunjukkan bahwa ketika mengeklik tombol perintah Preview Report (tombol perintah paling kanan) pada form frmRekUtama, Access akan menampilkan kotak dialog yang berisi instruksi yang akan dilaksanakannya untuk menampilkan report sesuai dengan permintaan. Sebagai misal, bila sebuah report ingin ditampilkan berdasarkan range, seperti gambar tersebut, maka pengguna akan diminta memasukkan variabel yang dibutuhkan. Setelah itu, dengan mengeklik tombol Lihat Laporan, Access akan menampilkannya.
Gambar 2
Kita, terutama programmer, bisa saja membuat dua macam bentuk laporan, misalnya rptRekUtama untuk menampilkan semua laporan dan rptRekUtama1 untuk menampilkan laporan tertentu saja. Cara ini memang mudah, karena programmer hanya perlu menambah satu bentuk laporan (i.e. rptRekUtama1), tanpa perlu menambahkan kode VBA yang sulit. Tetapi, kalau jumlah laporan yang dibuat terlalu banyak, ukuran filenya juga akan membesar, karena Access menyimpan semua properti untuk masing-masing laporan, padahal, secara substansi, tabel yang digunakan juga sama, demikian pula tampilan kolom (field) juga sama. Perbedaannya, dalam contoh di atas, laporan satu menampilkan semua, sedangkan laporan kedua menampilkan sesuai dengan range. Maka dari itu, karena kolom yang ingin ditampilkan dan tabel yang digunakan itu sama, kita hanya perlu membuat satu laporan saja yaitu rptRekUtama. Laporan rptRekUtama inilah yang akan dimodifikasi.

Membuat report semacam itu melibatkan berbagai macam objek seperti tabel, query, form, report, dan modul. Berikut ini adalah langkah-langkah pembuatannya.

Buatlah form menggunakan Blank Form dan simpanlah form tersebut dengan nama frmRekUtamaDialog. Setelah itu, edit form dalam Design view.
  1. Isikan berbagai macam properti di bawah ini:
    1. Properti untuk Form:
      1. Caption = Preview Report Daftar Kode Rekening - Rekening Utama
      2. Modal = Yes
      3. Auto Center = Yes
      4. Auto Resize = Yes
      5. Fit to Screen = Yes
      6. Border Style = Dialog
      7. Record Selector = No
      8. Navigation Button= No
      9. Moveable = No
    2. Dengan mengaktifkan tombol Use Control Wizards pada grup Controls, click tombol Option Group dan ketikkan:
      1. Labels names, ketikkan 2 macam pilihan di bawah ini:
        1. Tampilkan Semua
        2. Tampilkan Berdasarkan Range:
      2. Klik tombol Next.
      3. Pilih Tampilkan Semua sebagai default. Klik tombol Next.
      4. Isikan nilai Tampilkan Semua=1 dan Tampilkan Berdasarkan Range= 2. Klik tombol Next.
      5. Klik tombol Next.
      6. Caption = Mode Tampilan dan klik Finish.
    3. Kliklah form control frame dan isikan properti berikut ini:
      1. Name = FrameModeTampilan
      2. Border Style = Transparent
      3. After Update = [Event Procedure] dan ketikkan prosedur ini:
        Private Sub FrameModeTampilan_AfterUpdate()
           If Me.FrameModeTampilan = 2 Then
             Me.Grup.Enabled = True
             Me.DariKodeRek.Enabled = True
             Me.sdKodeRek.Enabled = True
             Me.Form.Requery
           Else
             Me.Grup.Enabled = False
             Me.DariKodeRek.Enabled = False
             Me.sdKodeRek.Enabled = False
           End If
        End Sub
        
    4. Pada tab Design grup Tools, klik Add Existing Fields untuk menampilkan Field List pane, pilih tabel tblRekUtama
    5. Tarik field Grup ke dalam form.
    6. Tampilkan Properties Sheet untuk combo box Grup dan isikan properti berikut ini:
      1. Control Source = blank
      2. Enabled = No
      3. After Update = [Event Procedure] dan ketikkan prosedur ini:
        Private Sub Grup_AfterUpdate()
          Me.DariKodeRek.Requery
        End Sub
      4. On Change = [Event Procedure] dan ketikkan prosedur ini:
        Private Sub Grup_Change()
          Me.DariKodeRek = Null
          Me.sdKodeRek = Null
        End Sub
    7. Non-aktifkan terlebih dahulu tombol Use Control Wizards yang ada di tab Design grup Controls, lalu buatlah combo box dengan properti sebagai berikut:
      1. Name = DariKodeRek
      2. Row Source = SELECT tblRekUtama.KodeRek, tblRekUtama. NamaRek FROM tblRekUtama WHERE (((tblRekUtama.Grup) =[Forms]![frmRekUtamaDialog]![Grup])) ORDER BY tblRekUtama.KodeRek;
      3. Row Source Type = Table/Query
      4. Bound Column = 1
      5. Column Count = 2
      6. Column Widths = 1";2"
      7. List Width = 3
      8. Limit to list = Yes
      9. Enabled = No
      10. After Update = [Event Procedure] dan isikan prosedur ini:
        Private Sub DariKodeRek_AfterUpdate()
          Me.sdKodeRek.Requery
        End Sub
    8. Buatlah combo box sama seperti di nomor 7 dengan properti sebagai berikut:
      1. Name = sdKodeRek
      2. Row Source = SELECT tblRekUtama.KodeRek, tblRekUtama. NamaRek FROM tblRekUtama WHERE (((tblRekUtama.Kode Rek)>=Forms!frmRekUtamaDialog!DariKodeRek) And ((tblRek Utama.Grup)=Forms!frmRekUtamaDialog!Grup)) ORDER BY tblRekUtama.KodeRek;
      3. Row Source Type = Table/Query
      4. Bound Column = 1
      5. Column Count = 2
      6. Column Widths = 1";2"
      7. List Width = 3
      8. Limit to list = Yes
      9. Enabled = No
    9. Buatlah text box dengan properti sebagai berikut:
      1. Name = DariNamaRek
      2. Control Source = =[DariKodeRek].[column](1)
      3. Enabled = No
      4. Width = 2.7083"
    10. Buatlah text box sama dengan di atas dengan properti seperti ini:
      1. Name = sdNamaRek
      2. Control Source = =[sdKodeRek].[column](1)
      3. Enabled = No
      4. Width = 2.7083"
    11. Non-aktifkan Use Control Wizards dan buatlah tombol Button (Form Control), properti sebagai berikut:
      1. Name = Command1
      2. Caption = Lihat Laporan
      3. Width = 1"
      4. On Click = [Event Procedure] dan ketikan prosedur di bawah ini:
        Private Sub Command1_Click()
          If Me.FrameModeTampilan = 2 Then
            If IsNull(Me.DariKodeRek) Or IsNull(Me.sdKodeRek) Then
              MsgBox "Kode rekening tidak boleh ada yang kosong", vbExclamation, "Kode Rekening Kosong"
              Exit Sub
            End If
            If Me.DariKodeRek > Me.sdKodeRek Then
              MsgBox "Kolom sampai Kode Rekening tidak boleh lebih kecil dari pada kolom Dari Kode Rekening", vbExclamation, "Kode Rekening Kosong"
              Exit Sub
            End If
          End If
          PreviewUnRefresh ("rptRekUtama")
        End Sub
    12. Buatlah tombol Button (Form Control) sama dengan cara di atas, propertinya adalah:
      1. Name = Command0
      2. Caption = Batal
      3. Width = 1"
      4. On Click = =Tutup()
    13. Terakhir, pada properti Form, kosongkan properti untuk Record Source.
  2. Buka report rptRekUtama dalam Design view
    1. Di bawah judul dengan Caption=Daftar Kode Rekening – Rekening Utama, sisipan baris kosong. Pada baris kosong ini, buatlah opsi dengan menekan tombol option button pada tab Design grup Controls.
    2. Buka properti opsi yang telah dibuat dan gantilah nama label opsi menjadi lblOpsi (label berada di sisi kanan tombol yang berbentuk lingkaran) atau Name=lblOpsi.
    3. Di sebelah kanan label opsi, sisipkan combo box. Isikan properti berikut ini:
      1. Name = NamaGroup
      2. Control Source = =[Forms]![frmRekUtamaDialog]![ Grup]
      3. Row Source = Kode Grup;Nama Grup;1;Aktiva;2;Hutang;3; Ekuitas;4;Pendapatan;5;Biaya;6;Ringkasan Pendapatan
      4. Row Source Type = Value List
      5. Bound Column = 1
      6. Column Count = 2
      7. Column Heads = Yes
      8. Column Widths = 0";1.5"
      9. List Width = 1.5"
      10. Limit To List = Yes
    4. Di sebelah kanan combo box NamaGroup, sisipkan text box. Isikan properti berikut ini:
      1. Name = DariKodeRek
      2. Control Source = =[Forms]![frmRekUtamaDialog]![DariKodeRek] & " - " & [Forms]![frmRekUtamaDialog]![DariNamaRek]
    5. Di bawah combo box DariKodeRek, sisipkan combo box. Isikan properti berikut ini:
      1. Name = sdKodeRek
      2. Control Source = =[Forms]![frmRekUtamaDialog]![sdKodeRek] & " - " & [Forms]![frmRekUtamaDialog]![sdNamaRek]
    6. Kita bisa mengosongkan Control Source DariKodeRek (langkah no 4) dan sdKodeRek (langkah no 5) di atas, sehingga masing-masing properti Control Source tertulis unbound. Bila ini terjadi, maka saat report dibuka, pada properti report On Open perlu ditambahkan baris event procedure untuk memberi nilai pada Control Source DariKodeRek dan sdKodeRek. Baca langkah no 8, On Open = [Event Procedure], di bawah.
    7. Dalam Design view yang kasar, tampilannya seperti Gambar berikut ini.
      Gambar 3
    8. Pada properti report, gantilah properti berikut ini:
      1. Record Source = SELECT tblRekUtama.KodeRek, tblRekUtama.NamaRek, tblRekUtama.Grup FROM tblRekUtama WHERE (((tblRekUtama.KodeRek) Between Forms!frmRek UtamaDialog!DariKodeRek And Forms!frmRekUtamaDialog! sdKodeRek) And ((tblRekUtama.Grup)=Forms!frmRekUtama Dialog!Grup));
      2. On Open = [Event Procedure] dan ketikan prosedur di bawah ini:
        Private Sub Report_Open(Cancel As Integer)
          If Form_frmRekUtamaDialog.FrameModeTampilan = 1 Then
              Me.lblOpsi.Caption = Form_frmRekUtama Dialog.lblTampilkanSemua.Caption
              Me.RecordSource = "SELECT KodeRek, NamaRek, Grup FROM tblRekUtama ORDER BY Grup, KodeRek;"
          Else
              Me.lblOpsi.Caption = Form_frmRekUtama Dialog.lblTampilkanBerdasarkanRange.Caption
              Me.NamaGrup.Visible = True
              Me.DariKodeRek.Visible = True
              Me.sdKodeRek.Visible = True
        'Bila Control Source DariKodeRek dan sdKodeRek dikosongkan (unbound),
        'maka nyalakan perintah di bawah dengan menghapus tanda '.
        '    Me.DariKodeRek.ControlSource = "='" & Form_frmRekUtamaDialog.DariKodeRek & " - " & Form_frmRekUtamaDialog.DariNamaRek & "'"
        '    Me.sdKodeRek.ControlSource = "='" & Form_frmRekUtamaDialog.sdKodeRek & " - " & Form_frmRekUtamaDialog.sdNamaRek & "'"
          End If
          DoCmd.Maximize
        End Sub
  3. Simpan dan tutup form frmRekUtamaDIalog dan rptRekUtama.
  4. Buka form frmRekUtama dengan Design view.
  5. Pada tombol perintah paling kanan, tambahkan tombol perintah lain dengan gambar Preview. Caranya, seperti membuat tombol perintah di postingan sebelumnya (Mengaplikasikan Modul Global ke Form). Isikan properti tombol perintah itu sebagai berikut:
    1. Name = Preview
    2. Caption = Preview
    3. Picture = (image), dan pilihlah Preview pada list box Available Pictures.
    4. Width = 0.3333"
    5. On Click = =BukaForm('frmRekUtamaDialog')
  6. Simpan dan tutup form frmRekUtama. Form frmRekUtama dan frmRekUtamaDIalog siap digunakan. Tampilan Form view tampak seperti gambar di bawah ini.
    Gambar 4

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access