Skip to main content

Membuat Laporan Trend Aktual

Seperti halnya laporan budget yang umumnya berbentuk trend bulanan, kita juga bisa membuat laporan trend aktual bulanan, baik untuk laporan yang hanya menampilkan rekening utama saja, atau laporan yang menampilkan rekening utama, derivatif 1, dan derivatif 2.

Membuat Laporan Trend Aktual di Form

Dalam bentuk form, cara membuat kriteria pada laporan ini sama dengan buku besar dan neraca lajur. Pada bagian detail, form ini mirip dengan budget, yaitu berupa trend yang terdiri dari 12 bulan beserta totalnya.
Gambar 1
Gambar 1 adalah Design view dari trend bulanan rekening laporan pendapatan. Kriteria “Dari”, “Sampai Dengan”, “Periode”, “Bentuk” adalah hasil copy dan paste dari buku besar di subbab 10.3, Membuat Laporan Buku Besar. Mengingat bentuk trend yang panjang dan kertas ukuran legal tidak dapat memuat semua kolom yang ada, kita akan menambahkan satu kriteria lagi. Kriteria itu fungsinya untuk menampilkan jumlah, bisa dalam satuan moneter penuh, ribuan, sampai dengan jutaan. Jadi misalnya, dengan menggunakan mata uang rupiah, maka angka 1.234.456.789,122 akan ditampilkan penuh seperti itu, 1.234.456,79 bila ingin disajikan dalam ribuan rupiah, atau 1.234,46 bila ingin disajikan dalam jutaan rupiah.
Gambar 2
Dengan menambahkan kriteria ini, maka kita dapat menampilkan semua kolom dalam report dengan kertas ukuran legal secara penuh, tidak terpotong. Hal ini memang berbeda dengan Excel yang bisa menampilkan column to repeat at left, Access tidak bisa. Kalaupun bisa, kita harus menyiasatinya dengan membuat duplikasi pada bagian header, footer, serta kolom yang harus ditampilkan kembali di halaman berikutnya dan diletakkan di sisi sebelah kanan.

Kembali pada cara penyajian, apakah dalam rupiah penuh atau jutaan rupiah, kita akan membuat kriteria di form header itu sebagai berikut:
  1. Sisipkan sebuah combo box dengan properti:
    1. Name=PenyajianMoneter
    2. Row Source Type=Value List
    3. Row Source=0;;3;000;4;0.000;5;00.000;6;000.000
    4. Boun Column=1
    5. Column Count=2
    6. Column Widths=0”;2”
    7. Column Heads=No
    8. List Width=2”
    9. Limit To List=Yes
  2. Label untuk combo box, Caption=Disajikan dalam:
  3. Di sebelah kanan combo box, sisipkan text box dengan properti:
    1. Name=Pengucapan
    2. Control Source==IIf(PreferensSistem("Pengucapan")<>"", PreferensSistem("Pengucapan"),"")
Gambar 3
Supaya form dapat berfungsi, salinlah kode VBA di bawah ini ke class module Frm_frmTrenLapRLAktual:
  1. Option Compare Database  
  2. Dim blReport As Boolean  
  3. Private Function HapusTrenAktual()  
  4.   HapusObjekYgTidakPerlu "qryAktualTrend1"  
  5.   HapusObjekYgTidakPerlu "qryAktualTrend2"  
  6.   HapusObjekYgTidakPerlu "qryAktualTrend3"  
  7. End Function  
  8. Private Sub Form_Close()  
  9.   Form_frmMenus.Visible = True  
  10.   HapusTrenAktual  
  11. End Sub  
  12. Private Sub ProsesTrend()  
  13.   Dim intPeriode As Integer  
  14.   Dim drKodeGabung, sdKodeGabung As String  
  15.   If IsNull(Me.drTglTransaksi) Or IsNull(Me.sdTglTransaksi) Then  
  16.     MsgBox "Kriteria tanggal transaksi tidak boleh ada yang kosong"  
  17.     Exit Sub  
  18.   End If  
  19.   drKodeGabung = Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2  
  20.   sdKodeGabung = Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2  
  21.   If Me.drDeriv1 > Me.sdDeriv1 Then  
  22.     MsgBox "Kriteria dari deriv 1 tidak boleh lebih besar dari sampai deriv 1"  
  23.     Me.drDeriv1.SetFocus  
  24.     Exit Sub  
  25.   End If  
  26.   If Format(Me.drTglTransaksi, "yyyymm") > Format(Me.sdTglTransaksi, "yyyymm"Then  
  27.     MsgBox "Periode akuntansi dari bulan tidak boleh lebih besar dari sampai bulan"  
  28.     Me.drTglTransaksi.SetFocus  
  29.     Exit Sub  
  30.   End If  
  31.   Me.frmTrenLapRLAktualSubform.SourceObject = ""  
  32.   intPeriode = (Year(Me.drTglTransaksi) * 12 + Month(Me.drTglTransaksi))  
  33.   strCriteriaDR = Format(Me.drTglTransaksi, "yyyy") & Format(Me.drTglTransaksi, "mm")  
  34.   strCriteriaSD = Format(Me.sdTglTransaksi, "yyyy") & Format(Me.sdTglTransaksi, "mm")  
  35.   strSqla = "SELECT (Year([TglTransaksi])* 12 + Val(Format([TglTransaksi],'mm')))- " & intPeriode & "+1 AS Periode1, Periode, " _  
  36.            & "KodeRek, Deriv1, Deriv2, Round(([debit]-[kredit])/" & 10 ^ (Me.PenyajianMoneter) & ",2) AS Selisih FROM qryPermTransJurnal " _  
  37.            & "WHERE Periode Between " & strCriteriaDR & " and " & strCriteriaSD _  
  38.            & " AND " & "KodeGabung Between '" & drKodeGabung & "' and '" & sdKodeGabung _  
  39.            & "' AND TipeJurnal<>PreferensSistem('JurnalPenutup') " _  
  40.            & "AND (Grup='4' OR Grup='5');"  
  41.   BuatQuery "qryAktualTrend1", strSqla  
  42.   strSqla = "TRANSFORM Sum(Selisih) AS JumlahAktual SELECT KodeRek, Deriv1, Deriv2, " _  
  43.            & "Sum(Selisih) AS [TotalAktual] FROM qryAktualTrend1 " _  
  44.            & "GROUP BY KodeRek, Deriv1, Deriv2 PIVOT Periode1 IN (1,2,3,4,5,6,7,8,9,10,11,12);"  
  45.   BuatQuery "qryAktualTrend2", strSqla  
  46.   strSqla = "SELECT qryAktualTrend2.KodeRek, Sum(qryAktualTrend2.[TotalAktual]) AS [TotalAktual], " _  
  47.            & "Sum(qryAktualTrend2.[1]) AS 1, Sum(qryAktualTrend2.[2]) AS 2, Sum(qryAktualTrend2.[3]) AS 3, " _  
  48.            & "Sum(qryAktualTrend2.[4]) AS 4, Sum(qryAktualTrend2.[5]) AS 5, Sum(qryAktualTrend2.[6]) AS 6, " _  
  49.            & "Sum(qryAktualTrend2.[7]) AS 7, Sum(qryAktualTrend2.[8]) AS 8, Sum(qryAktualTrend2.[9]) AS 9, " _  
  50.            & "Sum(qryAktualTrend2.[10]) AS 10, Sum(qryAktualTrend2.[11]) AS 11, Sum(qryAktualTrend2.[12]) AS 12 " _  
  51.            & "FROM qryAktualTrend2 GROUP BY qryAktualTrend2.KodeRek;"  
  52.   BuatQuery "qryAktualTrend3", strSqla  
  53. End Sub  
  54. Private Sub PrintTrenAktual_Click()  
  55.   ProsesTrend  
  56.   If Me.FrameBentuk = 1 Then  
  57.     If blReport = True Then PreviewUnRefresh "rptTrenLapRLAktual1"True Else PreviewUnRefresh "rptTrenLapRLAktual1"  
  58.   Else  
  59.     If blReport = True Then PreviewUnRefresh "rptTrenLapRLAktual2"True Else PreviewUnRefresh "rptTrenLapRLAktual2"  
  60.   End If  
  61.   blReport = False  
  62. End Sub  
  63. Private Sub ReportTrenAktual_Click()  
  64.   blReport = True  
  65.   PrintTrenAktual_Click  
  66. End Sub  
  67. Private Sub SubformTrenAktual_Click()  
  68.   ProsesTrend  
  69.   If Me.FrameBentuk = 1 Then  
  70.     Me.frmTrenLapRLAktualSubform.SourceObject = "frmTrenLapRLAktualSubform1"  
  71.   Else  
  72.     Me.frmTrenLapRLAktualSubform.SourceObject = "frmTrenLapRLAktualSubform2"  
  73.   End If  
  74.   Me.CaraPenyajian = "Disajikan dalam " & Me.Penyajian Moneter.Column(1) & " " & Me.Pengucapan  
  75.   Me.frmTrenLapRLAktualSubform.Requery  
  76. End Sub  
  77. Private Sub drDeriv1_Click()  
  78.     Me.sdDeriv1.Requery  
  79. End Sub  
  80. Private Sub Form_Open(Cancel As Integer)  
  81.   Me.Caption = "Trend Bulanan Laporan Pendapatan " & Nz(IdPerusahaan("Nama"), "")  
  82.   Me.frmTrenLapRLAktualSubform.SourceObject = ""  
  83.   If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
  84. End Sub  
  85. Private Sub txtPeriodeAkuntansi_Click()  
  86.   Me.drTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](0), Me.drTglTransaksi.Format)  
  87.   Me.sdTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](1), Me.sdTglTransaksi.Format)  
  88. End Sub  
Pada bagian form detail, sisipkan text box kosong (unbound) dengan Name=CaraPenyajian dan subform kosong (unbound) dengan Name=frm TrenLapRLAktualSubform. Subform frmTrenLapRLAktualSubform ini akan diisi dengan form yang sesuai dengan kriteria bentuk, lengkap atau ringkas. Jadi, kita harus membuat form yang berfungsi sebagai subform itu.
Gambar 4
Untuk membuat form yang memuat bentuk lengkap, kita dapat mengkopi frmBudgetReportSubform pada Navigation pane dan paste dengan nama frmTrenLapRLAktualSubform1. Lalu, bukalah frmTrenLapRLAktualSubform1, isilah properti form Record Source = qryAktualTrend2, dan ganti properti text box Total Of JumlahBudget:
  1. Name=TotalAktual
  2. ControlSource=TotalAktual
Untuk membuat form bentuk ringkas, kita dapat mengkopi frmTrenLapRLAktual Subform1 pada Navigation pane dan paste dengan nama frmTrenLapRLAktual Subform2. Setelah itu, bukalah frmTrenLapRLAktualSubform2, isilah properti form Record Source = qryAktualTrend3, dan hapuslah combo box Deriv1 dan Deriv2.

Salinlah kode VBA di bawah ini pada masing-masing form, frmTrenLapRL AktualSubform1 dan frmTrenLapRLAktualSubform2:
  1. Option Compare Database  
  2. Private Sub Form_Open(Cancel As Integer)  
  3.   Dim dtTgl As Variant  
  4.   Dim i, n As Integer  
  5.   Dim ctlName As String  
  6.   dtTgl = Form_frmTrenLapRLAktual.drTglTransaksi  
  7.   n = -1  
  8.   For i = 1 To 12  
  9.     n = n + 1  
  10.     ctName = "Lbl" & CStr(i)  
  11.     If i = 1 Then  
  12.       Me.Controls(ctName).Caption = Format(dtTgl, "mmm yy")  
  13.     Else  
  14.       Me.Controls(ctName).Caption = Format(DateAdd("m", n, dtTgl), "mmm yy")  
  15.     End If  
  16.  Next i  
  17. End Sub  
Membuat Laporan Trend Aktual di Report

Cara paling mudah membuat laporan bentuk lengkap di report adalah dengan mengkopi rptBudgetReport pada Navigation pane dan paste dengan nama rptTrenLapRLAktual1. Setelah itu lakukan perubahan seperti saat kita merubah properti di frmTrenLapRLAktualSubform1 di atas.
  1. Gantilah properti report Record Source = qryAktualTrend2
  2. Gantilah properti text box Name=Total Of JumlahBudget menjadi Name=TotalAktual dan ControlSource=TotalAktual
  3. Pada kolom atau text box yang properti Control Sourcenya berisi jumlah Total Of JumlahBudget (=Sum([Total Of JumlahBudget])), gantilah dengan (=Sum([TotalAktual]).
  4. Pada report control dan event procedure yang ada dalam rptTrenLapRL Aktual1, gantilah semua Control Source atau variable yang mengandung frmBudgetReport dengan frmTrenLapRLAktual, contohnya seperti Control Source pada text box drTglTransaksi, diubah dari =[Forms]![frmBudget Report]![drTglTransaksi]   menjadi =[Forms]![frmTrenLapRLAktual]![drTgl Transaksi].

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