Skip to main content

Membuat Form Untuk Neraca Lajur

Pada dasarnya, membuat form neraca lajur sama dengan form buku besar. Perbedaannya terletak pada bagian subform, sedangakan kriteria yang dimasukkan dalam form neraca lajur sama dengan kriteria dalam buku besar. Jadi, kita dapat membuat Blank Form dan mengkopi kriteria yang ada di buku besar ke Blank Form itu seperti tampak pada Gambar 1.

Setelah itu, pada combo box sdKodeRek ubahlah properti Row Source=
SELECT KodeRek, NamaRek FROM tblRekUtama WHERE KodeRek>=[Forms] ![frmNeracaLajur]![drKodeRek];. Beberapa nama kontrol lainnya yang juga perlu diubah adalah: FrameBukuBesar, SubformBukuBesar, ReportBukuBesar, dan PrintBukuBesar. Ubahlah “BukuBesar” menjadi “NeracaLajur” pada nama-nama kontrol itu agar relevan dengan nama form. Agar form nampak nyaman dilihat, hilangkan properti Record Selectors dan Record Navigations (isikan No pada kedua properti itu).

Gambar 1

Sebelum membuat subform di bagian detail dan report, kita harus membuat query terlebih dahulu agar subform atau report dapat mengidetifikasi record source yang akan dipakai. Ada dua macam query yang dibuat, satu untuk membaca neraca lajur  bentuk lengkap, satu lagi bentuk ringkas seperti di buku besar. Berikut ini adalah query untuk bentuk lengkap:

SELECT KodeRek, Deriv1, Deriv2, Sum([qryNeracaLajurGabung]![SaldoAwal]) AS SaldoAwal, Sum(SumOfJmlhDebit) AS Debit, Sum(SumOfJmlhKredit) AS Kredit, Sum(SumOfPenyesDebit) AS PenyDebit, Sum(SumOfPenyesKredit) AS PenyKredit, [SaldoAwal]+[Debit]+[PenyDebit]-[Kredit]-[PenyKredit] AS SaldoAkhir FROM qryNeracaLajurGabung GROUP BY KodeRek, Deriv1, Deriv2 ORDER BY KodeRek, Deriv1, Deriv2;

Simpanlah query di atas dengan nama qryNeracaLajurGabung1. Sedangkan untuk bentuk ringkas, simpanlah query di bawah ini dengan nama qryNeracaLajur Gabung0:

SELECT qryNeracaLajurGabung1.KodeRek, Sum(qryNeracaLajurGabung1.SaldoAwal) AS SaldoAwal, Sum(qryNeracaLajurGabung1.Debit) AS Debit, Sum(qryNeracaLajurGabung1.Kredit) AS Kredit, Sum(qryNeracaLajurGabung1.PenyDebit) AS PenyDebit, Sum(qryNeracaLajurGabung1.PenyKredit) AS PenyKredit, Sum(qryNeracaLajurGabung1.SaldoAkhir) AS SaldoAkhir FROM qryNeracaLajurGabung1 GROUP BY qryNeracaLajurGabung1.KodeRek;

Kedua query itu, qryNeracaLajurGabung1 dan qryNeracaLajurGabung0 kemudian digunakan sebagai dasar pembuatan form atau subform untuk frmNeracaLajur, yaitu dengan menautkannya di properti Record Source pada form. Masing-masing form kita beri nama frmNeracaLajurLengkap dan frmNeracaLajurRingkas. Design view untuk kedua form itu tampak pada Gambar 2 dan 3. Kita dapat membuat form itu melalui Form Wizard, Blank Form atau Form Design, pilih saja mana yang paling nyaman. Kita dapat menyalin form control dan Control Source sama persis seperti di gambar itu.
Gambar 2
Gambar 3
Kedua form itu mempunyai properti yang sama yaitu:
  1. Default View=Continous Forms. Dengan view ini, kita harus berhati-hati karena susunan field atau form control yang ada di dalam harus terlihat rapi, seperti tampak pada gambar di atas.
  2. Record Selectors=No
  3. Navigation Buttons=No
  4. Allow Additions=No
  5. Allow Deletions=No
Selain properti untuk form, pada bagian footer, aturlah properti Visible=No, agar pada saat frmNeracaLajur dibuka dalam Form view, bagian footer yang berisi total tidak ditampilkan di situ. Jumlah total akan ditampilkan di bagian bawah form frmNeracaLajur. Adapun text box yang ada di bagian form footer itu bernama TotalSaldoAwal, TotalDebit, TotalKredit, TotalPenyDebit, TotalPenyKredit, dan TotalSaldoAkhir. Control Source keenam text box itu merupakan jumlah total masing-masing kolom dari Saldo Awal (field SaldoAwal) sampai dengan Saldo Akhir (field SaldoAkhir) seperti tampak pada gambar itu.

Setelah selesai membuat frmNeracaLajurLengkap dan frmNeracaLajurRingkas, langkah selanjutnya adalah membuat subform dari kedua form ini di frmNeracaLajur. Untuk itu, bukalah frmNeracaLajur lalu sisipkan subform kosong (unbound subform) di bagian detail dari form ini. Caranya, matikan terlebih dahulu tombol Use Control Wizards dan pilih Subform/Subreport pada tab Design grup control. Subform ini kemudian diberi nama frmNeracaLajurDetail pada properti Name.

Di bawah subform frmNeracaLajurDetail, buatlah 6 buah text box yang berisi jumlah total dari saldo awal, debit, kredit, penyesuaian debit, penyesuaian kredit, dan saldo akhir yang ada di frmNeracaLajurLengkap atau frmNeracaLajurRingkas. Kita dapat mengkopi keenam text box yang ada di bagian footer dari frmNeracaLajurLengkap atau frmNeracaLajurRingkas dan paste ke bawah subform frmNeracaLajurDetail, pastikan bahwa lebar keenam text box ini sama persis dengan text box yang ada di dalam detail. Form design neraca lajur pada bagian detail dan footer ada di Gambar 4, bawah.
Gambar 4

Aturlah properti nama dari masing-masing text box itu: SaldoAwal, Debit, Kredit, PenyDebit, PenyKredit, dan SaldoAkhir. Pada text box SaldoAwal, isikan properti Control Source==IIf( [frmNeracaLajurDetail].SourceObject="",0,[frmNeracaLajur Detail].[Form]![TotalSaldoAwal]). Pada text box Debit, isikan properti Control Source==IIf([frmNeracaLajurDetail]. [Source Object]="",0, [frmNeracaLajur Detail].[Form]![TotalDebit]). Pada text box Kredit, isikan properti Control Source= =IIf([frmNeracaLajurDetail].[SourceObject]="",0, [frmNeraca LajurDetail]. [Form]![Kredit]). Pada text box PenyDebit, isikan properti Control Source== IIf([frmNeracaLajurDetail].[SourceObject]="",0,[frmNeracaLajurDetail].[Form]! [TotalPeny Debit]). Pada text box PenyKredit, isikan properti Control Source==IIf( [frmNeracaLajur Detail].[SourceObject]="",0, [frmNeracaLajurDetail].[Form]! [TotalPenyKredit]). Pada text box SaldoAkhir, isikan properti Control Source==IIf( [frmNeracaLajurDetail].[SourceObject] ="",0, [frmNeracaLajurDetail].[Form]! [TotalSaldoAkhir]).

Berikut ini adalah kode VBA yang ada dalam modul Form_frmNeracaLajur
Option Compare Database
Dim blReport As Boolean
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
Private Sub Form_Close()
  Form_frmMenus.Visible = True
  HapusQueryNeracaLajur
End Sub
Private Sub Form_Open(Cancel As Integer)
  If IjinDitolak(Me.Name) Then
    MsgBox TampilkanLogin & " tidak bisa mengakses menu/form ini"
    Cancel = True
    Exit Sub
  End If
  Me.Caption = "Neraca Lajur " & Nz(IdPerusahaan("Nama"), "")
  If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
  Me.frmNeracaLajurDetail.SourceObject = ""
  Me.drTglTransaksi = CekPeriodeTanggal(TglAwalBulan)
  Me.sdTglTransaksi = CekPeriodeTanggal(TglAkhirBulan)
  Me.PeriodeAkuntansi = CekPeriodeTanggal(TglAwalThn)
  FrameBentuk_AfterUpdate
End Sub
Private Sub FrameBentuk_AfterUpdate()
  If Me.FrameBentuk = 1 Then globalQryNama = "qryNeracaLajur Gabung1" Else globalQryNama = "qryNeracaLajurGabung2"
End Sub
Private Sub drKodeRek_AfterUpdate()
  Me.sdKodeRek.Requery
End Sub
Private Sub drDeriv1_AfterUpdate()
  sdKodeRek_AfterUpdate
End Sub
Private Sub PrintNeracaLajur_Click()
  BuatQueryNeracaLajur Me.drTglTransaksi, Me.sdTglTransaksi, Me.drKodeRek, Me.drDeriv1, Me.drDeriv2, Me.sdKodeRek, Me.sdDeriv1, Me.sdDeriv2
  If Me.FrameBentuk = 1 Then
    If blReport = True Then PreviewUnRefresh "rptNeracaLajur Lengkap", True Else PreviewUnRefresh "rptNeracaLajur Lengkap"
  Else
    If blReport = True Then PreviewUnRefresh "rptNeracaLajur Ringkas", True Else PreviewUnRefresh "rptNeracaLajur Ringkas"
  End If
  blReport = False
End Sub
Private Sub ReportNeracaLajur_Click()
  blReport = True
  PrintNeracaLajur_Click
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 SubformNeracaLajur_Click()
  Dim rst As Recordset
  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 Kode Rekening"
    Exit Sub
  End If
  Me.frmNeracaLajurDetail.SourceObject = ""
  BuatQueryNeracaLajur Me.drTglTransaksi, Me.sdTglTransaksi, Me.drKodeRek, Me.drDeriv1, Me.drDeriv2, Me.sdKodeRek, Me.sdDeriv1, Me.sdDeriv2
  If Me.FrameBentuk = 1 Then
    Me.frmNeracaLajurDetail.SourceObject = "frmNeracaLajur Lengkap"
  Else
    Me.frmNeracaLajurDetail.SourceObject = "frmNeracaLajur Ringkas"
  End If
  Me.frmNeracaLajurDetail.Requery
End Sub
Untuk memudahkan kita dalam menelusur balik setiap kode rekening ke sumber transaksi itu berada, pada form frmNeracaLajurLengkap, tambahkanlah kode VBA:
Option Compare Database
Private Sub KodeRek_DblClick(Cancel As Integer)
  BuatTabelBukuBesar
  BuatSemuaBB Lengkap, Me.KodeRek, Form_frmNeracaLajur. drTglTransaksi, Form_frmNeracaLajur.sdTglTransaksi, Nz(Me.Deriv1, ""), Nz(Me.Deriv2, "")
  globNeracaLajur = "frmNeracaLajurLengkap"
  BukaForm "frmBukuBesar"
End Sub
Private Sub KodeRek_GotFocus()
  Me.KodeRek.ControlTipText = DLookup("[NamaRek]", "tblRekUtama", "[KodeRek]='" & Me.KodeRek & "'") & vbCrLf & vbCrLf & _
  "Double click untuk melihat detaiil buku besar"
End Sub
Hal yang sama kita lakukan pada form frmNeracaLajurRingkas, tambahkanlah kode VBA:
Option Compare Database
Private Sub KodeRek_DblClick(Cancel As Integer)
  BuatTabelBukuBesar
  BuatSemuaBB HanyaKodeRekUtama, Me.KodeRek, Form_frmNeraca Lajur.drTglTransaksi, Form_frmNeracaLajur.sdTglTransaksi
  globNeracaLajur = "frmNeracaLajurRingkas"
  BukaForm "frmBukuBesar"
End Sub
Private Sub KodeRek_GotFocus()
  Me.KodeRek.ControlTipText = DLookup("[NamaRek]", "tblRekUtama", "[KodeRek]='" & Me.KodeRek & "'") & vbCrLf & vbCrLf & "Double click untuk melihat detaiil buku besar"
End Sub
Bila kode rekening yang ada di subform dalam neraca lajur diklik dua kali, maka form Buku Besar akan terbuka sesuai dengan kriteria dan kode rekening yang diklik itu.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access