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).
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.
Kedua form itu mempunyai properti yang sama yaitu:
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.
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
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 |
- 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.
- Record Selectors=No
- Navigation Buttons=No
- Allow Additions=No
- Allow Deletions=No
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
Post a Comment