Skip to main content

Dua Sumber Tabel Berbeda, Tetapi Satu Bentuk Laporan yang Sama

Bila di bagian sebelumnya, kita sudah membuat laporan dengan dua macam mode tampilan yang berasal dari satu form (satu tabel), yang sesuai dengan permintaan pengguna, maka pada bagian ini, kita akan membuat laporan dengan dua macam mode tampilan yang berasal dari dua macam form (dua tabel).

Seperti diketahui, tblRekDerivatif1 dan tblRekDerivatif2, kecuali nama field, kedua tabel itu memiliki properti yang sama, baik dari tipe data maupun dari field properties. Dengan kesamaan yang ada ini, kita bisa membuat satu macam report untuk dua sumber record (record source) yang berbeda. Penjelasannya seperti ini.

Form untuk memasukkan data ke tblRekDerivatif1 adalah frmRekDerivatif1, sedangkan form untuk tblRekDerivatif2 adalah frmRekDerivarif2. Kedua form itu mempunyai format yang persis sama (lihat di posting berjudul Membuat Form dengan Menggunakan Blank Form).

Pastikan bahwa kedua form itu juga mempunyai tombol perintah seperti pada posting yang berjudul Memodifikasi Report Berdasarkan Permintaan Pengguna di gambar 4, tombol perintah Preview untuk menampilkan form dialog Preview Report. Masing-masing form itu, bila tombol perintah Preview diklik, akan memerintahkan Access untuk menciptakan variable global yang nilainya sama dengan deriv1 untuk rekening derivatif 1 dan deriv2 untuk rekening derivatif 2 dan disimpan dalam memori sementara. Setelah itu, Access membuka form dialog Preview Report (tampilannya seperti pada gambar 1, posting dengan jdul yang sama).

Form dialog Preview Report itu, berdasarkan variabel global, kemudian akan mengolah data yang dibutuhkan. Jadi misalnya, bila nilai variabel global sama dengan deriv1, maka form dialog akan mengolah data yang berkaitan dengan rekening derivatif 1. Demikian pula untuk variabel global deriv2.

Pada saat tombol Lihat Laporan ditekan, Access akan membuka report yang sumber datanya juga diolah berdasarkan variabel global. Proses untuk membuat laporan itu, secara substansi, sama seperti yang terjadi dengan form dialog ini.

Jadi, proses membuat satu laporan ini melibatkan dua form sebagai sumber data, yaitu frmRekDerivatif1 dan frmRekDerivatif2, satu form dialog (frmRekDerivatif Dialog), dan satu laporan yang bisa menghasilkan dua macam mode tampilan (rptRekDerivatif), seperti tampak pada gambar di bawah.
Gambar 1

Tahap 1. Bukalah Form view dari frmReKDerivatif1 seperti di bawah ini. Demikian juga dengan frmRekDerivatif2.
Gambar 2

Ubahlah tempilannya ke Design view. Lalu, pada properti form On Open dan tombol perintah Preview On Click, isikan code VBA di bawah ini:

Form frmRekDerivatif1:
Private Sub Form_Open(Cancel As Integer)
    Me.Caption = "Daftar Kode Rekening - Rekening Derivatif 1 " & Nz(IdPerusahaan("Nama"), "")
    If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
End Sub
Private Sub Preview_Click()
    TempVars.Add "RekDeriv", "deriv1"
    BukaForm ("frmRekDerivatifDialog")
End Sub
Form frmReKDerivatif2:
Private Sub Form_Open(Cancel As Integer)
    Me.Caption = "Daftar Kode Rekening - Rekening Derivatif 2 " & Nz(IdPerusahaan("Nama"), "")
    If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
End Sub
Private Sub Preview_Click()
    TempVars.Add "RekDeriv", "deriv2"
    BukaForm ("frmRekDerivatifDialog")
End Sub

TempVars.Add "RekDeriv", "deriv1" adalah metode VBA yang digunakan untuk membuat variabel sementara dengan nama RekDeriv, deriv1 adalah nilai dari RekDeriv. BukaForm ("frmRekDerivatifDialog") adalah fungsi dalam modul mdlGlobal dan dalam hal ini digunakan untuk membuka form frmRekDerivatifDialog.

Tahap 2. Sebelum form dibuka, kita harus membuat terlebih dahulu form dialog dengan nama frmRekDerivatifDialog berikut procedure yang ada di dalamnya. Cara singkatnya seperti ini:
  1. Kopilah frmRekUtamaDialog yang ada di Navigation pane menjadi frmRekDerivatifDialog. Lalu, bukalah Design view frmRekDerivatifDialog.
  2. Hapus combo box Grup yang ada dalam frmRekDerivatifDialog.
  3. Pada combo box DariKodeRek, isikanlah properti Row Source = SELECT KodeDeriv1, NamaDeriv1 FROM tblRekDerivatif1;
  4. Pada combo box sdKodeRek, isikanlah properti Row Source = SELECT KodeDeriv1, NamaDeriv1 FROM tblRekDerivatif1 WHERE KodeDeriv1>= [Forms]![frmRekDerivatifDialog]![DariKodeRek] ORDER BY KodeDeriv1;
  5. Isikanlah prosedur berikut ini ke Form_frmRekDerivatifDialog:
    Option Compare Database
    Private Sub Command1_Click()
      If Me.FrameModeTampilan = 2 Then
        If IsNull(Me.DariKodeRek) Or IsNull(Me.sdKodeRek) Then
            MsgBox "Kode rekening tidak boleh ada yang kosong", vbExclamation, "Kode Rekening Kosong"
            Exit Sub
        End If
        If Me.DariKodeRek > Me.sdKodeRek Then
            MsgBox "Kolom sampai Kode Rekening tidak boleh lebih kecil dari pada kolom Dari Kode Rekening", vbExclamation, "Kode Rekening Kosong"
            Exit Sub
        End If
      End If
        PreviewUnRefresh ("rptRekDerivatif")
    End Sub
    Private Sub DariKodeRek_AfterUpdate()
      Me.sdKodeRek.Requery
    End Sub
    Private Sub Form_Open(Cancel As Integer)
      Dim strCaption As String
      strCaption = "1 "
      If [TempVars]![RekDeriv] = "deriv2" Then
          strCaption = "2 "
          Me.DariKodeRek.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2;"
          Me.sdKodeRek.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2 WHERE KodeDeriv2>=[Forms]![frmRekDerivatifDialog]![DariKodeRek] ORDER BY KodeDeriv2;"
      End If
      Me.Caption = "Preview Report Daftar Kode Rekening - Rekening Derivatif " & strCaption & Nz(IdPerusahaan("Nama"), "")
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
      TempVars.Remove ("RekDeriv")
    End Sub
    Private Sub FrameModeTampilan_AfterUpdate()
      If Me.FrameModeTampilan = 2 Then
        Me.DariKodeRek.Enabled = True
        Me.sdKodeRek.Enabled = True
        Me.Form.Requery
      Else
        Me.DariKodeRek.Enabled = False
        Me.sdKodeRek.Enabled = False
      End If
    End Sub
  6. Simpan form dan prosedur yang ada. Tampilan Form view dari frmRekDerivatifDialog:
Gambar 3

Tahap 3. Membuat rptRekDerivatif. Cara mudahnya seperti ini:
  1. Kopilah rptRekUtama yang ada di Navigation pane menjadi rptRekDerivatif. Lalu, bukalah Design view rptRekDerivatif.
  2. Gantilah judul label Auto_Title0 Daftar Kode Rekening – Rekening Utama menjadi Daftar Kode Rekening – Rekening Derivatif 1.
  3. Pada properti report Record Source, isikanlah query: SELECT KodeDeriv1, NamaDeriv1, Catatan FROM tblRekDerivatif1 WHERE KodeDeriv1 Between [Forms]![frmRekDerivatifDialog]![DariKodeRek] And [Forms]![frmRek DerivatifDialog]![sdKodeRek];
  4. Hapuslah label Nama Grup pada Page header dan combo box Grup pada detail.
  5. Pada bagian text box DariKodeRek isikan Control Source = =[Forms]![frmRekDerivatifDialog]![DariKodeRek] & " - " & [Forms]! [frmRekDerivatifDialog]![DariNamaRek]
  6. Pada bagian text box sdKodeRek isikan Control Source = =[Forms]![frmRek DerivatifDialog]![sdKodeRek] & " - " & [Forms]![frmRekDerivatifDialog]! [sdNamaRek]
  7. Pada bagian Page header, di sebelah kanan label Nama Rekening sisipkan label Catatan.
  8. Pada bagian detail, sisipkan text box dengan Name = Catatan dan Control Source = Catatan.
  9. Isikanlah prosedur berikut ini ke Report_rptRekDerivatif:
    Option Compare Database
    Private Sub Report_Open(Cancel As Integer)
      Dim strCaption As String
      strCaption = "Rekening Derivatif 1"
      If [TempVars]![RekDeriv] = "deriv2" Then
        strCaption = "Rekening Derivatif 2"
        Me.RecordSource = "SELECT KodeDeriv2, NamaDeriv2, Catatan FROM tblRekDerivatif2 WHERE KodeDeriv2 Between [Forms]![frmRekDerivatifDialog]![DariKodeRek] And [Forms]![frmRekDerivatifDialog]![sdKodeRek];"
        Me.Rek_Kode.ControlSource = "KodeDeriv2"
        Me.Rek_Nama.ControlSource = "NamaDeriv2"
      End If
      Me.Auto_Title0.Caption = "Daftar Kode Rekening – " & strCaption
      If Form_frmRekDerivatifDialog.FrameModeTampilan = 1 Then
        Me.lblOpsi.Caption = Form_frmRekDerivatifDialog. lblTampilkanSemua.Caption
        If [TempVars]![RekDeriv] = "deriv2" Then
            Me.RecordSource = "SELECT KodeDeriv2, NamaDeriv2, Catatan FROM tblRekDerivatif2;"
        Else
            Me.RecordSource = "SELECT KodeDeriv1, NamaDeriv1, Catatan FROM tblRekDerivatif1;"
        End If
      Else
        Me.lblOpsi.Caption = Form_frmRekDerivatifDialog. lblTampilkanBerdasarkanRange.
    Caption
        Me.DariKodeRek.Visible = True
        Me.sdKodeRek.Visible = True
      End If
      DoCmd.Maximize
    End Sub
  10. Simpan report dan prosedur yang ada. Tampilan Print preview dari rptRekDerivatif, berdasarkan form yang ada pada Gambar 3 di atas akan tampak seperti Gambar 4 (bawah).
Gambar 4

Bila form frmRekDerivatif2 dibuka dan tombol perintah Preview ditekan akan muncul form dialog Preview Report:
Gambar 5

Tampilan reportnya adalah sebagai berikut:
Gambar 6

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access