Tutorial Active Report bagian 2 – Grouping
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
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
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
field kelas_id mengacu pada query diatas
untuk 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
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 :
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”
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”
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.
Selamat MENCOBA






















mantaf om…oiya om misal saya pake kertas yg panjang kyk printerx kasir itu,, gmn set sintax agar pada saat datax sudah berakhir printer berhenti sendiri..???
Untuk mencetak nota struk sy biasanya full coding om, ini basic printahnya :
Private Sub cmdTesCetak_Click() Dim nFeed As Integer Open "LPT1:" For Output As #1 Print #1, "tesss cetak" Print #1, Tab(10); "tesss cetak" Print #1, Chr$(&H1B); "a"; Chr$(1); 'rata tengah Print #1, "tesss cetak" Print #1, Tab(10); "tesss cetak" Print #1, Chr$(&H1B); "3"; Chr$(20); ' mengatur jarak baris Print #1, Chr$(&H1B); "a"; Chr$(0); 'balik ke rata kiri Print #1, "tesss cetak" Print #1, Tab(10); "tesss cetak" 'gulung kertas For nFeed = 1 To 6 Print #1, Chr$(&HA); Next nFeed Close #1 End SubKode diatas dg asumsi menggunkan port LPT 1
Untuk referensi lebih lanjut langsung kesini aja om.
wah g pake active report dong om…(: cos kmrn tmnq ada yg bisa atur lewat reportx, tapi pake fast report n delphi..:)
Coba link ini om.
makasih om,,semoga barokah ilmux.
Amin
Asslamualikum.
Mas, klo VB6 6 pemakaian tanda bermasalah apa ya?.
saya coba begini
Private Sub Command1_Click()
If Text1.Text < Text2.Text Then
MsgBox " ”
End If
End Sub
hasil untuk percobaan
text1 tanda text2 keterangan
2 < 4 Benar
22 < 4 Salah
11 < 5 salah
22 < 44 benar
tanda adalah yang ditampilakn di msgbix. apa mungkin pada textboxnya ada setingan formatnya?. saya pake number, general sama saja. tapi klo di codenya saya tambah jadi begini
Private Sub Command1_Click()
If Text1.Text + 100000 < Text2.Text + 100000 Then
MsgBox " ”
End If
End Sub
hasilnya bener.
text1 tanda text2 keterangan
2 4 benar
11 > 5 benar
22 < 44 benar.
satu lagi, untk nyimpen data decimal pada mysql gimana ya, haslnya diblatkan mulu
saya dah nyoba dengan format Format(Text2.Text, "#,##") dan Format(Text2.Text, "#.##")
tapi ketika masuk ke mysql klo 5.5 jadi 6, kalo 5.4 jadi 5. kolom tabel juga sudah saya ganti pake desimal. int ga bisa.
mohon pencerahannya.
terimakasih
coba dikonversi dulu nilainya, contoh menggunakan fungsi Val :
uya mas, ternyata cm kurang val, terus yang mysql itu, kmrn donlot buku manualnya disitus resminya, ternya kl decimal harus ditulis juga berapa angka dibelakang koma.
syukron mas.
Oke om berarti case closed ya
om kapan tutuor ke tiganya nich tentang sub report
tunggu aja om
Mohon pencerahan saya membuat laporan absensi berdasar sebuah kreteria tanggal, dan kebetulan udh banyak karyawan yg absen pd hari tersebut tapi koq yang tampil cuma satu data, yaitu data yng paling atas gimana solusinya
Private Sub Detail_Format()
If cont.State = adStateOpen Then cont.Close
cont.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & App.Path & “\PANIN.mdb;Persist Security Info=False”
cont.Open
Rec1.CursorLocation = adUseClient
Rec1.CursorType = adOpenStatic
Rec1.LockType = adLockPessimistic
Rec1.ActiveConnection = cont
sql = “SELECT ABSEN_MSK.NIK, Karyawan.Nm_karyawan, DEVISI.nama, Jabatan.nama_jabatan, ABSEN_MSK.TGL_ABSEN ,ABSEN_MSK.TGL_ABSEN, ABSEN_MSK.JAM_MASUK, ABSEN_MSK.KET, ABSEN_MSK.terlambat, ABSEN_MSK.ijin, ABSEN_MSK.masuk, ABSEN_MSK.alfa, ABSEN_MSK.lambat, ABSEN_MSK.tgs_kantor, ABSEN_MSK.sakit” & _
” FROM DEVISI INNER JOIN (Jabatan INNER JOIN (ABSEN_MSK INNER JOIN Karyawan ON ABSEN_MSK.NIK = Karyawan.nik) ON Jabatan.Kd_jabatan = Karyawan.Kd_jabatan) ON DEVISI.Kode = Karyawan.kode” & _
” Where ABSEN_MSK.TGL_ABSEN =’” & FLapHarian.cb.Text & “‘”
Rec1.Open (sql)
If Not Rec1.EOF Then
Field2.Text = Val(Field2.Text) + 1
Field3.Text = Rec1!NIK
Field5.Text = Rec1!tgl_absen
Field4.Text = Rec1!nM_KARYAWAN
Field6.Text = Rec1!masuk
Field7.Text = Rec1!LAMBAT
Field8.Text = Rec1!sakit
Field9.Text = Rec1!ijin
Field10.Text = Rec1!Alfa
Else
MsgBox “Pilih tanggal yang akan di cetak”
Unload Me
End If
End Sub
Mohon Pencerahan
Kenapa enggak dicoba seperti contoh diatas om, jadi ngirim querynya dari aplikasi jangan langsung di event Detail_Format
om minta tlng ,kalo caranya cetak data dari data grid ke active report gmana? mhon bantuannya.,
Udah mencoba artikel sy yg disini belum.
Mas kalo membuat Total di baris paling bawah gmn caranya ya?
Coba link ini om.