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
  1. Option Compare Database  
  2. Dim blReport As Boolean  
  3. Private Sub txtPeriodeAkuntansi_Click()  
  4.   Me.drTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](0), Me.drTglTransaksi.Format)  
  5.   Me.sdTglTransaksi = Format(Me.PeriodeAkuntansi.[Column](1), Me.sdTglTransaksi.Format)  
  6. End Sub  
  7. Private Sub Form_Close()  
  8.   Form_frmMenus.Visible = True  
  9.   HapusQueryNeracaLajur  
  10. End Sub  
  11. Private Sub Form_Open(Cancel As Integer)  
  12.   If IjinDitolak(Me.Name) Then  
  13.     MsgBox TampilkanLogin & " tidak bisa mengakses menu/form ini"  
  14.     Cancel = True  
  15.     Exit Sub  
  16.   End If  
  17.   Me.Caption = "Neraca Lajur " & Nz(IdPerusahaan("Nama"), "")  
  18.   If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
  19.   Me.frmNeracaLajurDetail.SourceObject = ""  
  20.   Me.drTglTransaksi = CekPeriodeTanggal(TglAwalBulan)  
  21.   Me.sdTglTransaksi = CekPeriodeTanggal(TglAkhirBulan)  
  22.   Me.PeriodeAkuntansi = CekPeriodeTanggal(TglAwalThn)  
  23.   FrameBentuk_AfterUpdate  
  24. End Sub  
  25. Private Sub FrameBentuk_AfterUpdate()  
  26.   If Me.FrameBentuk = 1 Then globalQryNama = "qryNeracaLajur Gabung1" Else globalQryNama = "qryNeracaLajurGabung2"  
  27. End Sub  
  28. Private Sub drKodeRek_AfterUpdate()  
  29.   Me.sdKodeRek.Requery  
  30. End Sub  
  31. Private Sub drDeriv1_AfterUpdate()  
  32.   sdKodeRek_AfterUpdate  
  33. End Sub  
  34. Private Sub PrintNeracaLajur_Click()  
  35.   BuatQueryNeracaLajur Me.drTglTransaksi, Me.sdTglTransaksi, Me.drKodeRek, Me.drDeriv1, Me.drDeriv2, Me.sdKodeRek, Me.sdDeriv1, Me.sdDeriv2  
  36.   If Me.FrameBentuk = 1 Then  
  37.     If blReport = True Then PreviewUnRefresh "rptNeracaLajur Lengkap"True Else PreviewUnRefresh "rptNeracaLajur Lengkap"  
  38.   Else  
  39.     If blReport = True Then PreviewUnRefresh "rptNeracaLajur Ringkas"True Else PreviewUnRefresh "rptNeracaLajur Ringkas"  
  40.   End If  
  41.   blReport = False  
  42. End Sub  
  43. Private Sub ReportNeracaLajur_Click()  
  44.   blReport = True  
  45.   PrintNeracaLajur_Click  
  46. End Sub  
  47. Private Sub sdDeriv1_GotFocus()  
  48.   sdKodeRek_AfterUpdate  
  49. End Sub  
  50. Private Sub sdKodeRek_AfterUpdate()  
  51.   If Me.sdKodeRek = Me.drKodeRek Then  
  52.     Me.sdDeriv1.RowSource = "SELECT KodeDeriv1, NamaDeriv1 FROM tblRekDerivatif1 WHERE KodeDeriv1>='" & Me.drDeriv1 & "';"  
  53.   Else  
  54.     Me.sdDeriv1.RowSource = "tblRekDerivatif1"  
  55.   End If  
  56.   Me.sdDeriv1.Requery  
  57. End Sub  
  58. Private Sub sdDeriv2_GotFocus()  
  59.   sdDeriv1_AfterUpdate  
  60. End Sub  
  61. Private Sub drDeriv2_AfterUpdate()  
  62.   sdDeriv1_AfterUpdate  
  63. End Sub  
  64. Private Sub sdDeriv1_AfterUpdate()  
  65.   If Me.sdKodeRek = Me.drKodeRek And Me.drDeriv1 = Me.sdDeriv1 Then  
  66.     Me.sdDeriv2.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2 WHERE KodeDeriv2>='" & Me.drDeriv2 & "';"  
  67.   Else  
  68.     Me.sdDeriv2.RowSource = "tblRekDerivatif2"  
  69.   End If  
  70.   Me.sdDeriv2.Requery  
  71. End Sub  
  72. Private Sub SubformNeracaLajur_Click()  
  73.   Dim rst As Recordset  
  74.   If Me.drKodeRek & Me.drDeriv1 & Me.drDeriv2 > Me.sdKodeRek & Me.sdDeriv1 & Me.sdDeriv2 Then  
  75.     MsgBox "Kriteria dari Kode Rekening tidak boleh lebih besar daripada kriteria sampai Kode Rekening"  
  76.     Exit Sub  
  77.   End If  
  78.   Me.frmNeracaLajurDetail.SourceObject = ""  
  79.   BuatQueryNeracaLajur Me.drTglTransaksi, Me.sdTglTransaksi, Me.drKodeRek, Me.drDeriv1, Me.drDeriv2, Me.sdKodeRek, Me.sdDeriv1, Me.sdDeriv2  
  80.   If Me.FrameBentuk = 1 Then  
  81.     Me.frmNeracaLajurDetail.SourceObject = "frmNeracaLajur Lengkap"  
  82.   Else  
  83.     Me.frmNeracaLajurDetail.SourceObject = "frmNeracaLajur Ringkas"  
  84.   End If  
  85.   Me.frmNeracaLajurDetail.Requery  
  86. End Sub  
Untuk memudahkan kita dalam menelusur balik setiap kode rekening ke sumber transaksi itu berada, pada form frmNeracaLajurLengkap, tambahkanlah kode VBA:
  1. Option Compare Database  
  2. Private Sub KodeRek_DblClick(Cancel As Integer)  
  3.   BuatTabelBukuBesar  
  4.   BuatSemuaBB Lengkap, Me.KodeRek, Form_frmNeracaLajur. drTglTransaksi, Form_frmNeracaLajur.sdTglTransaksi, Nz(Me.Deriv1, ""), Nz(Me.Deriv2, "")  
  5.   globNeracaLajur = "frmNeracaLajurLengkap"  
  6.   BukaForm "frmBukuBesar"  
  7. End Sub  
  8. Private Sub KodeRek_GotFocus()  
  9.   Me.KodeRek.ControlTipText = DLookup("[NamaRek]""tblRekUtama""[KodeRek]='" & Me.KodeRek & "'") & vbCrLf & vbCrLf & _  
  10.   "Double click untuk melihat detaiil buku besar"  
  11. End Sub  
Hal yang sama kita lakukan pada form frmNeracaLajurRingkas, tambahkanlah kode VBA:
  1. Option Compare Database  
  2. Private Sub KodeRek_DblClick(Cancel As Integer)  
  3.   BuatTabelBukuBesar  
  4.   BuatSemuaBB HanyaKodeRekUtama, Me.KodeRek, Form_frmNeraca Lajur.drTglTransaksi, Form_frmNeracaLajur.sdTglTransaksi  
  5.   globNeracaLajur = "frmNeracaLajurRingkas"  
  6.   BukaForm "frmBukuBesar"  
  7. End Sub  
  8. Private Sub KodeRek_GotFocus()  
  9.   Me.KodeRek.ControlTipText = DLookup("[NamaRek]""tblRekUtama""[KodeRek]='" & Me.KodeRek & "'") & vbCrLf & vbCrLf & "Double click untuk melihat detaiil buku besar"  
  10. 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

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