active report 1 2 3

35
Active Report adalah salah satu tool yang digunakan untuk pembuatan report di visual basic, mulai dari report yang sederhana sampai yang komplek, berikut contoh beberapa report yang bisa dibuat menggunakan active report. Selain itu active report juga sudah terintegrasi dengan IDE visual basic sehingga pembuatan report pun menjadi lebih menyenangkan, lalu bagaimana cara meload datanya ? Caranya gampang cukup menggunakan query biasa seperti query-query yang digunakan dalam pembuatan aplikasi. Untuk contoh pada tutorial pertama ini kita akan menampilkan data siswa dengan struktur tabel seperti berikut : 1. Mendesain report Mendesain report di Active Report sama mudahnya seperti mendesain tampilan di form, tinggal drag komponennya kemudian ganti nilai properties masing-masing komponennya sesuai kebutuhan. Oke langsung saja aktifkan project vb Anda kemudian klik kanan di nama project -> Add -> Data Dynamics ActiveReport 2.0

Upload: ardy-prologic

Post on 11-Aug-2015

363 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Active Report 1 2 3

Active Report adalah salah satu tool yang digunakan untuk pembuatan report di visual basic, mulai dari report yang sederhana sampai yang komplek, berikut contoh beberapa report yang bisa dibuat menggunakan active report.

Selain itu active report juga sudah terintegrasi dengan IDE visual basic sehingga pembuatan report pun menjadi lebih menyenangkan, lalu bagaimana cara meload datanya ? Caranya gampang cukup menggunakan query biasa seperti query-query yang digunakan dalam pembuatan aplikasi.

Untuk contoh pada tutorial pertama ini kita akan menampilkan data siswa dengan struktur tabel seperti berikut :

1. Mendesain reportMendesain report di Active Report sama mudahnya seperti mendesain tampilan di form, tinggal drag komponennya kemudian ganti nilai properties masing-masing komponennya sesuai kebutuhan.

Oke langsung saja aktifkan project vb Anda kemudian klik kanan di nama project -> Add -> Data Dynamics ActiveReport 2.0

Page 2: Active Report 1 2 3

jika berhasil pada panel project explorer akan ketambahan node baru dengan nama Designers

kita akan mengganti nilai dari properties Name dan Caption seseusai setting berikut :

Nama = arLapSiswaCaption = Laporan Data Siswa

untuk properties yang lain bisa Anda ganti nilainya sesuai kebutuhan.

Berikutnya kita akan menambahkan judul report, objek yang akan digunakan adalah objek label

Page 3: Active Report 1 2 3

nilai caption dari labelnya kita abaikan saja, karena akan kita ganti pada saat runtime (program dijalankan).

Setelah selesai menambahkan judul reportnya, kita akan menambahkan judul kolom, objek yang digunakan masih sama yaitu label

selanjutnya kita akan menambahkan border untuk judul kolom nya, caranya adalah dengan menyeleksi label “No.” sampai “Tanggal Lahir”, kemudian klik kanan pada salah satu label yang diseleksi pilih Format Border

pilih jenis border pada pilihan Line Styles, kemudian pada bagian Preview border yang diaktifkan hanya bagian “Atas”, “Kiri” dan “Bawah”

Page 4: Active Report 1 2 3

selanjutkan kita akan menambahkan border untuk label ayah

Gimana? jadi terlihatkan perbedaannya kenapa dipisah pembuatan border label “Ayah” dengan label lainnya.

Hasil akhir penambahan border judul kolom

Berikutnya kita akan menambahkan objek TextBox yang akan digunakan untuk menampilkan data

Khusus untuk textbox “No.” (tag merah) properties Textnya diset = 0, untuk textBox lainnya diabaikan saja dan kemudian untuk menambahkan border langkah-langkahnya sama seperti sebelumnya, hanya saja border bagian “Atas” tidak aktifkan

Page 5: Active Report 1 2 3

kemudian untuk setting border textbox ayah

ada satu komponen lagi yang akan kita tambahkan yaitu komponen ADO Data Control dan saya rasa tidak perlu lagi dijelaskan apa kegunaan komponen ini.

Berikut adalah hasil akhir desain report siswanya.

2. Kode untuk reportActive Report sama seperti form dan komponen lainnya mempunyai event-event yang bisa kita isikan kode program sesuai kebutuhan, biasanya nama event tersebut diawali oleh nama sectionya, contoh :

Page 6: Active Report 1 2 3

pada contoh diatas section “Detail” mempunyai beberapa event yaitu AfterPrint, BeforePrint, Format.

Disini saya hanya akan mencontohkan penggunaan event Format dan BeforePrint.

Private Sub Detail_Format()

With adoSiswa.Recordset

If Not .EOF Then

txtNo.Text = Val(txtNo.Text) + 1

txtNIS.Text = .Fields("nomorinduk").Value

txtNama.Text = .Fields("nama").Value

txtTempatLahir.Text = "" & .Fields("tempat_lahir").Value ' untuk menghandle nilai null

If IsDate(.Fields("tgl_lahir").Value) Then

txtTglLahir.Text = Format(.Fields("tgl_lahir").Value, "dd/MM/yyyy")

Else

txtTglLahir.Text = ""

End If

txtAyah.Text = "" & .Fields("ayah").Value ' untuk menghandle nilai null

End If

End With

End Sub

Page 7: Active Report 1 2 3

Sampai disini report sudah siap digunakan/dipanggil via aplikasi

3. Memanggil report dari aplikasiBalik ke form visual basic kemudian buat desain form seperti gambar berikut :

kemudian untuk menampilkan reportnya ketik kode berikut :

Private Sub cmdPreview_Click()

Dim strCon As String

Dim strSql As String

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sampleDb.mdb"

strSql = "SELECT * FROM siswa"

With arLapSiswa

.adoSiswa.ConnectionString = strCon

.adoSiswa.Source = strSql

.lblHeader1.Caption = "SEKOLAH MENGENGAH ..."

.lblHeader2.Caption = "Laporan Data Siswa"

.Show

End With

End Sub

Page 8: Active Report 1 2 3

Gimana ? Simple kan 

jalankan program kemudian klik tombol “Tampilkan Report”, akan ditampilkan hasil preview data siswanya.

waduhh, ternyata setelah pindah ke halaman 2 ada data siswa yang nampil tidak sesuai harapan, lihat gambar berikut :

Setelah diusut ternyata penyebabnya adalah nilai dari tempat lahirnya terlalu panjang sehingga tampilan report jadi berantakan, nah bagaimana cara menyelesaikan masalah ini ? Disinilah peran penting dari event Detail_BeforePrint.

Oke kita kembali lagi ke desain report siswanya kemudian tambahkan kode berikut pada event Detail_BeforePrint :

Private Sub Detail_BeforePrint()

txtNo.Height = Detail.Height

txtNIS.Height = Detail.Height

txtNama.Height = Detail.Height

txtTempatLahir.Height = Detail.Height

txtTglLahir.Height = Detail.Height

txtAyah.Height = Detail.Height

End Sub

Page 9: Active Report 1 2 3

Klo sudah jalankan lagi programnya dan kita lihat hasil reportnya

Case closed   sampai ketemu lagi di seri tutorial active report berikutnya, insya Allah 

LANJUT 2 >>

Page 10: Active Report 1 2 3

Setelah cukup lama tertunda akhirnya tutorial kedua dari yang pertama ini rilis juga.Fokus pada tutorial kali ini adalah pembuatan format laporan yang sering digunakan yaitu grouping.

Contoh laporan yang akan kita buat adalah seperti berikut :

Masih menggunakan database yang sama pada tutorial pertama, kita akan tambahkan 2 buah tabel lagi yaitu kelas dan kelas_siswa

Sebelum membuat laporannya, kita liat dulu query yang digunakan untuk menampilkan data siswa berikutnya kelasnya

SELECT kelas.id AS kelas_id, kelas.keterangan AS kelas, siswa.nomor_induk, siswa.nama

FROM siswa INNER JOIN (kelas INNER JOIN kelas_siswa ON kelas.id = kelas_siswa.kelas_id) ON siswa.nomor_induk = kelas_siswa.nomor_induk

Page 11: Active Report 1 2 3

Oke sampai disini persiapan sudah cukup, saatnya kita membuka project pada tutorial pertama klik kanan di nama project -> Add -> Data Dynamics ActiveReport 2.0

jika berhasil akan ditambahkan sub node baru dengan nama ActiveReport1

kemudian ganti properties namenya menjadi arLapSiswaPerKelas dan caption menjadi Laporan Data Siswa Per Kelas

Page 12: Active Report 1 2 3

Selanjutnya kita akan menambahkan section Group dengan cara mengklik kanan salah satu section (PageHeader atau Detail) -> Insert -> Group Header/Footer

jika berhasil akan ditambahkan 2 section baru yaitu GroupHeader1 dan GroupFooter1

kemudian ganti properties namenya menjadi grpKelasID

Page 13: Active Report 1 2 3

field kelas_id mengacu pada query diatasuntuk format laporannya sesuai dengan contoh diatas

bagaimana cara mendesainnya sudah saya bahas tuntas disini.Setelah desain reportnya jadi, kita akan menambahkan beberapa baris kode di event Detail_Format

kemudian ketik kode berikut :

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

selanjutnya kita akan menambahkan kode di event Detail_BeforePrint

Page 14: Active Report 1 2 3

Private Sub Detail_BeforePrint()

txtNo.Height = Detail.Height

txtNoInduk.Height = Detail.Height

txtNama.Height = Detail.Height

End Sub

terakhir event grpKelasID_Format

Private Sub grpKelasID_Format()

With adoSiswaPerKelas.Recordset

If Not .EOF Then

txtKelas.Text = .Fields("kelas").Value

End If

End With

End Sub

kemudian aktifkan form yang sudah ada setelah itu tambahkan 1 buah tombol untuk menampilkan laporan siswa per kelas

adapun untuk kodenya seperti berikut :

Page 15: Active Report 1 2 3

Private Sub cmdPreviewSiswaPerKelas_Click()

Dim strCon As String

Dim strSql As String

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sampleDb.mdb"

strSql = "SELECT kelas.id AS kelas_id, kelas.keterangan AS kelas, siswa.nomor_induk, siswa.nama " & _

"FROM siswa INNER JOIN (kelas INNER JOIN kelas_siswa ON kelas.id = kelas_siswa.kelas_id) ON siswa.nomor_induk = kelas_siswa.nomor_induk"

With arLapSiswaPerkelas

.adoSiswaPerKelas.ConnectionString = strCon

.adoSiswaPerKelas.Source = strSql

.lblHeader1.Caption = "SEKOLAH MENGENGAH ..."

.lblHeader2.Caption = "Laporan Data Siswa Per Kelas"

.Show

End With

End Sub

Jalankan program kemudian klik tombol “Tampilkan Report Siswa Per Kelas”

Page 16: Active Report 1 2 3

Ada yang aneh pada laporan diatas, nomor urut untuk kelas VII B (UNGGULAN) harusnya dimulai dari 1 bukan 12 (melanjutkan nomor urut kelas sebelumnya).

Untuk menyelesaikan masalah ini kita harus kembali ke desain reportnya kemudian aktifkan event grpKelasID_Format setelah itu tambahkan kode berikut :

txtNo.text = "0"

untuk kode lengkapnya seperti berikut :

Private Sub grpKelasID_Format()

With adoSiswaPerKelas.Recordset

If Not .EOF Then

txtNo.Text = "0" ' reset nomor urut kelas

txtKelas.Text = .Fields("kelas").Value

End If

End With

End Sub

coba dijalankan lagi programnya kemudian klik tombol “Tampilkan Report Siswa Per Kelas”

Page 17: Active Report 1 2 3

Yuph nomor urut untuk kelas berikutnya sudah dimulai dari 1 

Untuk postingan kali ini rasanya cukup sampai disini, postingan berikutnya insya Allah kita masih akan membahas kasus yang sama (menampilkan daftar siswa per kelas) tetapi dengan memanfaatkan Sub Report.

LANJUT >>

Page 18: Active Report 1 2 3

Walaupun sedikit telat janji akan tetap saya penuhi untuk membahas ulang kasus padapostingan 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

Page 19: Active Report 1 2 3

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

Page 20: Active Report 1 2 3

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

Page 21: Active Report 1 2 3

kemudian ganti properties Name sesuai gambar berikut :

setelah itu hapus section PageHeader dengan cara mengklik kanan section PageHeader -> Delete Section

Page 22: Active Report 1 2 3

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 " & _

Page 23: Active Report 1 2 3

"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

Page 24: Active Report 1 2 3

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

Page 25: Active Report 1 2 3

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.

Page 26: Active Report 1 2 3

Tutorial Active Report bagian 4 – Membuat Report tanpa DatabaseOctober 31, 2011Admin Leave a comment Go to comments

Karena kesibukan ngajar (terutama nyiapin materi) di semester ini hampir saja membuat mata rantai postingan

saya terputus dibulan ini, jadi akhirnya disempat2xin juga nulisnya   .

Dan sekalian permohonan maaf buat om2x yg nanya responnya enggak bisa secepat dulu, maklum alasannya juga

sama “sok sibuk”   .

Oke, langsung saja beberapa waktu yang lalu ada yang nanya bagaimana menampilkan data yang ada di ListView ke ActiveReport.

Misal kita mempunyai data mahasiswa seperti berikut :

Sebelumnya kita akan membuat terlebih dulu sebuah class Mahasiswa untuk menampung data diatas kemudian tinggal kita lewatkan melalui variabel public yang kita tambahkan dibagian ActiveReportnya.

Berikut kode lengkap class Mahasiswa

Private m_Npm As String

Private m_nama As String

Private m_kota As String

Public Property Let Npm(ByVal vData As String)

m_Npm = vData

End Property

Public Property Get Npm() As String

Npm = m_Npm

End Property

Public Property Let Nama(ByVal vData As String)

Page 27: Active Report 1 2 3

m_nama = vData

End Property

Public Property Get Nama() As String

Nama = m_nama

End Property

Public Property Let Kota(ByVal vData As String)

m_kota = vData

End Property

Public Property Get Kota() As String

Kota = m_kota

End Property

Untuk ActiveReportnya buat desain seperti biasa

Setelah itu lengkapi juga kodenya

Public daftarMhs As Dictionary

Private Sub ActiveReport_FetchData(EOF As Boolean)

Static i As Integer

i = i + 1

Page 28: Active Report 1 2 3

If i > daftarMhs.Count Then

EOF = True

Exit Sub

Else

EOF = False

End If

Dim mhs As Mahasiswa

Set mhs = daftarMhs.Item(CStr(i))

txtNpm.Text = mhs.Npm

txtNama.Text = mhs.Nama

txtKota.Text = mhs.Kota

End Sub

Private Sub Detail_Format()

txtNo.Text = Val(txtNo.Text) + 1

End Sub

Pada kode diatas terlihat variabel daftarMhs bertipe Dictionary dengan access modifier public, jadi nilainya bisa kita set dari form.

Class Dictionary mirip seperti class Collection di C# atau java.

Terakhir kode untuk menampilkan ActiveReport plus mengeset nilai variabel daftarMhs yang diambil dari ListView.

Page 29: Active Report 1 2 3

Private Sub cmdPreview_Click()

Dim rpt As New ActiveReport1

Dim daftarMhs As New Dictionary

Dim mhs As Mahasiswa

Dim i As Integer

For i = 1 To lsvMahasiswa.ListItems.Count

Set mhs = New Mahasiswa

With mhs

.Npm = lsvMahasiswa.ListItems(i).SubItems(1)

.Nama = lsvMahasiswa.ListItems(i).SubItems(2)

.Kota = lsvMahasiswa.ListItems(i).SubItems(3)

End With

daftarMhs.Add CStr(i), mhs

Next i

With rpt

Set .daftarMhs = daftarMhs

.Show

End With

End Sub