Home > Active Report, Visual Basic > Tutorial Active Report bagian 3 – Sub Report

Tutorial Active Report bagian 3 – Sub Report

September 5, 2011

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🙂

  1. September 14, 2011 at 11:20 am

    perbedaan dengan pembahasan sblmnya apa nih..? tampilannya sama dengan yang grouping..?

  2. glenk
    October 19, 2011 at 6:17 am

    Om, konsep push reportnya CR bisa dimplementasikan ke Active report kagak, piye carane?

    • October 20, 2011 at 6:28 am

      Push report di CR sy belum tau nih om, emg cara kerjanya seperti apa ?

  3. Hanif
    October 21, 2011 at 12:55 am

    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

    • October 24, 2011 at 1:37 pm

      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 Sub
      

      3. Kemudian di form tinggal panggil seperti berikut :

      Private Sub Command1_Click()
          Dim rpt As New ActiveReport1
          
          rpt.counter = 10
          rpt.Show
      End Sub
      

      Mudah2xan dapat pencerahan😀

  4. Maul
    November 9, 2011 at 1:38 am

    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…

    • November 9, 2011 at 6:43 am

      Klo CR sy belum bisa bantu om

  5. KaryOnO
    November 23, 2011 at 3:29 am

    UuMm,,,,, KaLo mO Setting Active Report Bentuk Landscape GmN YaAhh,

    • November 23, 2011 at 8:32 am

      Di active report designer klik menu File -> Page Setup, trus aktifkan pilihan Printer Settings
      nah disitu ada pengaturan Portrait atau Landscape

      • KaryOnO
        November 24, 2011 at 12:25 am

        EmMm…. Um, posting project Vb + Active Report + Sql server dong, disuruh dosen nieh tapi lum dapet referensinya.
        Thank’s…………

        • November 24, 2011 at 12:49 am

          Bedanya tuh cuma di string koneksi aja, disamakan dg string koneksi waktu koneksi ke database

  6. January 15, 2012 at 5:25 pm

    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.

    • January 24, 2012 at 10:59 am

      Klo datareport sudah lama enggak make om, cuma seingat sy pada saat manggil datareportnya lokasi databasenya diset ulang

  7. January 21, 2012 at 9:17 pm

    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…

    • January 24, 2012 at 11:01 am

      Klo untuk cetak nota biasanya menggunakan grouping, mungkin om bisa coba postingan sy yg disini.

  8. ahmad7802
    March 17, 2012 at 9:17 pm

    Om klo mau nampil photo ato gambar dgn ActiveReport gimana ? , dengan database MySql ..thanks

    • March 18, 2012 at 9:39 am

      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 Function
      

      Kemudian 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 Sub
      

      Kode diatas membutuhkan referensi Microsoft ActiveX Data Objects 2.5 Library

      Selamat mencoba🙂

  9. ahmad7802
    March 18, 2012 at 9:52 pm

    Thanks om , mau di coba dan di sampeka hasil nya nanti…*laporan*

    • March 19, 2012 at 10:14 am

      Oke om sippp🙂

  10. ahmad7802
    March 19, 2012 at 6:43 pm

    Laporan om misi sudah terlaksana dan terima kasih bantuan nya

    • March 22, 2012 at 10:42 am

      Oke sama-sama om🙂

  11. ahmad7802
    March 20, 2012 at 9:48 pm

    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

    • March 22, 2012 at 11:05 am

      Kan query biasa om, tinggal kondisi di WHERE untuk nomor suratnya ambil nilainya berdasarkan data yg di listview

  12. ahmad7802
    March 22, 2012 at 6:52 pm

    Iya om dah clear ternyata ado ga di masukin … btw thanks info nya

    • March 23, 2012 at 5:47 am

      Oke om sipppp🙂

  13. ahmad7802
    March 28, 2012 at 6:56 am

    Om datang dan bertanya lg nih , klo mau tampilin report dengan Activer Report Viewer gimana ?

    • March 28, 2012 at 1:50 pm

      Sudah ada contoh penggunaanya om, di folder “C:\Program Files\Data Dynamics\ActiveReports Pro\Samples\Visual Basic Samples\CategorySelection”

  14. Ahmad
    April 10, 2012 at 8:51 am

    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.

    • April 10, 2012 at 10:50 am

      Waalaikumussalam
      Diatas kayaxnya udah ada yg nanya om (komentar #16 – #17) bagaimana cara nampilkan gambar di Active Report coba dipelari dulu

  15. Ahmad
    April 14, 2012 at 10:33 am

    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.

    • April 14, 2012 at 11:26 am

      Fotonya disimpan di database atw enggak ?

  16. Ahmad
    April 26, 2012 at 2:25 pm

    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 …

    • April 27, 2012 at 9:51 am

      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 Sub
      

      Untuk 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
      
  17. July 15, 2012 at 1:03 am

    tutorialnya ane tinggu lagi om
    ttg activeReport nya

    • July 15, 2012 at 2:02 pm

      Iya om, bantuin doa nih biar dapat ide lagi😀

  18. August 27, 2012 at 10:15 am

    properti (EOF) atau (BOF) gk ad di active report..

  19. maddais
    September 25, 2012 at 3:34 pm

    mas mau tanya bgmn buat tulisan rata kiri rata kanan pada AR

  20. Hendra
    September 27, 2012 at 9:58 am

    Om mo tanya neh..saya pakai windows 7, trus programnya pk vb6, di reportnya pake crystal report 8 dan database nya dengan acces 95, tetapi ketika mo koneksi ke databasenya selalu diminta password, padahal database nya tidak di password, trima kasih sblumnya utk bantuannya.

  21. widjo
    November 19, 2012 at 8:23 am

    Ada yang punya active report yang bukan versi evaluationnya, kalau ada share dong. Thanks.

  22. Felark
    January 12, 2013 at 8:38 pm

    Thank you for the beneficial information.
    Can I get the examples, please? for threads (AR1 + AR2 + AR3) 4shared is not working!!

    • January 14, 2013 at 9:20 am

      Oke, try this.

  23. arif
    January 17, 2013 at 5:34 pm

    mhn bantuaanny bagaimana active report dengan mysql dan vbmysqldicet mhn pencerahannya saya mencoba report detailnya cuman keluar 1 data saja tidak bisa keluar semua kalau ada source codenya mhn dibantu makasih

    • January 19, 2013 at 10:08 am

      Untuk menampilkan report di AR tidak ada hubungannya dengan library vbmysqldirect, jadi om bisa mulai dari sini dulu.

  24. February 17, 2013 at 10:54 pm

    om mohon bantuanya lagi, coding untuk AR 6 di VB.net gimana yah, saya udah baca di referensi AR nya masih bingung, mohn bantuanya

    • February 19, 2013 at 9:02 am

      Coba kesini om.

  25. February 20, 2013 at 2:33 pm

    om kalau yang bagian ini

    Coding untuk VB.Net nya gimana yah.., saya sdh coba gunakan DevFusion, tapi error.

    • February 20, 2013 at 4:01 pm

      Coba gini om :

      Private Sub SetAutoHeight(ByVal detail As Object, ByVal control As Object)
          DirectCast(control, ARControl).Height = DirectCast(detail, detail).Height
      End Sub
      
      Private Sub Detail1_BeforePrint(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail1.BeforePrint
          SetAutoHeight(sender, txtNo)
          SetAutoHeight(sender, txtISBN)
          SetAutoHeight(sender, txtJudul)
          SetAutoHeight(sender, txtPenerbit)
      End Sub
      
      Private Sub Detail1_Format(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Detail1.Format
          txtNo.Text = Convert.ToString(Integer.Parse(txtNo.Text) + 1)
          txtISBN.Text = Me.Fields("isbn").Value.ToString()
          txtJudul.Text = Me.Fields("judul").Value.ToString()
          txtPenerbit.Text = Me.Fields("penerbit").Value.ToString()
      End Sub
      
  26. Santoso
    May 22, 2013 at 4:47 pm

    om, sy mau buat report dari tabel status. kira2 bentuknya seperti berikut:

    |—–+——–+———|
    nama| nilai | status |
    |——+——–+
    joni | 1 | A |
    joni | 5 | A |
    joni | 7 | B |
    joni | 1 | B |
    budi | 5 | A |
    budi | 5 | A |
    budi | 4 | B |
    budi | 4 | B |
    |—+—–+——–+

    gmn cara buat querynya agar hasilnya di report bs seperti dibawah ini?

    nama | Status A | Status B
    ————+———–+———–
    joni 6 8
    budi 10 8

    makasih sebelumnya…😀

  27. achmad
    June 20, 2013 at 2:22 am

    kalua, listview yang tidak tersimpan di database, bisa ga di tampilin di report gan,….????
    bantu ane yaaa gan,…!!!!😀😀

    • June 24, 2013 at 1:48 pm

      Ya bisa aja, disini kan udah saya bahas.

  28. zalfa
    July 15, 2013 at 10:56 pm

    om bedax crystal report sama active report pa ya?

    • July 17, 2013 at 1:51 pm

      Salah satunya beda vendor om😀, klo di list disini kebanyakan.
      Sy sendiri lebih senang menggunakan ActiveReport, karna ActiveReport punya event2x yang bisa langsung dicoding, walaupun crystal report juga punya formula editor utk mengcover masalah ini tetapi tetap aja lebih fleksible ActiveReport.
      CMIIW🙂

  29. zalfa
    July 17, 2013 at 10:20 pm

    oyi,trims om😀

  30. alibaba
    December 17, 2013 at 10:01 am

    Om Admin kalau ada error seperti ini kenapa ya ..Error 2018 : Page margins are too large. Can’t run report

    • December 23, 2013 at 1:44 pm

      Ya coba margin reportnya dikecilin lagi😀

  31. January 19, 2014 at 8:27 am

    om..gmna ya caranya menampilkan 2 jenis tabel dlam 1 AR, Mis
    Tabel 1 berisi Colom = Nama , Jenis , Qty , Sub Total
    Tabel 2 Berisi Colom = Jenis , Total

    mohon bantuannya

    • January 20, 2014 at 9:40 am

      Ya menggunakan sub report om, seperti contoh saya diatas :

  32. February 11, 2014 at 8:53 pm

    om Ane Dah Coba cara di atas tp msh ada mslah nih bang..headernya kolom ane ga muncul di halaman berikutnya..ane mau buat 2 tabel..tp tabelnya bersusun..klo ane letakkan kedua header tabel pada page header..maka di setiap halaman akan muncul kedua header tersebut..walaupun salah satu tabel datanya udah kosong..maksud ane gmn caranya agar jika salah satu tabel udah kosong ..maka header tabel yang kosong ntu ga muncul lg di halaman berikutnya jika tabel satunya lagi masih berlanjut ke halaman lain..

  33. April 25, 2014 at 10:44 pm

    om..numpang tanya nih..
    ane buat tabel di Active Reprt..tp ketika tabelnya nyampe pada halaman kedua..kok garis tabel yng paling atas di halaman kedua tu ilang??..uda ane setting sedemikian hingga.. tp tetap aja gtu..klo bukan garis dari tabel paling atas di halaman kedua yang ilang pasti garis paling bawah dari tabel halaman pertama yg ilang… seolah2 tabelnya terpotong ketika memasuki halaman kedua..mohon pencerahaannya om..

    • April 26, 2014 at 9:16 am

      Ngasih garisnya disection detail om

  34. April 26, 2014 at 3:49 pm

    maksudnya gmna gan?kan tabelnya ada pada detai section…

  35. April 26, 2014 at 3:53 pm

    hal ini terjadi jg pada sample Project AR3 yang Om Punya..coba deh liat hal 1 paling bawah dan 2 paling atas..gmna ya cara memperbaikinya?

  1. April 16, 2014 at 9:14 am
Comments are closed.
%d bloggers like this: