Tutorial Active Report bagian 3 – Sub Report
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
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 :
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
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
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


















perbedaan dengan pembahasan sblmnya apa nih..? tampilannya sama dengan yang grouping..?
Om, konsep push reportnya CR bisa dimplementasikan ke Active report kagak, piye carane?
Push report di CR sy belum tau nih om, emg cara kerjanya seperti apa ?
Met pagi.
Mas, kalau ngeprint data pake active report yang ditampilkan di listview gimana ya, tanpa melewati database. jadi langsung mengambil dari list view
udah utak atik tapi belum nemu
makasih atas pencerahannya
Coba seperti ini om :
1. Di desain AR section Detail tambahkan 1 komponen Field kemudian set nilai properties DataField = counter
2. Dibagian editor code ketik kode berikut :
Public counter As Integer Private Sub ActiveReport_DataInitialize() Fields.Add "counter" End Sub Private Sub ActiveReport_FetchData(EOF As Boolean) Static i As Integer i = i + 1 If i > counter Then EOF = True Exit Sub Else EOF = False End If Fields("counter").Value = i End Sub3. Kemudian di form tinggal panggil seperti berikut :
Private Sub Command1_Click() Dim rpt As New ActiveReport1 rpt.counter = 10 rpt.Show End SubMudah2xan dapat pencerahan
Om, kalo saya mau menampilkan data, isi row recordnya-nya cuma 2, tetapi saya mau garisnya tetap mencetak 10 row, ada caranya ga? Kalo yang disajikan disini kan tabelnya mengikuti row recordnya. btw, saya menggunakan cr11…
Klo CR sy belum bisa bantu om
UuMm,,,,, KaLo mO Setting Active Report Bentuk Landscape GmN YaAhh,
Di active report designer klik menu File -> Page Setup, trus aktifkan pilihan Printer Settings
nah disitu ada pengaturan Portrait atau Landscape
EmMm…. Um, posting project Vb + Active Report + Sql server dong, disuruh dosen nieh tapi lum dapet referensinya.
Thank’s…………
Bedanya tuh cuma di string koneksi aja, disamakan dg string koneksi waktu koneksi ke database
om admin mohon bantuanya, saya membuat instalasi vb mysql dengan inno setup, dan sya menggunakan datareport. setelah selesai lalu sya instal, knapa selalu ada pesan DataSource not found padahal sebelum dijadikan instaler normal dan bisa jalan.?. mohon pencerahanya.
Klo datareport sudah lama enggak make om, cuma seingat sy pada saat manggil datareportnya lokasi databasenya diset ulang
mas admin klu mau print semua transaksi gimana cara nya,,,
saya mau bikin aplikasi yg pembayaran ,, dimana pembayaran nya di tagih ke rumah rumah,,,
jadi kita bikin kwitansi nya terlebih dahulu….
mohon pencerahannya…
Klo untuk cetak nota biasanya menggunakan grouping, mungkin om bisa coba postingan sy yg disini.
Om klo mau nampil photo ato gambar dgn ActiveReport gimana ? , dengan database MySql ..thanks
Karena pertanyaannya bagaimana menampilkan gambar jadi sy asumsikan om sudah berhasil menyimpan file gambar di database mysql.
Jadi kode berikut masih mengacu pada skrip diatas, misal di header laporan daftar siswa akan kita tambahkan objek Image untuk menampilkan logo sekolah.
Logo sekolah sudah tersimpan di tabel profil_sekolah dg nama field logo_sekolah dg tipe mediumblob.
Pertama tambahkan dulu fungsi berikut :
Private Function getImageFromDB(ByVal query As String, ByVal fieldName As String, ByVal tempFileImage As String) As IPictureDisp Dim rsImage As ADODB.Recordset Dim myStream As ADODB.Stream Set rsImage = New ADODB.Recordset Set myStream = New ADODB.Stream On Error GoTo errHandle myStream.Type = adTypeBinary rsImage.Open query, conn, adOpenStatic, adLockOptimistic If Not rsImage.EOF Then myStream.Open myStream.Write rsImage(fieldName).Value myStream.SaveToFile tempFileImage, adSaveCreateOverWrite myStream.Close Set getImageFromDB = LoadPicture(tempFileImage, , vbLPColor) Else Set getImageFromDB = Nothing End If rsImage.Close Set rsImage = Nothing Exit Function errHandle: Set getImageFromDB = Nothing End FunctionKemudian kita revisi kode untuk pemanggilan laporan daftar siswa diatas
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 = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=akademik;User=root;Password=rahasia;Option=3;" .adoSiswaPerKelas.Source = strSql .lblHeader1.Caption = "SEKOLAH MENGENGAH ..." .lblHeader2.Caption = "Laporan Data Siswa Per Kelas" ' tambahan kode untuk menampilkan logo sekolah yg diload dari database strSql = "SELECT * FROM profil_sekolah" .imgLogo.Picture = getImageFromDB(strSql, "logo_sekolah", App.Path & "\logo_sekolah.jgp") .Show End With End SubKode diatas membutuhkan referensi Microsoft ActiveX Data Objects 2.5 Library
Selamat mencoba
Thanks om , mau di coba dan di sampeka hasil nya nanti…*laporan*
Oke om sippp
Laporan om misi sudah terlaksana dan terima kasih bantuan nya
Oke sama-sama om
Misi Om , boleh nanya lg ? mungkin di luar tema ini, singkat nya aku ada tabel surat Fields(no_surat,tgl_surat,nama) yg aku tampilkan di listview .. dan ada button buat print .. maksud nya dengan clik no_surat semua nama-nama dengan no_surat yg sama bisa di tampil kan semua di ActiveReport
Kan query biasa om, tinggal kondisi di WHERE untuk nomor suratnya ambil nilainya berdasarkan data yg di listview
Iya om dah clear ternyata ado ga di masukin … btw thanks info nya
Oke om sipppp
Om datang dan bertanya lg nih , klo mau tampilin report dengan Activer Report Viewer gimana ?
Sudah ada contoh penggunaanya om, di folder “C:\Program Files\Data Dynamics\ActiveReports Pro\Samples\Visual Basic Samples\CategorySelection”
Assalamu’alaikum Mas, saya ada kendala dalam penggunaan active report.
Gimana ya cara tampilkan foto atau gambar di laporan dengan active report sesuai dengan fields yang diinginkan. Misalnya kode karyawan : 00001, maka akan tampil data karyawan tersebut beserta fotonya. Begitu juga jika kode karyawannya :0002 maka yang muncul data karyawan yg lain lagi. Demikian Mas, saya mohon sekali bantuannya, saya masih belajar pakai active report. Jika boleh ada sedikit tampilan dan coding juga tutorialnya. maklum Mas masih awam. trims ya Mas.
Waalaikumussalam
Diatas kayaxnya udah ada yg nanya om (komentar #16 – #17) bagaimana cara nampilkan gambar di Active Report coba dipelari dulu
Iya Mas sudah saya pelajari, tapi kendala saya yaitu : saya ingin ketika kode karyawan 00001, maka akan tampil foto karyawan tersebut di laporannya beserta data lainnya di active reportnya. Begitu juga ketika kode 00002 dan seterusnya. Jika yang mas maksud dikomentar #16 – #17 biasanya itu sudah baku seperti pada input data instansi/perusahaan maka logonya hanya sekali diambil tidak bisa berulang-ulang karena namanya filenya sudah baku dan tidak bisa dirubah. Bagaimana jika yang saya maksud Mas Admin, mohon pencerahannya. Trims sdh reply Mas.
Fotonya disimpan di database atw enggak ?
Iya Mas sdh disimpan didatabase, tapi hanya lokasinya saja yg disimpan. Jadi yang di panggil lokasi tempat penyimpanan fotonya aja sehingga fotonya pun ikut tampil. Saya pakai Ms. Access sebagai database dan VB 6 sebagai front. Trims ya Mas …
coba gini om, untuk memanggil ARnya tetap seperti biasa
Private Sub cmdPreviewSiswa_Click() Dim strCon As String Dim strSql As String strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sampleDb.mdb" strSql = "SELECT nomorinduk, nama, lokasi_foto FROM siswa" With arLapSiswa .adoSiswa.ConnectionString = strCon .adoSiswa.Source = strSql .lblHeader1.Caption = "SEKOLAH MENGENGAH ..." .lblHeader2.Caption = "Laporan Data Siswa Per Kelas" .Show End With End SubUntuk fotonya diload di event Detail_Formatnya AR
Private Sub Detail_Format() Dim foto As String With adoSiswa.Recordset If Not .EOF Then txtNo.Text = Val(txtNo.Text) + 1 txtNoInduk.Text = .Fields("nomor_induk").Value txtNama.Text = .Fields("nama").Value ' TODO : tambahkan validasi pengecekan file foto foto = .Fields("lokasi_foto").Value & "\" & txtNoInduk.Text & ".jpg" imgFoto.Picture = LoadPicture(foto) End If End With End Sub