Gambar 1. Contoh Laporan Model Hierarki |
Kita akan membuat sebuah laporan yang berbentuk hierarchical/hierarikal dengan memanfaatkan data report di vb 6. Disini saya menggunakan MySQL sebagai databasenya. Nah, sebelum kita membuatnya, akan lebih baik jika kita mengerti apa itu Hierarki/Hierarcichal , Memahami Data Shaping, Contoh Database, Membuat Koneksi, Merancang Data Report
Apa itu Hierarki /Hierarcichal ?
Menurut wikipedia (https://id.wikipedia.org/wiki/Model_hierarkis), Model database Hierarki merupakan model data yang dimana data tersebut diatur dengan struktur data tree. Struktur ini dapat mewakili informasi menggunakan hubungan child/parent: setiap parent dapat memiliki banyak child, tetapi setiap child hanya boleh memiliki satu parent (yang dikenal juga dengan hubungan 1-ke-banyak). Seluruh atribut dari record yang ditentukan telah diatur dengan tipe entitas.
Sumber: Wikipedia |
Memahami Data Shaping
Data Shaping/Pembentukan Data berarti membangun hubungan hierarkis antara dua atau lebih entitas logis dalam sebuah kueri. Hierarki dapat dilihat dalam hubungan parent-child relationship antara sebuah record dari sebuah recordset dan satu satu atau lebih record dari recordset lain.Dalam hubungan Parent-Child Recordset, Parent Recordset terdiri atas Child Recordset. Contoh Relasi Hierarki atau Hierarichal relationship adalah pembelian dan
Berikut contoh pemakaian shape :
SHAPE {SELECT no_nota,tgl_nota from penjualan where tgl_nota BETWEEN '" & Format(DTtgldari.Value, "YYYY-mm-dd") & "' and '" & Format(DTtglsampai.Value, "YYYY-mm-dd") & "'} " _
& "APPEND ({SELECT a.id_trx, a.kdbarang, b.nmbarang, a.jumlah, a.satuan, a.subtotal from temp_barang a, barang b where a.kdbarang =b.kdbarang} " _
& "AS detil " _
& "RELATE no_nota TO id_trx)
Menyiapkan Tabel untuk Report di Database
Berikut contoh struktur minimal tabel penjualan, tabel detil penjualan dan tabel barang yang saya gunakan untuk merancang laporan data report.Nama tabel: Penjualan alias penjualan
Name Type
no_nota varchar (12) primary key
tgl_nota date
Nama tabel: Detil Penjualan alias detil_penjualan
Name Type
no_nota varchar (12) foreign key
kdbarang varchar (10) foreign key
jumlah int (10)
satuan varchar (30)
subtotal int(10)
Nama tabel : Barang alias barang
Name Type
kdbarang varchar (10) primary key
nmbarang varchar (50)
harga_jual int (10)
Membuat Koneksi Ke MYSQL
Untuk dapat membuat laporan hierarkis atau yang biasa disebut data shaping maka kita perlu melakukan setting koneksi dengan menambahkan PROVIDER=MSDataShape;Data PROVIDER=MSDASQL pada file koneksi.Namun sebelumya kita perlu memastikan apakah koneksi driver sudah sukses atau belum tes koneksi ODBC
Set konekdb = New ADODB.Connection
konekdb.CursorLocation = adUseClient
'#3.53 =Versi myODBC yang diinstall
konekdb.ConnectionString = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;driver={MySQL ODBC 5.3 ANSI Driver};SERVER=localhost;DATABASE=apotik;UID=root;PWD=123456;PORT=3306;OPTION=3"
konekdb.CursorLocation = adUseClient
'#3.53 =Versi myODBC yang diinstall
konekdb.ConnectionString = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;driver={MySQL ODBC 5.3 ANSI Driver};SERVER=localhost;DATABASE=apotik;UID=root;PWD=123456;PORT=3306;OPTION=3"
Note:
Untuk pengisian optional
driver =sesuaiakan nama driver yang anda punyai
database =sesuaikan dengan nama
PWD =optional jika ada password bisa diisi namun jika tidak ada kosongkan saja
Melakukan Koding
Set konekdb = New ADODB.Connection
konekdb.CursorLocation = adUseClient
'#3.53 =Versi myODBC yang diinstall
konekdb.ConnectionString = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;driver={MySQL ODBC 5.3 ANSI Driver};SERVER=localhost;DATABASE=apotik;UID=root;PWD=123456;PORT=3306;OPTION=3"
Set Rs = konekdb.Execute("SHAPE {SELECT no_nota,tgl_nota from penjualan where tgl_nota BETWEEN '" & Format(DTtgldari.Value, "YYYY-mm-dd") & "' and '" & Format(DTtglsampai.Value, "YYYY-mm-dd") & "'} " _
& "APPEND ({SELECT a.id_trx, a.kdbarang, b.nmbarang, a.jumlah, a.satuan, a.subtotal from temp_barang a, barang b where a.kdbarang =b.kdbarang} " _
& "AS detil " _
& "RELATE no_nota TO id_trx)")
If Rs.BOF Then
MsgBox "Tidak Terjadi Pembelian di periode Yang dipilih", vbInformation, "info"
Else
Call Tampillaporan
rptjualgolongan.Show 1
End If
If Rs.BOF Then
MsgBox "Data Tidak Tersedia.", vbInformation + vbOKOnly, "informasi"
Else
With rptjualgolongan
Set .DataSource = Nothing
.DataMember = ""
Set .DataSource = Rs
.Sections("Section4").Controls("lbltgldari"). _
Caption = Format(DTtgldari.Value, "dd-mm-YYYY")
.Sections("Section4").Controls("lbltglsampai"). _
Caption = Format(DTtglsampai, "dd-mm-YYYY")
.LeftMargin = 100
.RightMargin = 100
.WindowState = 2
End With
End If
'#3.53 =Versi myODBC yang diinstall
konekdb.ConnectionString = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;driver={MySQL ODBC 5.3 ANSI Driver};SERVER=localhost;DATABASE=apotik;UID=root;PWD=123456;PORT=3306;OPTION=3"
Set Rs = konekdb.Execute("SHAPE {SELECT no_nota,tgl_nota from penjualan where tgl_nota BETWEEN '" & Format(DTtgldari.Value, "YYYY-mm-dd") & "' and '" & Format(DTtglsampai.Value, "YYYY-mm-dd") & "'} " _
& "APPEND ({SELECT a.id_trx, a.kdbarang, b.nmbarang, a.jumlah, a.satuan, a.subtotal from temp_barang a, barang b where a.kdbarang =b.kdbarang} " _
& "AS detil " _
& "RELATE no_nota TO id_trx)")
If Rs.BOF Then
MsgBox "Tidak Terjadi Pembelian di periode Yang dipilih", vbInformation, "info"
Else
Call Tampillaporan
rptjualgolongan.Show 1
End If
If Rs.BOF Then
MsgBox "Data Tidak Tersedia.", vbInformation + vbOKOnly, "informasi"
Else
With rptjualgolongan
Set .DataSource = Nothing
.DataMember = ""
Set .DataSource = Rs
.Sections("Section4").Controls("lbltgldari"). _
Caption = Format(DTtgldari.Value, "dd-mm-YYYY")
.Sections("Section4").Controls("lbltglsampai"). _
Caption = Format(DTtglsampai, "dd-mm-YYYY")
.LeftMargin = 100
.RightMargin = 100
.WindowState = 2
End With
End If
Merancang Laporan di Data Report
Klik kanan pada project >pilih add> pilih data report.
Pada awalnya struktur laporan di data report hanya terdiri report header, page header, detail, page fooetr, report footer.
Sehingga untuk membuat sebuah laporan berbentuk hierarkis maka kita melakukan penambahan insert group header/footer dengan cara klik kanan pada data report kemudian pilih insert group hedaer/footer.
Masukkan 2 (dua) RptTextbox pada Page Footer serta 5 (lima ) RptTextbox pada Detail. Isi data source untuk masing -masing RptTextbox sesuaikan dengan field yang ada. Kusus untuk bagian Detail isi juga bagian Data Member dalam hal ini isi data member detil.
Sumber :
http://www.vbforums.com/showthread.php?12881-Creating-a-Hierarchical-Data-Report-WITHOUT-using-a-DataEnvironment
0 Comments