Tag: VB

HTML report dengan VB

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

Advertisements

VB lagi VB lagi

Untuk sementara, rewriting Zaitun Time Series module di tunda. Cause ada request bikin aplikasi data entry, dan lagi2 pake vb6 (vb jadul).

Udah lumayan lupa sih ama bahasa vb. But ga papa dicoba lagi.
Sebenarnya gak suka ama style bahasa vb. terlalu ribet. banyak keyword.
Apalagi vb6, bahasa yang menurutku kacau. oop gak, terstruktur jg gak. tau deh bahasa apa. Dan banyak yang gak konsisten gt.
Makanya aq milih bahasa yang turunannya C spt C++, C#, Java, PHP.
lebih enak lah. konsisten. siip.

Yang paling kuingat adalah statement lucu buat penanganan error di vb6:
On Error Go To Hell
Kalau error ya ke laut aja lah. hehe.

But. g papa tetep dikerjain aja lah:
Ini aq kutip aja sebagian source code nya. itung2 buat nginget2 bahasa nya vb6:

Public Function Simpan() As String
On Error GoTo Hell
simpan = True

rsBatch.Open "batch", strCon, adOpenStatic, adLockOptimistic
rsBatch.AddNew

rsBatch.Fields("prov") = batch.txtProvinsi.Text
rsBatch.Fields("kab") = batch.txtKabupaten.Text
rsBatch.Fields("kec") = batch.txtKecamatan.Text
rsBatch.Fields("desa") = batch.txtDesa.Text

rsBatch.Update
rsBatch.Close

Exit Function

Hell:
simpan = False
If Err.Number = -2147467259 Then
    MsgBox "Sudah ada data dengan primary key sama"
Else: MsgBox "Error: " &amp; Err.Number &amp; " " &amp; Err.Description
End If
End Function

Ini critanya buka koneksi database, tabel tertentu, trus ngeadd recordnya habis itu di simpen. gitu aja.
Kalo error ke laut aja. 😛