Seperti sudah dijelaskan di posting sebelumnya, buku besar yang kita buat sebenarnya berasal dari jurnal transaksi permanen. Dengan menggunakan query qryPermTransJurnal seperti di subbab sebelumnya, buku besar dalam bentuk apa pun yang kita inginkan dapat dihasilkan. Dari query inilah, kita kemudian mengurutkan transaksi berdasarkan kode rekening dan kronologi.
Buatlah form dengan Design view seperti Gambar 1. Kotak dengan nama “Dari”, “Sampai Dengan”, “Periode”, “Bentuk”, dan “Tampilkan Hasilnya di:” adalah kriteria yang digunakan dalam proses penyajian buku besar (lihat pada bagian yang diarsir). Simpan form itu dengan nama frmBukuBesar.
|
Gambar 1 |
Berikut ini adalah penjelasan dari gambar di atas:
- Pada bagian identitas login pengguna di pojok kiri atas, tanggal, dan waktu di pojok kanan atas, kita tentu sudah tahu cara membuatnya. Jika belum, silakan baca lagi bab sebelumnya. Demikian juga dengan judul Buku Besar tidak perlu dijelaskan di sini.
- Buatlah frame option group dengan memilih tab Design dan pilih Option Group pada grup Controls. Atur properti frame itu: Name=Frame20. Pada label frame itu, beri nama properti Caption=Dari. Dalam Frame20 sisipkan form control berikut ini:
- Combo box dengan properti:
- Name=drKodeRek
- Column Count=2
- Bound Column-1
- Column Width=1”;2.5”
- List Width=3.5”
- Row Source=tblRekUtama
- Persis di bawah combo box drKodeRek, buatlah text box tanpa label dengan properti:
- Name=drKodeRekNama
- Control Source= =[drKodeRek].[column](1)
- Di samping combo box drKodeRek, sisipkan combo box dengan properti:
- Name= drDeriv1
- Column Count=2
- Bound Column-1
- Column Width=1”;2.5”
- List Width=3.5”
- Row Source= tblRekDerivatif1
- Persis di bawah combo box drDeriv1, buatlah text box tanpa label dengan properti:
- Name= drDeriv1Nama
- Control Source= =[drDeriv1].[column](1)
- Di samping combo box drDeriv1, sisipkan combo box dengan properti:
- Name= drDeriv2
- Column Count=2
- Bound Column-1
- Column Width=1”;2.5”
- List Width=3.5”
- Row Source= tblRekDerivatif2
- Persis di bawah combo box drDeriv1, buatlah text box tanpa label dengan properti:
- Name= drDeriv2Nama
- Control Source= =[drDeriv2].[column](1)
- Kopilah Frame20 bersama seluruh control yang ada di dalamnya ke samping.
- Gantilah label Caption dari “Dari” menjadi “Sampai Dengan”.
- Gantilah semua properti Name dari combo box: drKodeRek, drDeriv1, dan drDeriv2 menjadi sdKodeRek, sdDeriv1, dan sdDeriv2 berurutan.
- Lakukan dengan cara nomor 2 di atas untuk semua properti Control Source dari text box menjadi =[sdKodeRek].[column](1), =[sdDeriv1]. [column](1), dan [sdDeriv2].[column](1) berurutan.
- Sisipkan 2 buah control berupa text box untuk memasukkan tanggal, dengan kedua properti Name itu adalah drTglTransaksi dan sdTglTransaksi, sedangkan Formatnya adalah short date atau medium date.
- Di bawah text box drTglTransaksi, sisipkanlah combo box tanpa label dengan properti:
- Name=PeriodeAkuntansi
- Row Source= SELECT TglAwalThn, TglAkhirThn FROM tblPeriode ORDER BY TglAwalThn;
- Row Source Type=Table/Query
- Bound Column=1
- Limit To List=Yes
- Default Value= =CekPeriode("TglAwalThn")
- Column Count=2
- Column Widths= 1.5";1.5"
- Column Heads=Yes
- Di samping combo box PeriodeAkuntansi, sisipkan text box dengan properti:
- Control Source= ="Dari " & Format([PeriodeAkuntansi].[column] (0),"dd mmm yyyy") & " sampai " & Format([PeriodeAkuntansi]. [column](1),"dd mmm yyyy")
- Enabled=No
- Locked=Yes
- Di samping combo box PeriodeAkuntansi, sisipkan text box dengan properti:
- Name= txtPeriodeAkuntansi
- Control Source= ="??"
- Is Hyperlink= Yes
- Locked=Yes
- Buatlah option group dengan properti Name=FrameBukuBesar dan Default Value=1. Caption untuk label pada option group = Bentuk. Dalam option group ini, buatlah 2 buah option button:Bentuk buku besar yang ringkas tidak memasukkan rekening derivatif 1 (Deriv1) dan rekening derivatif 2 (Deriv2) sebagai satu kesatuan kode rekening. Namun demikian, Deriv1 dan Deriv2 ditampilkan di bagian detail dari buku besar. Bentuk ringkas seperti ini biasanya digunakan untuk keperluan internal bagian akuntansi/keuangan. Sebaliknya, bentuk buku besar lengkap memasukkan Deriv1 dan Deriv2 sebagai satu kesatuan kode rekening. Bentuk lengkap seperti ini didistribusikan ke departemen/bagian lain yang berkepentingan karena di dalam kode rekening itu tercantum kode departemen sebagai pusat pertanggungjawaban.
- Option button 1, properti:
- Name=Option33
- Option Value=1
- Caption untuk label option ini=Lengkap, termasuk kode derivatif 1 dan 2.
- Option button 2, properti:
- Name=Option31
- Option Value=0
- Caption untuk label option ini= Ringkas, hanya kode rekening utama saja.
- Buatlah tombol perintah untuk menampilkan hasil melalui form atau report dengan properti:
- Name= SubformBukuBesar
- Caption= Subform Buku Besar
- Control Tip Text = Hanya bisa digunakan bila kode rekening, deriv1, dan deriv2 pada kotak sampai dengan sama dengan kotak dari
- Buatlah tombol perintah untuk menampilkan hasil hanya melalui report dengan properti:
- Name= ReportBukuBesar
- Caption= Laporan Buku Besar
- Buatlah tombol perintah untuk menampilkan hasil hanya melalui report dengan properti:
- Name= PrintBukuBesar
- Caption= Print Preview
Pada prinsipnya, tombol ReportBukuBesar dan PrintBukuBesar sebenarnya sama dengan tombol SubformBukuBesar. Perbedaannya, bila criteria kode rekening dalam kotak “Sampai Dengan:” sama dengan kotak “Dari:” (artinya hanya ada satu kode rekening yang ingin ditampilkan), maka buku besar akan ditampilkan di subform (melalui SubformBukuBesar) dan report (melalui ReportBukuBesar). Sedangkan tombol ReportBukuBesar untuk kriteria kode rekening dalam kotak “sampai Dengan:” tidak sama dengan kotak “Dari:”. Access tidak bisa menampilkannya dalam sebuah subform.
- Buatlah Subform di bagian form detail dengan memilih tab Create Subform/Subreport pada grup Controls. Isikan properti Name= frmBukuBesarDetail. Subform ini digunakan untuk menampilkan buku besar untuk satu rekening tertentu dengan menggunakan tombol SubformBukuBesar. Isi dari SubformBukuBesar dijelaskan di bagian lain dari subbab ini di bawah.
- Untuk mengarahkan form sesuai dengan keinginan, tulislah kode VBA berikut ini dalam Form_frmBukuBesar:
Option Compare Database
Dim blReport As Boolean
Private Sub Form_Close()
Me.frmBukuBesarDetail.SourceObject = ""
HapusObjekYgTidakPerlu "tblBukuBesar"
HapusQueryNeracaLajur
End Sub
Private Sub drKodeRek_AfterUpdate()
Me.sdKodeRek.Requery
End Sub
Private Sub drDeriv1_AfterUpdate()
sdKodeRek_AfterUpdate
End Sub
Private Sub Form_Open(Cancel As Integer)
Caption = "Buku Besar " & Nz(IdPerusahaan("Nama"), "")
Me.drTglTransaksi = CekPeriodeTanggal(TglAwalBulan)
Me.sdTglTransaksi = CekPeriodeTanggal(TglAkhirBulan)
If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
Me.frmBukuBesarDetail.SourceObject = ""
If globNeracaLajur <> "" Then
Me.Modal = True
If globNeracaLajur = "frmNeracaLajurLengkap" Then
Me.drDeriv1 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv1]
Me.drDeriv2 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv2]
Me.sdDeriv1 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv1]
Me.sdDeriv2 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv2]
End If
Me.drKodeRek = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![KodeRek]
Me.sdKodeRek = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![KodeRek]
Me.drTglTransaksi = Form_frmNeracaLajur.drTglTransaksi
Me.sdTglTransaksi = Form_frmNeracaLajur.sdTglTransaksi
Me.FrameBentuk = Form_frmNeracaLajur.FrameBentuk
SubformBukuBesar_Click
globNeracaLajur = ""
Exit Sub
End If
End Sub
Private Sub PrintBukuBesar_Click()
Dim rst As Recordset
Dim strSqlx, strSqla, strSqlb, Deriv1, Deriv2, strDerivs1, strDerivs2 As String
Dim dblSaldoAwal, dblDebit, dblKredit As Double
Dim intCounter As Integer
Dim dtInitVal As Date
If Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 > Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2 Then
MsgBox "Kriteria ""Dari"" Kode Rekening tidak boleh lebih besar daripada kriteria ""Sampai Dengan"" Kode Rekening"
Exit Sub
End If
If Me.drTglTransaksi > Me.sdTglTransaksi Then
MsgBox "Kriteria ""Dari Tanggal"" tidak boleh lebih besar daripada kriteria ""Sampai Tanggal"""
Exit Sub
End If
Me.frmBukuBesarDetail.SourceObject = ""
BuatQueryNeracaLajur Me.drTglTransaksi, Me.sdTglTransaksi, Me.drKodeRek, Me.drDeriv1, Me.drDeriv2, Me.sdKodeRek, Me.sdDeriv1, Me.sdDeriv2
BuatTabelBukuBesar
If Me.FrameBentuk = 1 Then
strSqlx = "qryNeracaLajurGabung1"
Else
strSqlx = "qryNeracaLajurGabung0"
End If
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strSqlx)
Do While Not rst.EOF
If Me.FrameBentuk = 1 Then
BuatSemuaBB Lengkap, rst!KodeRek, Me.drTglTransaksi, Me.sdTglTransaksi, Nz(rst!Deriv1, ""), Nz(rst!Deriv2, "")
Else
BuatSemuaBB HanyaKodeRekUtama, rst!KodeRek, Me.drTglTransaksi, Me.sdTglTransaksi
End If
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
If Me.FrameBentuk = 1 Then
If blReport = True Then PreviewUnRefresh "rptBukuBesarLengkap", True Else PreviewUnRefresh "rptBukuBesarLengkap"
Else
If blReport = True Then PreviewUnRefresh "rptBukuBesarRingkas", True Else PreviewUnRefresh "rptBukuBesarRingkas"
End If
blReport = False
End Sub
Private Sub sdDeriv1_GotFocus()
sdKodeRek_AfterUpdate
End Sub
Private Sub sdKodeRek_AfterUpdate()
If Me.sdKodeRek = Me.drKodeRek Then
Me.sdDeriv1.RowSource = "SELECT KodeDeriv1, NamaDeriv1 FROM tblRekDerivatif1 WHERE KodeDeriv1>='" & Me.drDeriv1 & "';"
Else
Me.sdDeriv1.RowSource = "tblRekDerivatif1"
End If
Me.sdDeriv1.Requery
End Sub
Private Sub sdDeriv2_GotFocus()
sdDeriv1_AfterUpdate
End Sub
Private Sub drDeriv2_AfterUpdate()
sdDeriv1_AfterUpdate
End Sub
Private Sub sdDeriv1_AfterUpdate()
If Me.sdKodeRek = Me.drKodeRek And Me.drDeriv1 = Me.sdDeriv1 Then
Me.sdDeriv2.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2 WHERE KodeDeriv2>='" & Me.drDeriv2 & "';"
Else
Me.sdDeriv2.RowSource = "tblRekDerivatif2"
End If
Me.sdDeriv2.Requery
End Sub
Private Sub ReportBukuBesar_Click()
blReport = True
PrintBukuBesar_Click
End Sub
Private Sub SubformBukuBesar_Click()
If Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 > Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2 Then
MsgBox "Kriteria ""Dari"" Kode Rekening tidak boleh lebih besar daripada kriteria ""Sampai Dengan"" Kode Rekening"
Exit Sub
End If
If IsNull(Me.drTglTransaksi) Or IsNull(Me.sdTgl Transaksi) Then
MsgBox "Kriteria ""Dari Tanggal"" atau ""Sampai Tanggal"" tidak boleh kosong"
Exit Sub
End If
If Me.drTglTransaksi > Me.sdTglTransaksi Then
MsgBox "Kriteria ""Dari Tanggal"" tidak boleh lebih besar daripada kriteria ""Sampai Tanggal"""
Exit Sub
End If
Me.frmBukuBesarDetail.SourceObject = ""
BuatTabelBukuBesar
Me.frmBukuBesarDetail.SourceObject= "frmBukuBesarDetail"
If Me.drKodeRek <> Me.sdKodeRek Then
ReportBukuBesar_Click
Exit Sub
End If
If Me.FrameBentuk = 0 Then
BuatSemuaBB HanyaKodeRekUtama, Me.drKodeRek, Me.drTglTransaksi, Me.sdTglTransaksi
Form_frmBukuBesarDetail.KodeDeriv1.ColumnHidden = False
Form_frmBukuBesarDetail.KodeDeriv2.ColumnHidden = False
Else
If (Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 <> Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2) Then
ReportBukuBesar_Click
Exit Sub
End If
BuatSemuaBB Lengkap, Me.drKodeRek, Me.drTglTransaksi, Me.sdTglTransaksi, Nz(Me.drDeriv1, ""), Nz(Me.drDeriv2, "")
Form_frmBukuBesarDetail.KodeDeriv1.ColumnHidden = True
Form_frmBukuBesarDetail.KodeDeriv2.ColumnHidden = True
End If
Me.frmBukuBesarDetail.Requery
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
Membuat Subform Buku Besar
Subform buku besar yang ada dalam buku besar diawali dengan pembuatan tabel yang bernama tblBukuBesar. Tabel ini dibuat melalui eksekusi kode VBA, yaitu menjalankan fungsi BuatTabelBukuBesar yang berada di dalam modul mdlTransJurnal. Untuk mengetahui lebih detail isi desain tabel tblBukuBesar silakan buka modul itu, dan cari fungsi BuatTabelBukuBesar pada posting dengan judul
Modul Untuk Mengelola Aktivitas Akuntansi. Setelah pembuatan tabel itu, langkah selanjutnya adalah membuat query yang berisi tabel tblBukuBesar. SQL view selengkapnya seperti ini:
SELECT IIf([tblBukuBesar]![JurnalId]=0,Null,[tblBukuBesar]! [JurnalId]) AS JurnalId, [tblRekUtama]![KodeRek] & [KodeDeriv1] & [Kodederiv2] AS Kode, tblTipeJurnal.TipeId, tblTipeJurnal.TipeId AS TipeJurnal, IIf([tblBukuBesar]![NoJurnal]=0,Null,[tblBukuBesar]![NoJurnal]) AS NoJurnal, tblBukuBesar.TglTransaksi, tblBukuBesar.Ref, tblBukuBesar.NoRef, tblBukuBesar.NoUrut, tblBukuBesar.RefDetail, tblRekUtama.KodeRek, tblRekDerivatif1.KodeDeriv1, tblRekDerivatif2.KodeDeriv2, tblBukuBesar.Deskripsi, tblBukuBesar.SU, tblBukuBesar.Kuantitas, tblBukuBesar.HargaSatuan, tblBukuBesar.TotalJumlah, tblBukuBesar.Debit, tblBukuBesar.Kredit, tblBukuBesar.SaldoAkhir, tblBukuBesar.JthTempo, tblBukuBesar.Deriv1, tblBukuBesar.Deriv2 FROM tblTipeJurnal RIGHT JOIN (tblRekDerivatif1 RIGHT JOIN (tblRekDerivatif2 RIGHT JOIN (tblBukuBesar INNER JOIN tblRekUtama ON tblBukuBesar.KodeRek = tblRekUtama.KodeRek) ON tblRekDerivatif2.KodeDeriv2 = tblBukuBesar.Deriv2) ON tblRekDerivatif1.KodeDeriv1 = tblBukuBesar.Deriv1) ON tblTipeJurnal.TipeId = tblBukuBesar.TipeJurnal;
Simpanlah query di atas dengan nama qryBukuBesar. Design view untuk query di atas dapat dilihat pada Gambar 2, yang hanya memuat relasi antar tabel. Query inilah yang diisikan dalam subform sebagai record sourcenya.
|
Gambar 2 |
Setelah selesai pembuatan query qryBukuBesar, kita mendesain form (atau subform) frmBukuBesarDetail. Pembuatannya cukup mudah, sorotlah qryBukuBesar yang ada di Navigation pane – Queries, lalu pilih tab Create, pada grup Forms, pilih More Forms dan klik Datasheet. Simpanlah form itu dengan nama frmBukuBesarDetail. Adapaun Design view dari form itu tampak seperti pada Gambar 3. Pada bagian text box NoJurnal atur kembali propertinya:
- Format = 00000
- Is Hyperlink = Yes
- On Click=[Event Procedure]:
Private Sub NoJurnal_Click()
If IsNull(Me.TipeId) Or Me.TipeId = "" Then Exit Sub
globSumberBukuBesar = "TglTransaksi=#" & Me.TglTransaksi & "# and TipeJurnal='" & Me.TipeId & "' and NoJurnal=" & Me.NoJurnal
BukaForm "frmPermTransJournal_Parent"
End Sub
|
Gambar 3 |
Comments
Post a Comment