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:
  1. Private Sub Form_Open(Cancel As Integer)  
  2.     Me.Caption = "Daftar Kode Rekening - Rekening Derivatif 1 " & Nz(IdPerusahaan("Nama"), "")  
  3.     If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
  4. End Sub  
  5. Private Sub Preview_Click()  
  6.     TempVars.Add "RekDeriv""deriv1"  
  7.     BukaForm ("frmRekDerivatifDialog")  
  8. End Sub  
Form frmReKDerivatif2:
  1. Private Sub Form_Open(Cancel As Integer)  
  2.     Me.Caption = "Daftar Kode Rekening - Rekening Derivatif 2 " & Nz(IdPerusahaan("Nama"), "")  
  3.     If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
  4. End Sub  
  5. Private Sub Preview_Click()  
  6.     TempVars.Add "RekDeriv""deriv2"  
  7.     BukaForm ("frmRekDerivatifDialog")  
  8. 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:
    1. Option Compare Database  
    2. Private Sub Command1_Click()  
    3.   If Me.FrameModeTampilan = 2 Then  
    4.     If IsNull(Me.DariKodeRek) Or IsNull(Me.sdKodeRek) Then  
    5.         MsgBox "Kode rekening tidak boleh ada yang kosong", vbExclamation, "Kode Rekening Kosong"  
    6.         Exit Sub  
    7.     End If  
    8.     If Me.DariKodeRek > Me.sdKodeRek Then  
    9.         MsgBox "Kolom sampai Kode Rekening tidak boleh lebih kecil dari pada kolom Dari Kode Rekening", vbExclamation, "Kode Rekening Kosong"  
    10.         Exit Sub  
    11.     End If  
    12.   End If  
    13.     PreviewUnRefresh ("rptRekDerivatif")  
    14. End Sub  
    15. Private Sub DariKodeRek_AfterUpdate()  
    16.   Me.sdKodeRek.Requery  
    17. End Sub  
    18. Private Sub Form_Open(Cancel As Integer)  
    19.   Dim strCaption As String  
    20.   strCaption = "1 "  
    21.   If [TempVars]![RekDeriv] = "deriv2" Then  
    22.       strCaption = "2 "  
    23.       Me.DariKodeRek.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2;"  
    24.       Me.sdKodeRek.RowSource = "SELECT KodeDeriv2, NamaDeriv2 FROM tblRekDerivatif2 WHERE KodeDeriv2>=[Forms]![frmRekDerivatifDialog]![DariKodeRek] ORDER BY KodeDeriv2;"  
    25.   End If  
    26.   Me.Caption = "Preview Report Daftar Kode Rekening - Rekening Derivatif " & strCaption & Nz(IdPerusahaan("Nama"), "")  
    27. End Sub  
    28. Private Sub Form_Unload(Cancel As Integer)  
    29.   TempVars.Remove ("RekDeriv")  
    30. End Sub  
    31. Private Sub FrameModeTampilan_AfterUpdate()  
    32.   If Me.FrameModeTampilan = 2 Then  
    33.     Me.DariKodeRek.Enabled = True  
    34.     Me.sdKodeRek.Enabled = True  
    35.     Me.Form.Requery  
    36.   Else  
    37.     Me.DariKodeRek.Enabled = False  
    38.     Me.sdKodeRek.Enabled = False  
    39.   End If  
    40. 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:
    1. Option Compare Database  
    2. Private Sub Report_Open(Cancel As Integer)  
    3.   Dim strCaption As String  
    4.   strCaption = "Rekening Derivatif 1"  
    5.   If [TempVars]![RekDeriv] = "deriv2" Then  
    6.     strCaption = "Rekening Derivatif 2"  
    7.     Me.RecordSource = "SELECT KodeDeriv2, NamaDeriv2, Catatan FROM tblRekDerivatif2 WHERE KodeDeriv2 Between [Forms]![frmRekDerivatifDialog]![DariKodeRek] And [Forms]![frmRekDerivatifDialog]![sdKodeRek];"  
    8.     Me.Rek_Kode.ControlSource = "KodeDeriv2"  
    9.     Me.Rek_Nama.ControlSource = "NamaDeriv2"  
    10.   End If  
    11.   Me.Auto_Title0.Caption = "Daftar Kode Rekening â€“ " & strCaption  
    12.   If Form_frmRekDerivatifDialog.FrameModeTampilan = 1 Then  
    13.     Me.lblOpsi.Caption = Form_frmRekDerivatifDialog. lblTampilkanSemua.Caption  
    14.     If [TempVars]![RekDeriv] = "deriv2" Then  
    15.         Me.RecordSource = "SELECT KodeDeriv2, NamaDeriv2, Catatan FROM tblRekDerivatif2;"  
    16.     Else  
    17.         Me.RecordSource = "SELECT KodeDeriv1, NamaDeriv1, Catatan FROM tblRekDerivatif1;"  
    18.     End If  
    19.   Else  
    20.     Me.lblOpsi.Caption = Form_frmRekDerivatifDialog. lblTampilkanBerdasarkanRange.  
    21. Caption  
    22.     Me.DariKodeRek.Visible = True  
    23.     Me.sdKodeRek.Visible = True  
    24.   End If  
    25.   DoCmd.Maximize  
    26. 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

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Memahami Properti Validation Rule dan Validation Text pada Tabel di Access

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