Tutorial - Grouping Data Report dengan Coding

Baca Juga

Artikel ini saya peroleh dari http://support.microsoft.com/kb/289793, kemudian saya praktekkan dan akhirnya berhasil, hehehe. Selanjutnya sedikit saya modifikasi agar user dapat memilih grouping berdasarkan field yang dipilih.
Sebagai contoh saya menyiapkan sebuah tabel dengan Microsoft Access dengan susunan field sebagai berikut :
1. Nama
2. Umur
3. Pekerjaan
4. Kota Asal

Selanjutnya buka Visual Basic 6.0
Buka standard EXE Project pada Visual Basic 6.0
Tambahkan command button dan combobox


Klik menu Project, klik Add DataReport. Apabila Add Datareport tidak ada dalam menu Project, Tambahkan melalui tab Designers yang terletak dalam menu Project >> Component.

Buka DataReport1, Apabila Report Header/Footer (Section4) ada didalamnya, hapus dengan cara klik kanan report Kemudian hilangkan tanda contreng pada "Show Report Header/Footer”.



Klik kanan dan pilih Insert Group Header/Footer. sebuah section baru, section4, telah ditambahkan dalam report.


Tambahkan 5 buah RptLabel dan satu buah RptTextBox kedalam section4, Tambahkan 4 buah RptTextBox kedalam Detail Section dan susun seperti gambar dibawah ini :



Sekarang kita mulai Codingnya :

'Deklarasi component
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim rs1 As New ADODB.Recordset

'FORM LOAD
Private Sub Form_Load()

'Membuka koneksi database

cn.Open "Provider=MSDATASHAPE; Data Provider=Microsoft.JET.OLEDB.4.0;" +  _
"Data Source=" +  App.Path +  "\Data1.mdb"

'Menambahkan field pada combo secara manual
Combo1.Clear
Combo1.AddItem "Pekerjaan"
Combo1.AddItem "Umur"
Combo1.AddItem "Kota_asal"

Command1.Caption = "Show Report"

End Sub


'Koneksi Report
Sub groupCommand(groups As String)
On Error Resume Next
rs.Close

'Menyiapkan koneksi record group ke dalam report
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = " SHAPE {SELECT nama,umur,pekerjaan,kota_asal FROM `pekerjaan`} AS Command1 COMPUTE Command1 BY '" & groups & "'"
.Execute
End With

With rs
.ActiveConnection = cn
.CursorLocation = adUseClient
.Open cmd
End With
Set rs1 = rs(0).Value

End Sub


'Menampilkan Report
Sub showReport(groups As String)
On Error Resume Next
Dim q As Integer
Dim intCtrl As Integer
Dim x As Integer
Dim z As Integer
x = 0
q = 0
z = 0

groupCommand groups

With DataReport1
.Hide
Set .DataSource = rs
.DataMember = ""
With .Sections("section4").Controls

If TypeOf .Item(1) Is RptLabel Then .Item(1).Caption = Replace(groups, "_", " ") + " :"
If TypeOf .Item(3) Is RptLabel Then .Item(3).Caption = "Nama"
If TypeOf .Item(4) Is RptLabel Then .Item(4).Caption = "Umur"
If TypeOf .Item(5) Is RptLabel Then .Item(5).Caption = "Pekerjaan"
If TypeOf .Item(6) Is RptLabel Then .Item(6).Caption = "Kota Asal"
'if TypeOf .Item(x) Is RptLabel Then .Item(x).Caption = "Kota Asal", index “tanda x dalam kurung setelah item, harus anda sesuaikan dengan cara trial and error, karena bisa saja index “tanda x dalam kurung” tidak ada jadi harus diganti dengan angka yang lain


For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = ""
.Item(intCtrl).DataField = groups
End If
Next

End With

q = 0
With .Sections("Section1").Controls
For intCtrl = 1 To .Count
If TypeOf .Item(intCtrl) Is RptTextBox Then
.Item(intCtrl).DataMember = "Command1"
.Item(intCtrl).DataField = rs1(z).Name
z = z + 1
End If



Next intCtrl
End With
.WindowState = vbMaximized
.Refresh

.Show
End With

End Sub

'Menampilkan Report
Private Sub Command1_Click()
showReport Combo1.Text
End Sub


Simak, Salin dan Tempel code diatas ini kedalam form Anda.
Good Luck :)

Berikut kurang lebih tampilan akhirnya (dengan group by ‘Pekerjaan’):



Untuk Source codenya dapat Anda lihat diposting sebelumnya.

Untuk Link download yang sudah saya perbaiki dapat dilihat pada halaman DOWNLOAD, walaupun baru sedikit semoga bisa bermanfaat,untuk cara download silakan lihat DI SINI, Terima kasih

7 Tanggapan

gan klo pakai 2 tabel gimana?
contoh tabel penjualan dan tabel detil_penjualan
mohon pencerahannya gan

coba diquery dulu mas, kalau databasenya access, kl mysql mungkin dimodif dulu syntaxnya sedikit.

contoh :

...

With cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = " SHAPE {SELECT penjualan.namasupplier,detailpenjualan.tanggal,detailpenjualan.kodesupplier,detailpenjualan.jumlah FROM penjualan,detailpenjualan where penjualan.kodesupplier=detailpenjualan.kodesupplier} AS Command1 COMPUTE Command1 BY '" + groups + "'"

.execute
end with

...

brai,.,.,

gw mau mnta tolong nhe,.,
lho bisa jelasin gw cranya mmbuat nomor urut pda data report ga.,. ??

klau tau, lho tolong bantuin gw ya ,.,

@xxx : maaf saya ga' bisa mas, apalagi kalau di grouping pasti lompat-lompat, hehe.., saya juga belum ketemu caranya.

Mungkin mas pake tabel bantu saja, jadi datareport menampilkan data dari tabel bantu tersebut, sehingga lebih feksibel.

Insert semua data yang akan ditampilkan ke tabel bantu, termasuk bila menggunakan no. urut, grouping dsb., tampilkan ke datareport, jika data report sudah tertutup kosongkan kembali tabel bantu tersebut.

Trm kasih.

waduh ga ngarti nih mas.?
soalnya baru blajar nih

mas bisa minta Project'nya ga...??
kalo bisa..

@ xxx : hehe... maaf saya juga belum ada projectnya. ditunggu ya kalau sdh saya buat segera saya upload. Trm kasih.

ok mas...
ditunggu ya !!

Trima kasih N salam kenal


Formulir Kontak

Nama

Email *

Pesan *

Pengikut