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 SubUntuk 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 SubHal 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 SubBila 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