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:
- Sisipkan sebuah combo box dengan properti:
- Name=PenyajianMoneter
- Row Source Type=Value List
- Row Source=0;;3;000;4;0.000;5;00.000;6;000.000
- Boun Column=1
- Column Count=2
- Column Widths=0”;2”
- Column Heads=No
- List Width=2”
- Limit To List=Yes
- Label untuk combo box, Caption=Disajikan dalam:
- Di sebelah kanan combo box, sisipkan text box dengan properti:
- Name=Pengucapan
- Control Source==IIf(PreferensSistem("Pengucapan")<>"", PreferensSistem("Pengucapan"),"")
|
Gambar 3 |
Supaya form dapat berfungsi, salinlah kode VBA di bawah ini ke class module Frm_frmTrenLapRLAktual:
Option Compare Database
Dim blReport As Boolean
Private Function HapusTrenAktual()
HapusObjekYgTidakPerlu "qryAktualTrend1"
HapusObjekYgTidakPerlu "qryAktualTrend2"
HapusObjekYgTidakPerlu "qryAktualTrend3"
End Function
Private Sub Form_Close()
Form_frmMenus.Visible = True
HapusTrenAktual
End Sub
Private Sub ProsesTrend()
Dim intPeriode As Integer
Dim drKodeGabung, sdKodeGabung As String
If IsNull(Me.drTglTransaksi) Or IsNull(Me.sdTglTransaksi) Then
MsgBox "Kriteria tanggal transaksi tidak boleh ada yang kosong"
Exit Sub
End If
drKodeGabung = Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2
sdKodeGabung = Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2
If Me.drDeriv1 > Me.sdDeriv1 Then
MsgBox "Kriteria dari deriv 1 tidak boleh lebih besar dari sampai deriv 1"
Me.drDeriv1.SetFocus
Exit Sub
End If
If Format(Me.drTglTransaksi, "yyyymm") > Format(Me.sdTglTransaksi, "yyyymm") Then
MsgBox "Periode akuntansi dari bulan tidak boleh lebih besar dari sampai bulan"
Me.drTglTransaksi.SetFocus
Exit Sub
End If
Me.frmTrenLapRLAktualSubform.SourceObject = ""
intPeriode = (Year(Me.drTglTransaksi) * 12 + Month(Me.drTglTransaksi))
strCriteriaDR = Format(Me.drTglTransaksi, "yyyy") & Format(Me.drTglTransaksi, "mm")
strCriteriaSD = Format(Me.sdTglTransaksi, "yyyy") & Format(Me.sdTglTransaksi, "mm")
strSqla = "SELECT (Year([TglTransaksi])* 12 + Val(Format([TglTransaksi],'mm')))- " & intPeriode & "+1 AS Periode1, Periode, " _
& "KodeRek, Deriv1, Deriv2, Round(([debit]-[kredit])/" & 10 ^ (Me.PenyajianMoneter) & ",2) AS Selisih FROM qryPermTransJurnal " _
& "WHERE Periode Between " & strCriteriaDR & " and " & strCriteriaSD _
& " AND " & "KodeGabung Between '" & drKodeGabung & "' and '" & sdKodeGabung _
& "' AND TipeJurnal<>PreferensSistem('JurnalPenutup') " _
& "AND (Grup='4' OR Grup='5');"
BuatQuery "qryAktualTrend1", strSqla
strSqla = "TRANSFORM Sum(Selisih) AS JumlahAktual SELECT KodeRek, Deriv1, Deriv2, " _
& "Sum(Selisih) AS [TotalAktual] FROM qryAktualTrend1 " _
& "GROUP BY KodeRek, Deriv1, Deriv2 PIVOT Periode1 IN (1,2,3,4,5,6,7,8,9,10,11,12);"
BuatQuery "qryAktualTrend2", strSqla
strSqla = "SELECT qryAktualTrend2.KodeRek, Sum(qryAktualTrend2.[TotalAktual]) AS [TotalAktual], " _
& "Sum(qryAktualTrend2.[1]) AS 1, Sum(qryAktualTrend2.[2]) AS 2, Sum(qryAktualTrend2.[3]) AS 3, " _
& "Sum(qryAktualTrend2.[4]) AS 4, Sum(qryAktualTrend2.[5]) AS 5, Sum(qryAktualTrend2.[6]) AS 6, " _
& "Sum(qryAktualTrend2.[7]) AS 7, Sum(qryAktualTrend2.[8]) AS 8, Sum(qryAktualTrend2.[9]) AS 9, " _
& "Sum(qryAktualTrend2.[10]) AS 10, Sum(qryAktualTrend2.[11]) AS 11, Sum(qryAktualTrend2.[12]) AS 12 " _
& "FROM qryAktualTrend2 GROUP BY qryAktualTrend2.KodeRek;"
BuatQuery "qryAktualTrend3", strSqla
End Sub
Private Sub PrintTrenAktual_Click()
ProsesTrend
If Me.FrameBentuk = 1 Then
If blReport = True Then PreviewUnRefresh "rptTrenLapRLAktual1", True Else PreviewUnRefresh "rptTrenLapRLAktual1"
Else
If blReport = True Then PreviewUnRefresh "rptTrenLapRLAktual2", True Else PreviewUnRefresh "rptTrenLapRLAktual2"
End If
blReport = False
End Sub
Private Sub ReportTrenAktual_Click()
blReport = True
PrintTrenAktual_Click
End Sub
Private Sub SubformTrenAktual_Click()
ProsesTrend
If Me.FrameBentuk = 1 Then
Me.frmTrenLapRLAktualSubform.SourceObject = "frmTrenLapRLAktualSubform1"
Else
Me.frmTrenLapRLAktualSubform.SourceObject = "frmTrenLapRLAktualSubform2"
End If
Me.CaraPenyajian = "Disajikan dalam " & Me.Penyajian Moneter.Column(1) & " " & Me.Pengucapan
Me.frmTrenLapRLAktualSubform.Requery
End Sub
Private Sub drDeriv1_Click()
Me.sdDeriv1.Requery
End Sub
Private Sub Form_Open(Cancel As Integer)
Me.Caption = "Trend Bulanan Laporan Pendapatan " & Nz(IdPerusahaan("Nama"), "")
Me.frmTrenLapRLAktualSubform.SourceObject = ""
If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
End Sub
Private Sub txtPeriodeAkuntansi_Click()
Me.drTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](0), Me.drTglTransaksi.Format)
Me.sdTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](1), Me.sdTglTransaksi.Format)
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:
- Name=TotalAktual
- 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:
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
Dim dtTgl As Variant
Dim i, n As Integer
Dim ctlName As String
dtTgl = Form_frmTrenLapRLAktual.drTglTransaksi
n = -1
For i = 1 To 12
n = n + 1
ctName = "Lbl" & CStr(i)
If i = 1 Then
Me.Controls(ctName).Caption = Format(dtTgl, "mmm yy")
Else
Me.Controls(ctName).Caption = Format(DateAdd("m", n, dtTgl), "mmm yy")
End If
Next i
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.
- Gantilah properti report Record Source = qryAktualTrend2
- Gantilah properti text box Name=Total Of JumlahBudget menjadi Name=TotalAktual dan ControlSource=TotalAktual
- Pada kolom atau text box yang properti Control Sourcenya berisi jumlah Total Of JumlahBudget (=Sum([Total Of JumlahBudget])), gantilah dengan (=Sum([TotalAktual]).
- 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
Post a Comment