Skip to main content

Membuat Laporan Budget

Secara umum, budget ditampilkan dalam bentuk trend yang terdiri dari kolom kode rekening beserta nama, setelah itu berturut-turut adalah jumlah budget tiap bulan dengan disertai jumlah total budget. Namun untuk menampilkan bentuk laporan yang berupa trend di Access tidaklah sesederhana itu karena laporan yang disediakan sifatnya statis, sedangkan budget yang kita buat sifatnya dinamis. Untuk menyiasati hal itu, maka kita perlu melakukan semacam manipulasi data sehingga Access bisa menampilkan laporan budget yang dinamis, sesuai dengan keinginan kita.

Gambar 1
Laporan trend budget yang akan kita buat bisa ditampilkan di form maupun di report. Untuk menampilkannya, kita harus membuat form dari Blank Form, yang akan disimpan dengan nama frmBudgetReport, lalu isikan form control berupa range untuk periode, range untuk kode derivarif1, tombol proses serta subform untuk menampilkan hasilnya. Kita dapat mengkopi form kontrol yang ada di frmNeracaLajur untuk lebih mudahnya. Oleh karena itu, bukalah frmNeracaLajur, lalu kopilah kontrol berikut ini ke frmBudgetReport:
  1. Text box LoginPgn dan logout
  2. Kotak option group/frame yang mempunyai label Caption=Periode dan isi yang ada di dalamnya, yaitu text box drTglTransaksi, sdTglTransaksi, combo box PeriodeAkuntansi, text box keterangan untuk combo box, text box txtPeriodeAkuntansi.
  3. Combo box drDeriv1, sdDeriv1, text box drDeriv1Nama, sdDeriv1Nama
Setelah mengkopi control dari frmNeracaLajur, tambahkan tombol perintah dengan properti Caption dan Name sama dengan Proses serta subform control dengan properti Name= frmBudgetReportSubform serta Source Object yang dikosongkan. Design form lengkap untuk frmBudgetReport dapat kita lihat pada Gambar 1.

Di dalam subform frmBudgetReportSubform, kita akan melakukan trik. Namun, terlebih dahulu, salinlah kode VBA di bawah ini ke dalam Form_frmBudgetReport.
  1. Option Compare Database  
  2. Private Sub drDeriv1_Click()  
  3.   Me.sdDeriv1.Requery  
  4. End Sub  
  5. Private Function HapusBudgetQuery()  
  6.   HapusObjekYgTidakPerlu "qryBudgetTrend1"  
  7.   HapusObjekYgTidakPerlu "qryBudgetTrend2"  
  8. End Function  
  9. Private Sub Form_Close()  
  10.   Form_frmMenus.Visible = True  
  11.   HapusBudgetQuery  
  12. End Sub  
  13. Private Sub Proses_Click()  
  14. Dim intPeriode As Integer  
  15.   If Me.drDeriv1 > Me.sdDeriv1 Then  
  16.     MsgBox "Kriteria dari deriv 1 tidak boleh lebih besar dari sampai deriv 1"  
  17.     Me.drDeriv1.SetFocus  
  18.     Exit Sub  
  19.   End If  
  20.   If Format(Me.drTglTransaksi, "yyyymm") > Format(Me.sdTgl Transaksi, "yyyymm"Then  
  21.     MsgBox "Periode akuntansi dari bulan tidak boleh lebih besar dari sampai bulan"  
  22.     Me.drTglTransaksi.SetFocus  
  23.     Exit Sub  
  24.   End If  
  25.   Me.frmBudgetReportSubform.SourceObject = ""  
  26.   intPeriode = (Year(Me.drTglTransaksi) * 12 + Month(Me.drTglTransaksi))  
  27.   strCriteriaDR = Format(Me.drTglTransaksi, "yyyy") & Format(Me.drTglTransaksi, "mm")  
  28.   strCriteriaSD = Format(Me.sdTglTransaksi, "yyyy") & Format(Me.sdTglTransaksi, "mm")  
  29.   strSqla = "SELECT [tahun]*12+[bulan]- " & intPeriode & "+1 AS Periode1, Tahun, Bulan, Periode, " _  
  30.           & "KodeRek, Deriv1, Deriv2, JumlahBudget FROM qryBudget " _  
  31.           & "WHERE Periode Between " & strCriteriaDR & " and " & strCriteriaSD _  
  32.           & " AND " & "Deriv1 Between '" & Me.drDeriv1 & "' and '" & Me.sdDeriv1 & "';"  
  33.   BuatQuery "qryBudgetTrend1", strSqla  
  34.   strSqla = "TRANSFORM Sum(JumlahBudget) AS SumOfJumlahBudget SELECT KodeRek, Deriv1, Deriv2, " _  
  35.           & "Sum(JumlahBudget) AS [Total Of JumlahBudget] FROM qryBudgetTrend1 " _  
  36.           & "GROUP BY KodeRek, Deriv1, Deriv2 PIVOT Periode1 IN (1,2,3,4,5,6,7,8,9,10,11,12);"  
  37.   BuatQuery "qryBudgetTrend2", strSqla  
  38.   Me.frmBudgetReportSubform.SourceObject = "frmBudgetReport Subform"  
  39.   Me.frmBudgetReportSubform.Requery  
  40. End Sub  
  41. Private Sub Form_Open(Cancel As Integer)  
  42.   Me.Caption = "Laporan Budget Trend Bulanan " & Nz(IdPerusahaan("Nama"), "")  
  43.   Me.frmBudgetReportSubform.SourceObject = ""  
  44.   If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
  45. End Sub  
  46. Private Sub txtPeriodeAkuntansi_Click()  
  47.   Me.drTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](0), Me.drTglTransaksi.Format)  
  48.   Me.sdTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](1), Me.sdTglTransaksi.Format)  
  49. End Sub  
Membuat Subform frmBudgetReportSubform

Pada dasarnya, subform untuk laporan budget ini sama dengan subform lain yang telah kita buat. Perbedaannya terletak pada judul kolom yang bisa kita ubah sesuai dengan kriteria pada text box drTglTransaksi di frmBudget Report. Kalau kita mengubah bulan yang ada di kriteria itu, maka judul kolom untuk budget per bulan juga akan berubah.

Subform frmBudgetReport Subform sebenarnya adalah tampilan crosstab query yang dibuat melalui kode VBA di atas, yaitu melalui perintah:
  1. strSqla = "TRANSFORM Sum (JumlahBudget) AS SumOf JumlahBudget SELECT KodeRek, Deriv1, Deriv2, " _  
  2.         & "Sum(JumlahBudget) AS [Total Of JumlahBudget] FROM qryBudgetTrend1 " _  
  3.         & "GROUP BY KodeRek, Deriv1, Deriv2 PIVOT Periode1 IN (1,2,3,4,5,6,7,8,9,10,11,12);"  
  4. BuatQuery "qryBudgetTrend2", strSqla  
Query di atas akan membuat kolom untuk bulan menjadi 12. Dengan query inilah kita akan melakukan trik. Bulan pertama bisa Januari 2013, Februari 2013,  atau April 2013 sekalipun dan dapat diakhiri pada bulan dalam tahun yang sama (Desember 2013) atau berbeda (Januari 2014 dan Maret 2014), tergantung dari kriteria yang kita masukkan di frmBudgetReport. Crosstab query itu lalu disimpan dengan nama qryBudgetTrend2 yang kemudian menjadi record source dari frmBudgetReportSubform. Kalau kita membuat form melalui Form Wizard, dengan Tables/Queries dipilih qryBudgetTrend2, dan layout yang dipilih adalah datasheet, maka tampilan Design view akan seperti Gambar 2. Selanjutnya, ubahlah nama label yang mempunyai Caption 1 sampai dengan 12 dengan nama Lbl1, Lbl2, dan seterusnya, sampai terakhir Lbl12, seperti pada gambar itu.
Gambar 2
Untuk mengubah nama label sesuai dengan nama bulan yang ada dalam kriteria, salinlah event procedure berikut ini pada properti form On Open:
  1. Private Sub Form_Open(Cancel As Integer)  
  2.   Dim dtTgl As Variant  
  3.   Dim i, n As Integer  
  4.   Dim ctlName As String  
  5.   dtTgl = Form_frmBudgetReport.drTglTransaksi  
  6.   n = -1  
  7.   For i = 1 To 12  
  8.     n = n + 1  
  9.     ctName = "Lbl" & CStr(i)  
  10.     If i = 1 Then  
  11.       Me.Controls(ctName).Caption = Format(dtTgl, "mmm yy")  
  12.     Else  
  13.       Me.Controls(ctName).Caption = Format(DateAdd("m", n, dtTgl), "mmm yy")  
  14.     End If  
  15.   Next i  
  16. End Sub  
Gambar 3
Laporan budget yang telah kita buat di form dapat juga dibuat di report. Record source yang kita gunakan pada report itu juga sama, yaitu qryBudgetTrend2. Kita dapat mengkopi bagian form header yang ada di frmBudgetReport ke page header dan isikan bagian kriteria dalam report itu dengan formula yang terhubung dengan form. Label yang ada di frmBudgetReportSubform juga dikopi ke page header di report yang kita buat. Jangan lupa untuk mengubah nama label seperti di frmBudgetReportSubform, lalu isikan juga kode VBA di atas untuk Private Sub Report_Open(Cancel As Integer).

Agar report budget mudah dimengerti, kita juga dapat membuat grup berdasarkan kode Deriv1 yang terdiri dari dua yaitu Deriv1 header dan Deriv1 footer. Bagian header untuk memberi subjudul, sedangkan bagian footer untuk menjumlahkan subtotal setiap deriv1. Dengan demikian, kita bisa mengetahui berapa jumlah budget untuk masing-masing item dalam deriv1. Simpanlah report itu dengan nama rptBudgetReport. Report design dapat dilihat di Gambar 4, sedangkan report design dapat kita lihat pada Gambar 5. Perhatikan bahwa label bulan seperti pada Gambar 2 diletakkan di bagian page header.

Gambar 4

Gambar 5

Comments

Posting Terpopuler

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Fungsi Untuk Membuka Database di Access VBA

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access