Skip to main content

Membuat Form Buku Besar

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:
  1. 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.
  2. 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:
    1. Combo box dengan properti:
      1. Name=drKodeRek
      2. Column Count=2
      3. Bound Column-1
      4. Column Width=1”;2.5”
      5. List Width=3.5”
      6. Row Source=tblRekUtama
    2. Persis di bawah combo box drKodeRek, buatlah text box tanpa label dengan properti:
      1. Name=drKodeRekNama
      2. Control Source= =[drKodeRek].[column](1)
    3. Di samping combo box drKodeRek, sisipkan combo box dengan properti:
      1. Name= drDeriv1
      2. Column Count=2
      3. Bound Column-1
      4. Column Width=1”;2.5”
      5. List Width=3.5”
      6. Row Source= tblRekDerivatif1
    4. Persis di bawah combo box drDeriv1, buatlah text box tanpa label dengan properti:
      1. Name= drDeriv1Nama
      2. Control Source= =[drDeriv1].[column](1)
    5. Di samping combo box drDeriv1, sisipkan combo box dengan properti:
      1. Name= drDeriv2
      2. Column Count=2
      3. Bound Column-1
      4. Column Width=1”;2.5”
      5. List Width=3.5”
      6. Row Source= tblRekDerivatif2
    6. Persis di bawah combo box drDeriv1, buatlah text box tanpa label dengan properti:
      1. Name= drDeriv2Nama
      2. Control Source= =[drDeriv2].[column](1)
  3. Kopilah Frame20 bersama seluruh control yang ada di dalamnya ke samping.
    1. Gantilah label Caption dari “Dari” menjadi “Sampai Dengan”.
    2. Gantilah semua properti Name dari combo box: drKodeRek, drDeriv1, dan drDeriv2 menjadi sdKodeRek, sdDeriv1, dan sdDeriv2 berurutan.
    3. 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.
  4. 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.
  5. Di bawah text box drTglTransaksi, sisipkanlah combo box tanpa label dengan properti:
    1. Name=PeriodeAkuntansi
    2. Row Source= SELECT TglAwalThn, TglAkhirThn FROM tblPeriode ORDER BY TglAwalThn;
    3. Row Source Type=Table/Query
    4. Bound Column=1
    5. Limit To List=Yes
    6. Default Value= =CekPeriode("TglAwalThn")
    7. Column Count=2
    8. Column Widths= 1.5";1.5"
    9. Column Heads=Yes
  6. Di samping combo box PeriodeAkuntansi, sisipkan text box dengan properti:
    1. Control Source= ="Dari " & Format([PeriodeAkuntansi].[column] (0),"dd mmm yyyy") & " sampai " & Format([PeriodeAkuntansi]. [column](1),"dd mmm yyyy")
    2. Enabled=No
    3. Locked=Yes
  7. Di samping combo box PeriodeAkuntansi, sisipkan text box dengan properti:
    1. Name= txtPeriodeAkuntansi
    2. Control Source= ="??"
    3. Is Hyperlink= Yes
    4. Locked=Yes
  8. 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.
    1. Option button 1, properti:
      1. Name=Option33
      2. Option Value=1
      3. Caption untuk label option ini=Lengkap, termasuk kode derivatif 1 dan 2.
    2. Option button 2, properti:
      1. Name=Option31
      2. Option Value=0
      3. Caption untuk label option ini= Ringkas, hanya kode rekening utama saja.
  9. Buatlah tombol perintah untuk menampilkan hasil melalui form atau report dengan properti:
    1. Name= SubformBukuBesar
    2. Caption= Subform Buku Besar
    3. Control Tip Text = Hanya bisa digunakan bila kode rekening, deriv1, dan deriv2 pada kotak sampai dengan sama dengan kotak dari
  10. Buatlah tombol perintah untuk menampilkan hasil hanya melalui report dengan properti:
    1. Name= ReportBukuBesar
    2. Caption= Laporan Buku Besar
  11. Buatlah tombol perintah untuk menampilkan hasil hanya melalui report dengan properti:
    1. Name= PrintBukuBesar
    2. 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.
  12. 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.
  13. Untuk mengarahkan form sesuai dengan keinginan, tulislah kode VBA berikut ini dalam Form_frmBukuBesar:
    1. Option Compare Database  
    2. Dim blReport As Boolean  
    3. Private Sub Form_Close()  
    4.   Me.frmBukuBesarDetail.SourceObject = ""  
    5.   HapusObjekYgTidakPerlu "tblBukuBesar"  
    6.   HapusQueryNeracaLajur  
    7. End Sub  
    8. Private Sub drKodeRek_AfterUpdate()  
    9.   Me.sdKodeRek.Requery  
    10. End Sub  
    11. Private Sub drDeriv1_AfterUpdate()  
    12.   sdKodeRek_AfterUpdate  
    13. End Sub  
    14. Private Sub Form_Open(Cancel As Integer)  
    15.   Caption = "Buku Besar " & Nz(IdPerusahaan("Nama"), "")  
    16.   Me.drTglTransaksi = CekPeriodeTanggal(TglAwalBulan)  
    17.   Me.sdTglTransaksi = CekPeriodeTanggal(TglAkhirBulan)  
    18.   If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
    19.   Me.frmBukuBesarDetail.SourceObject = ""  
    20.   If globNeracaLajur <> "" Then  
    21.     Me.Modal = True  
    22.     If globNeracaLajur = "frmNeracaLajurLengkap" Then  
    23.       Me.drDeriv1 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv1]  
    24.       Me.drDeriv2 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv2]  
    25.       Me.sdDeriv1 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv1]  
    26.       Me.sdDeriv2 = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![Deriv2]  
    27.     End If  
    28.     Me.drKodeRek = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![KodeRek]  
    29.     Me.sdKodeRek = Forms![frmNeracaLajur]![frmNeracaLajur Detail].Form![KodeRek]  
    30.     Me.drTglTransaksi = Form_frmNeracaLajur.drTglTransaksi  
    31.     Me.sdTglTransaksi = Form_frmNeracaLajur.sdTglTransaksi  
    32.     Me.FrameBentuk = Form_frmNeracaLajur.FrameBentuk  
    33.     SubformBukuBesar_Click  
    34.     globNeracaLajur = ""  
    35.     Exit Sub  
    36.   End If  
    37. End Sub  
    38. Private Sub PrintBukuBesar_Click()  
    39.   Dim rst As Recordset  
    40.   Dim strSqlx, strSqla, strSqlb, Deriv1, Deriv2, strDerivs1, strDerivs2 As String  
    41.   Dim dblSaldoAwal, dblDebit, dblKredit As Double  
    42.   Dim intCounter As Integer  
    43.   Dim dtInitVal As Date  
    44.   If Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 > Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2 Then  
    45.     MsgBox "Kriteria ""Dari"" Kode Rekening tidak boleh lebih besar daripada kriteria ""Sampai Dengan"" Kode Rekening"  
    46.     Exit Sub  
    47.   End If  
    48.   If Me.drTglTransaksi > Me.sdTglTransaksi Then  
    49.     MsgBox "Kriteria ""Dari Tanggal"" tidak boleh lebih besar daripada kriteria ""Sampai Tanggal"""  
    50.     Exit Sub  
    51.   End If  
    52.   Me.frmBukuBesarDetail.SourceObject = ""  
    53.   BuatQueryNeracaLajur Me.drTglTransaksi, Me.sdTglTransaksi, Me.drKodeRek, Me.drDeriv1, Me.drDeriv2, Me.sdKodeRek, Me.sdDeriv1, Me.sdDeriv2  
    54.   BuatTabelBukuBesar  
    55.   If Me.FrameBentuk = 1 Then  
    56.     strSqlx = "qryNeracaLajurGabung1"  
    57.   Else  
    58.     strSqlx = "qryNeracaLajurGabung0"  
    59.   End If  
    60.   Set dbs = CurrentDb  
    61.   Set rst = dbs.OpenRecordset(strSqlx)  
    62.   Do While Not rst.EOF  
    63.     If Me.FrameBentuk = 1 Then  
    64.       BuatSemuaBB Lengkap, rst!KodeRek, Me.drTglTransaksi, Me.sdTglTransaksi, Nz(rst!Deriv1, ""), Nz(rst!Deriv2, "")  
    65.     Else  
    66.       BuatSemuaBB HanyaKodeRekUtama, rst!KodeRek, Me.drTglTransaksi, Me.sdTglTransaksi  
    67.     End If  
    68.       rst.MoveNext  
    69.   Loop  
    70.   rst.Close  
    71.   Set rst = Nothing  
    72.   If Me.FrameBentuk = 1 Then  
    73.     If blReport = True Then PreviewUnRefresh "rptBukuBesarLengkap"True Else PreviewUnRefresh "rptBukuBesarLengkap"  
    74.   Else  
    75.     If blReport = True Then PreviewUnRefresh "rptBukuBesarRingkas"True Else PreviewUnRefresh "rptBukuBesarRingkas"  
    76.   End If  
    77.   blReport = False  
    78. End Sub  
    79. Private Sub sdDeriv1_GotFocus()  
    80.   sdKodeRek_AfterUpdate  
    81. End Sub  
    82. Private Sub sdKodeRek_AfterUpdate()  
    83.   If Me.sdKodeRek = Me.drKodeRek Then  
    84.     Me.sdDeriv1.RowSource = "SELECT KodeDeriv1, NamaDeriv1 FROM tblRekDerivatif1 WHERE KodeDeriv1>='" & Me.drDeriv1 & "';"  
    85.   Else  
    86.     Me.sdDeriv1.RowSource = "tblRekDerivatif1"  
    87.   End If  
    88.   Me.sdDeriv1.Requery  
    89. End Sub  
    90. Private Sub sdDeriv2_GotFocus()  
    91.   sdDeriv1_AfterUpdate  
    92. End Sub  
    93. Private Sub drDeriv2_AfterUpdate()  
    94.   sdDeriv1_AfterUpdate  
    95. End Sub  
    96. Private Sub sdDeriv1_AfterUpdate()  
    97.   If Me.sdKodeRek = Me.drKodeRek And Me.drDeriv1 = Me.sdDeriv1 Then  
    98.     Me.sdDeriv2.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2 WHERE KodeDeriv2>='" & Me.drDeriv2 & "';"  
    99.   Else  
    100.     Me.sdDeriv2.RowSource = "tblRekDerivatif2"  
    101.   End If  
    102.   Me.sdDeriv2.Requery  
    103. End Sub  
    104. Private Sub ReportBukuBesar_Click()  
    105.   blReport = True  
    106.   PrintBukuBesar_Click  
    107. End Sub  
    108. Private Sub SubformBukuBesar_Click()  
    109.   If Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 > Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2 Then  
    110.     MsgBox "Kriteria ""Dari"" Kode Rekening tidak boleh lebih besar daripada kriteria ""Sampai Dengan"" Kode Rekening"  
    111.     Exit Sub  
    112.   End If  
    113.   If IsNull(Me.drTglTransaksi) Or IsNull(Me.sdTgl Transaksi) Then  
    114.     MsgBox "Kriteria ""Dari Tanggal"" atau ""Sampai Tanggal"" tidak boleh kosong"  
    115.     Exit Sub  
    116.   End If  
    117.   If Me.drTglTransaksi > Me.sdTglTransaksi Then  
    118.     MsgBox "Kriteria ""Dari Tanggal"" tidak boleh lebih besar daripada kriteria ""Sampai Tanggal"""  
    119.     Exit Sub  
    120.   End If  
    121.   Me.frmBukuBesarDetail.SourceObject = ""  
    122.   BuatTabelBukuBesar  
    123.   Me.frmBukuBesarDetail.SourceObject= "frmBukuBesarDetail"  
    124.   If Me.drKodeRek <> Me.sdKodeRek Then  
    125.     ReportBukuBesar_Click  
    126.     Exit Sub  
    127.   End If  
    128.   If Me.FrameBentuk = 0 Then  
    129.     BuatSemuaBB HanyaKodeRekUtama, Me.drKodeRek, Me.drTglTransaksi, Me.sdTglTransaksi  
    130.     Form_frmBukuBesarDetail.KodeDeriv1.ColumnHidden = False  
    131.     Form_frmBukuBesarDetail.KodeDeriv2.ColumnHidden = False  
    132.   Else  
    133.     If (Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 <> Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2) Then  
    134.       ReportBukuBesar_Click  
    135.       Exit Sub  
    136.     End If  
    137.     BuatSemuaBB Lengkap, Me.drKodeRek, Me.drTglTransaksi, Me.sdTglTransaksi, Nz(Me.drDeriv1, ""), Nz(Me.drDeriv2, "")  
    138.     Form_frmBukuBesarDetail.KodeDeriv1.ColumnHidden = True  
    139.     Form_frmBukuBesarDetail.KodeDeriv2.ColumnHidden = True  
    140.   End If  
    141.   Me.frmBukuBesarDetail.Requery  
    142. End Sub  
    143. Private Sub txtPeriodeAkuntansi_Click()  
    144.  Me.drTglTransaksi=Format(Me.PeriodeAkuntansi.[Column](0), Me.drTglTransaksi.Format)  
    145.  Me.sdTglTransaksi=Format(Me.PeriodeAkuntansi.[Column](1), Me.sdTglTransaksi.Format)  
    146. 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:
  1. Format = 00000
  2. Is Hyperlink = Yes
  3. On Click=[Event Procedure]:
    1. Private Sub NoJurnal_Click()  
    2.   If IsNull(Me.TipeId) Or Me.TipeId = "" Then Exit Sub  
    3.   globSumberBukuBesar = "TglTransaksi=#" & Me.TglTransaksi & "# and TipeJurnal='" & Me.TipeId & "' and NoJurnal=" & Me.NoJurnal  
    4.   BukaForm "frmPermTransJournal_Parent"  
    5. End Sub  
Gambar 3

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