Walaupun sedikit telat janji akan tetap saya penuhi untuk membahas ulang kasus pada postingan sebelumnya menggunakan sub report.
Untuk refreshing dibawah ini merupakan format laporan yang akan kita buat menggunakan sub report.
Langsung saja kita aktifkan project postingan sebelumnya
kemudian klik kanan node Designers -> Add -> Data Dynamics ActiveReports 2.0
setelah itu akan bertambah 1 sub node baru dengan nama ActiveReport1 kemudian ganti properties Name dan Captionnya sesuai gambar berikut :
langkah selanjutnya kita akan menambahkan section baru yaitu section Group Header/Footer dengan cara mengklik kanan salah satu section yang sudah ada
jika berhasil akan ditambahkan 2 section baru yaitu section group header dan footer
kemudian ganti properties namenya menjadi grpKelasID
field kelas_id mengacu pada query berikut
1
2
SELECT kelas.id AS kelas_id, kelas.keterangan AS kelas
FROM kelas INNER JOIN kelas_siswa ON kelas.id = kelas_siswa.kelas_id
kemudian desain laporan sesuai gambar berikut :
bagaimana cara mendesainnya sudah saya bahas tuntas disini.
karena kita disini menggunakan sub report berarti kita harus menambahkan 1 report baru yang akan kita panggil melalui objek sub report.
Tambahkan report baru dengan cara mengklik kanan node Designers -> Add -> Data Dynamics ActiveReports 2.0
kemudian ganti properties Name sesuai gambar berikut :
setelah itu hapus section PageHeader dengan cara mengklik kanan section PageHeader -> Delete Section
kemudian lengkapi desainnya seperti berikut :
sampai disini kita akan mulai menghubungkan report utama dengan sub reportnya dengan cara mengaktifkan report arLapSiswaPerkelas2 kemudian klik ganda section Group Header
kemudian lengkapi kodenya seperti berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub grpKelasID_Format()
Dim strSql As String
With adoSiswaPerKelas.Recordset
If Not .EOF Then
txtKelas.Text = .Fields("kelas").Value
strSql = "SELECT siswa.nomor_induk, siswa.nama " &
"FROM siswa INNER JOIN kelas_siswa ON siswa.nomor_induk = kelas_siswa.nomor_induk " &
"WHERE kelas_siswa.kelas_id = " & grpKelasID.GroupValue & ""
' memanggil sub report
Set SubReport1.object = New arSubReportSiswaPerKelas
With SubReport1.object.adoSiswaPerKelas
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sampleDb.mdb"
.Source = strSql
End With
End If
End With
End Sub
setelah itu aktifkan juga report arSubReportSiswaPerKelas kemudian tambahkan kode berikut pada event Detail_Format
1
2
3
4
5
6
7
8
9
10
Private Sub Detail_Format()
With adoSiswaPerKelas.Recordset
If Not .EOF Then
txtNo.Text = Val(txtNo.Text) + 1
txtNoInduk.Text = .Fields("nomor_induk").Value
txtNama.Text = .Fields("nama").Value
End If
End With
End Sub
Terakhir kita akan memanggil report utama dari form vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub cmdPreviewSiswaPerKelas2_Click()
Dim strSql As String
strSql = "SELECT kelas.id AS kelas_id, kelas.keterangan AS kelas " & _
"FROM kelas INNER JOIN kelas_siswa ON kelas.id = kelas_siswa.kelas_id"
With arLapSiswaPerkelas2
.adoSiswaPerKelas.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sampleDb.mdb"
.adoSiswaPerKelas.Source = strSql
.lblHeader1.Caption = "SEKOLAH MENGENGAH …"
.lblHeader2.Caption = "Laporan Data Siswa Per Kelas"
.Show
End With
End Sub
Yuph selesai sudah :)
Sampai disini modal kita sudah cukup untuk membuat report yang lebih kompleks, insya Allah akan kita bahas di seri terakhir dari tutorial Active Report ini.
Selamat MENCOBA :)