Sebuah aplikasi database, pasti tidak terlepas dari tool untuk menampilkan laporan atau report. Akhir-akhir ini aku lebih memilih untuk membuat report yang berbasis HTML. Kenapa begitu, karena lebih praktis (tanpa tambahan aplikasi spt crystal report) dan lebih fleksibel mengatur tampilan (html sangat mudah untuk diatur sesuai selera, bisa pake css, dll).
Yang dibutuhkan untuk membuat html report cuma control Web Browser aja untuk menampilkan reportnya. Di setiap aplikasi pemrograman, baik C#, VB.NET, VB6, de es be udah ada fasilitas web browser. Kita tinggal memparsing kode2 html kita (yang biasanya kita simoan di variabel bertioe string) ke control web browser tersebut. hasilnya web browser akan menampilkan report yang kita mau.
Berikut ini ada contoh HTML report dengan bahasa VB6. (maklum lagi develop aplikasi pake vbjadul)
Dim html As String
html = "<html><head>"
html = html & "<style type='text/css'><!--body {font-family: tahoma, helvetica, arial, sans-serif; font-size: 12px;}" & _
" h3 {font-size: 16px;} h2 {font-size: 18px; margin: 1em 0.5em 0.5em 0.5em; }" & _
" table { border: 1px solid #000; border-collapse:collapse; font: normal 11px 'Lucida Grande',Verdana,sans-serif; }" & _
" td { padding: 2px 2px 2px 2px; border-bottom: 1px solid #000; border-right: 1px solid #000; } " & _
" --></style>"
html = html & "<title>Laporan</title></head><body>"
sql = "SELECT kab.kab, kab.nama , Count(batch.nks) AS jumlah " & _
"FROM kab LEFT JOIN batch ON (kab.kab = batch.kab) AND (kab.prop = batch.prov) " & _
"GROUP BY kab.kab, kab.nama ORDER BY kab.kab;"
sqlA = "SELECT kab.kab, kab.nama , Count(bs.bs) AS jumlah " & _
"FROM kab LEFT JOIN bs ON (kab.kab = bs.kab) AND (kab.prop = bs.prop) " & _
"GROUP BY kab.kab, kab.nama ORDER BY kab.kab;"
html = html & "<h2>Jumlah dan Persentase</h2>"
html = html & "<table width='95%'><tr><td width=25% align='center'><b>Kode Kabupaten</b></td><td width=55% align='center'><b>Nama Kabupaten</b></td><td width=30% align='center'><b>Jumlah NKS</b></td><td width=30% align='center'><b>Jumlah</b></td><td width=30% align='center'><b>Persentase (%)</b></td></tr>"
Set strRs = strCon.Execute(sql)
Set strRsA = strCon.Execute(sqlA)
jumlah = 0
jumlaha = 0
Do While Not strRs.EOF
html = html & "<tr><td>" & strRs.Fields("kab") & "</td><td>" & strRs.Fields("nama") & "</td><td align='right'>" & strRsA.Fields("jumlah") & "</td><td align='right'>" & strRs.Fields("jumlah") & "</td><td align='right'>" & Format((Val(strRs.Fields("jumlah")) * 100) / Val(strRsA.Fields("jumlah")), "0.00") & "</td></tr>"
jumlah = jumlah + Val(strRs.Fields("jumlah"))
jumlaha = jumlaha + Val(strRsA.Fields("jumlah"))
strRs.MoveNext
strRsA.MoveNext
Loop
htm = html & "</table></body></html>"
webBrowser.Document.Clear
webBrowser.Document.Open
webBrowser.Document.Write (html)
webBrowser.Document.Close